resolved conflicts for merge of 45cb1b0a to jb-dev-plus-aosp

Change-Id: I50fb4331347a1921a5a75eb91a216c7e0499e2d6
diff --git a/apps/Development/AndroidManifest.xml b/apps/Development/AndroidManifest.xml
index ffee933..f2bf60c 100644
--- a/apps/Development/AndroidManifest.xml
+++ b/apps/Development/AndroidManifest.xml
@@ -63,8 +63,6 @@
         </activity>
         <activity android:name="PackageSummary" android:label="Package Summary">
         </activity>
-        <activity android:name="ShowActivity" android:label="Activity">
-        </activity>
         <activity android:name="AppPicker"
                 android:theme="@android:style/Theme.Dialog">
         </activity>
@@ -103,12 +101,6 @@
                 <category android:name="android.intent.category.TEST" />
             </intent-filter>
         </activity>
-        <activity android:name="DevelopmentSettings" android:label="Development Settings" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.TEST" />
-            </intent-filter>
-        </activity>
 
         <activity android:name="InstrumentationList" android:label="Instrumentation">
             <intent-filter>
diff --git a/apps/Development/res/layout/accounts_tester.xml b/apps/Development/res/layout/accounts_tester.xml
index 28f1b4e..3bf408e 100644
--- a/apps/Development/res/layout/accounts_tester.xml
+++ b/apps/Development/res/layout/accounts_tester.xml
@@ -20,95 +20,56 @@
         android:layout_height="match_parent">
 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:orientation="vertical"
+            android:orientation="horizontal"
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
 
-        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:orientation="horizontal"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+        <TextView android:id="@+id/accounts_tester_account_types_spinner_label"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:text="@string/accounts_tester_select_account_type"/>
 
-            <TextView android:id="@+id/accounts_tester_account_types_spinner_label"
-                      android:layout_width="wrap_content"
-                      android:layout_height="wrap_content"
-                      android:text="@string/accounts_tester_select_account_type"/>
+        <Spinner android:id="@+id/accounts_tester_account_types_spinner"
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content"/>
+    </LinearLayout>
 
-            <Spinner android:id="@+id/accounts_tester_account_types_spinner"
-                     android:layout_width="wrap_content"
-                     android:layout_height="wrap_content"/>
-        </LinearLayout>
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+        <Button
+                android:id="@+id/accounts_tester_get_accounts_by_type"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/accounts_tester_get_accounts_by_type"/>
 
-        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                android:orientation="vertical"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+        <Button
+                android:id="@+id/accounts_tester_get_all_accounts"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/accounts_tester_get_all_accounts"/>
 
-            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                    android:orientation="horizontal"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-                <Button
-                        android:id="@+id/accounts_tester_get_accounts_by_type"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/accounts_tester_get_accounts_by_type"/>
+        <Button android:id="@+id/accounts_tester_get_auth_token_by_type_and_feature"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/accounts_tester_get_auth_token_by_type_and_feature"/>
 
-                <Button
-                        android:id="@+id/accounts_tester_get_all_accounts"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/accounts_tester_get_all_accounts"/>
+    </LinearLayout>
 
-                <Button android:id="@+id/accounts_tester_add_account"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/accounts_tester_add_account"/>
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+        <Button android:id="@+id/accounts_tester_add_account"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/accounts_tester_add_account"/>
 
-                <Button android:id="@+id/accounts_tester_edit_properties"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/accounts_tester_edit_properties"/>
-
-                <Button android:id="@+id/accounts_tester_get_auth_token_by_type_and_feature"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:text="@string/accounts_tester_get_auth_token_by_type_and_feature"/>
-
-            </LinearLayout>
-
-            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                    android:orientation="horizontal"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                <TextView android:id="@+id/accounts_tester_desiredFeatures"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          android:text="@string/accounts_tester_desired_features_label"/>
-
-                <EditText android:id="@+id/accounts_tester_desired_features"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          android:minEms="15"/>
-            </LinearLayout>
-
-            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                    android:orientation="horizontal"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content">
-
-                <TextView android:id="@+id/accounts_tester_desiredFeatures"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          android:text="@string/accounts_tester_desired_authtokentype_label"/>
-
-                <EditText android:id="@+id/accounts_tester_desired_authtokentype"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          android:minEms="15"/>
-            </LinearLayout>
-        </LinearLayout>
+        <Button android:id="@+id/accounts_tester_edit_properties"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/accounts_tester_edit_properties"/>
     </LinearLayout>
 
     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -116,9 +77,34 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content">
 
-        <ListView android:id="@+id/accounts_tester_accounts_list"
-                  android:layout_width="match_parent" android:layout_height="match_parent"/>
+        <TextView android:id="@+id/accounts_tester_desiredFeatures"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:text="@string/accounts_tester_desired_features_label"/>
 
+        <EditText android:id="@+id/accounts_tester_desired_features"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:minEms="15"/>
     </LinearLayout>
 
+    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+        <TextView android:id="@+id/accounts_tester_desiredFeatures"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:text="@string/accounts_tester_desired_authtokentype_label"/>
+
+        <EditText android:id="@+id/accounts_tester_desired_authtokentype"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  android:minEms="15"/>
+    </LinearLayout>
+
+    <ListView android:id="@+id/accounts_tester_accounts_list"
+              android:layout_width="match_parent" android:layout_height="match_parent"/>
+
 </LinearLayout>
diff --git a/apps/Development/src/com/android/development/AccountsTester.java b/apps/Development/src/com/android/development/AccountsTester.java
index b4155e7..09f4995 100644
--- a/apps/Development/src/com/android/development/AccountsTester.java
+++ b/apps/Development/src/com/android/development/AccountsTester.java
@@ -16,21 +16,39 @@
 
 package com.android.development;
 
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AccountManagerCallback;
+import android.accounts.AccountManagerFuture;
+import android.accounts.AuthenticatorDescription;
+import android.accounts.AuthenticatorException;
+import android.accounts.OnAccountsUpdateListener;
+import android.accounts.OperationCanceledException;
 import android.app.Activity;
-import android.app.Dialog;
 import android.app.AlertDialog;
-import android.content.*;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
-import android.accounts.*;
 import android.os.Bundle;
-import android.os.Parcelable;
 import android.os.Handler;
-import android.view.*;
-import android.widget.*;
-import android.widget.ArrayAdapter;
-import android.util.Log;
+import android.os.Parcelable;
 import android.text.TextUtils;
+import android.util.Log;
+import android.view.ContextMenu;
+import android.view.LayoutInflater;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.Spinner;
+import android.widget.TextView;
 
 import java.io.IOException;
 import java.util.ArrayList;
diff --git a/apps/Development/src/com/android/development/AppPicker.java b/apps/Development/src/com/android/development/AppPicker.java
deleted file mode 100644
index 28040c2..0000000
--- a/apps/Development/src/com/android/development/AppPicker.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/* //device/java/android/android/app/ResolveListActivity.java
-**
-** Copyright 2006, 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.android.development;
-
-import com.android.development.PackageBrowser.MyPackageInfo;
-
-import android.app.ActivityManagerNative;
-import android.app.ListActivity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.os.Bundle;
-import android.os.RemoteException;
-import android.provider.Settings;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.LayoutInflater;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.ListView;
-import android.widget.TextView;
-
-import java.text.Collator;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-public class AppPicker extends ListActivity
-{
-    @Override
-    protected void onCreate(Bundle icicle)
-    {
-        super.onCreate(icicle);
-
-        mAdapter = new AppListAdapter(this);
-        if (mAdapter.getCount() <= 0) {
-            finish();
-        } else {
-            setListAdapter(mAdapter);
-        }
-    }
-    
-    @Override
-    protected void onResume()
-    {
-        super.onResume();
-    }
-
-    @Override
-    protected void onStop()
-    {
-        super.onStop();
-    }
-
-    @Override
-    protected void onListItemClick(ListView l, View v, int position, long id)
-    {
-        MyApplicationInfo app = mAdapter.itemForPosition(position);
-        Intent intent = new Intent();
-        if (app.info != null) intent.setAction(app.info.packageName);
-        setResult(RESULT_OK, intent);
-        
-        try {
-            boolean waitForDebugger = Settings.System.getInt(
-                    getContentResolver(), Settings.System.WAIT_FOR_DEBUGGER, 0) != 0;
-            ActivityManagerNative.getDefault().setDebugApp(
-                    app.info != null ? app.info.packageName : null, waitForDebugger, true);
-        } catch (RemoteException ex) {
-        }
-        
-        finish();
-    }
-
-    class MyApplicationInfo {
-        ApplicationInfo info;
-        String label;
-    }
-    
-    public class AppListAdapter extends ArrayAdapter<MyApplicationInfo> {
-        private List<MyApplicationInfo> mPackageInfoList = new ArrayList<MyApplicationInfo>();
-
-        public AppListAdapter(Context context) {
-            super(context, R.layout.package_list_item);
-            List<ApplicationInfo> pkgs = context.getPackageManager().getInstalledApplications(0);
-            for (int i=0; i<pkgs.size(); i++) {
-                MyApplicationInfo info = new MyApplicationInfo();
-                info.info = pkgs.get(i);
-                info.label = info.info.loadLabel(getPackageManager()).toString();
-                mPackageInfoList.add(info);
-            }
-            Collections.sort(mPackageInfoList, sDisplayNameComparator);
-            MyApplicationInfo info = new MyApplicationInfo();
-            info.label = "(none)";
-            mPackageInfoList.add(0, info);
-            setSource(mPackageInfoList);
-        }
-    
-        @Override
-        public void bindView(View view, MyApplicationInfo info) {
-            ImageView icon = (ImageView)view.findViewById(R.id.icon);
-            TextView name = (TextView)view.findViewById(R.id.name);
-            TextView description = (TextView)view.findViewById(R.id.description);
-            name.setText(info.label);
-            if (info.info != null) {
-                icon.setImageDrawable(info.info.loadIcon(getPackageManager()));
-                description.setText(info.info.packageName);
-            } else {
-                icon.setImageDrawable(null);
-                description.setText("");
-            }
-        }
-    }
-
-    private final static Comparator<MyApplicationInfo> sDisplayNameComparator
-            = new Comparator<MyApplicationInfo>() {
-        public final int
-        compare(MyApplicationInfo a, MyApplicationInfo b) {
-            return collator.compare(a.label, b.label);
-        }
-
-        private final Collator   collator = Collator.getInstance();
-    };
-
-    private AppListAdapter mAdapter;
-}
-
diff --git a/apps/Development/src/com/android/development/DevelopmentSettings.java b/apps/Development/src/com/android/development/DevelopmentSettings.java
deleted file mode 100644
index f907a14..0000000
--- a/apps/Development/src/com/android/development/DevelopmentSettings.java
+++ /dev/null
@@ -1,628 +0,0 @@
-/* //device/apps/Settings/src/com/android/settings/Keyguard.java
-**
-** Copyright 2006, 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.android.development;
-
-import android.app.Activity;
-import android.app.ActivityManagerNative;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.Parcel;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.os.ServiceManagerNative;
-import android.os.StrictMode;
-import android.os.SystemProperties;
-import android.provider.Settings;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.IWindowManager;
-import android.view.View;
-import android.widget.AdapterView.OnItemSelectedListener;
-import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.CompoundButton;
-import android.widget.Spinner;
-import android.widget.Toast;
-
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.util.Map;
-
-public class DevelopmentSettings extends Activity {
-    private static final String TAG = "DevelopmentSettings";
-    private static final int DEBUG_APP_REQUEST = 1;
-
-    private Button mDebugAppButton;
-    private CheckBox mWaitForDebuggerCB;
-    private CheckBox mAlwaysFinishCB;
-    private Spinner mPointerLocationSpinner;
-    private Spinner mStrictModeVisualSpinner;
-    private CheckBox mShowLoadCB;
-    private CheckBox mShowCpuCB;
-    private CheckBox mEnableGLCB;
-    private CheckBox mShowUpdatesCB;
-    private CheckBox mShowBackgroundCB;
-    private CheckBox mShowSleepCB;
-    private CheckBox mShowXmppCB;
-    private CheckBox mWindowOrientationListenerLogCB;
-    private CheckBox mCompatibilityModeCB;
-    private Spinner mMaxProcsSpinner;
-    private Spinner mWindowAnimationScaleSpinner;
-    private Spinner mTransitionAnimationScaleSpinner;
-    private Spinner mFontHintingSpinner;
-
-    private String mDebugApp;
-    private boolean mWaitForDebugger;
-    private boolean mAlwaysFinish;
-    private int mPointerLocation;
-    private int mWindowOrientationListenerLog;
-    private int mProcessLimit;
-    private boolean mShowSleep;
-    private boolean mShowXmpp;
-    private boolean mCompatibilityMode;
-    private AnimationScaleSelectedListener mWindowAnimationScale
-            = new AnimationScaleSelectedListener(0);
-    private AnimationScaleSelectedListener mTransitionAnimationScale
-            = new AnimationScaleSelectedListener(1);
-    private SharedPreferences mSharedPrefs;
-    private IWindowManager mWindowManager;
-
-    private static final boolean FONT_HINTING_ENABLED = true;
-    private static final String  FONT_HINTING_FILE = "/data/misc/font-hack";
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        setContentView(R.layout.development_settings);
-
-        mDebugAppButton = (Button)findViewById(R.id.debug_app);
-        mDebugAppButton.setOnClickListener(mDebugAppClicked);
-        mWaitForDebuggerCB = (CheckBox)findViewById(R.id.wait_for_debugger);
-        mWaitForDebuggerCB.setOnClickListener(mWaitForDebuggerClicked);
-        mAlwaysFinishCB = (CheckBox)findViewById(R.id.always_finish);
-        mAlwaysFinishCB.setOnClickListener(mAlwaysFinishClicked);
-        mPointerLocationSpinner = (Spinner)findViewById(R.id.pointer_location);
-        mPointerLocationSpinner.setOnItemSelectedListener(mPointerLocationChanged);
-        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
-                this,
-                android.R.layout.simple_spinner_item,
-                new String[] {
-                        "No Pointer Location",
-                        "Pointer Location" });
-        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        mPointerLocationSpinner.setAdapter(adapter);
-        mStrictModeVisualSpinner = (Spinner)findViewById(R.id.strictmode_visual);
-        adapter = new ArrayAdapter<String>(
-                this,
-                android.R.layout.simple_spinner_item,
-                new String[] {
-                        "StrictMode visual indicator: build variant default",
-                        "StrictMode visual indicator: on",
-                        "StrictMode visual indicator: off" });
-        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        mStrictModeVisualSpinner.setAdapter(adapter);
-        mStrictModeVisualSpinner.setOnItemSelectedListener(mStrictModeVisualChanged);
-        mShowLoadCB = (CheckBox)findViewById(R.id.show_load);
-        mShowLoadCB.setOnClickListener(mShowLoadClicked);
-        mShowCpuCB = (CheckBox)findViewById(R.id.show_cpu);
-        mShowCpuCB.setOnCheckedChangeListener(new SurfaceFlingerClicker(1000));
-        mEnableGLCB = (CheckBox)findViewById(R.id.enable_gl);
-        mEnableGLCB.getLayoutParams().height = 0; // doesn't do anything
-        mEnableGLCB.setOnCheckedChangeListener(new SurfaceFlingerClicker(1004));
-        mShowUpdatesCB = (CheckBox)findViewById(R.id.show_updates);
-        mShowUpdatesCB.setOnCheckedChangeListener(new SurfaceFlingerClicker(1002));
-        mShowBackgroundCB = (CheckBox)findViewById(R.id.show_background);
-        mShowBackgroundCB.setOnCheckedChangeListener(new SurfaceFlingerClicker(1003));
-        mShowSleepCB = (CheckBox)findViewById(R.id.show_sleep);
-        mShowSleepCB.setOnClickListener(mShowSleepClicked);
-        mShowXmppCB = (CheckBox)findViewById(R.id.show_xmpp);
-        mShowXmppCB.setOnClickListener(mShowXmppClicked);
-        mWindowOrientationListenerLogCB = (CheckBox)findViewById(R.id.window_orientation_listener_log);
-        mWindowOrientationListenerLogCB.setOnClickListener(mWindowOrientationListenerLogClicked);
-        mCompatibilityModeCB = (CheckBox)findViewById(R.id.compatibility_mode);
-        mCompatibilityModeCB.setOnClickListener(mCompatibilityModeClicked);
-        mMaxProcsSpinner = (Spinner)findViewById(R.id.max_procs);
-        mMaxProcsSpinner.setOnItemSelectedListener(mMaxProcsChanged);
-        adapter = new ArrayAdapter<String>(
-                this,
-                android.R.layout.simple_spinner_item,
-                new String[] {
-                        "No App Process Limit",
-                        "Max 1 App Process",
-                        "Max 2 App Processes",
-                        "Max 3 App Processes",
-                        "Max 4 App Processes" });
-        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        mMaxProcsSpinner.setAdapter(adapter);
-        mWindowAnimationScaleSpinner = setupAnimationSpinner(
-                R.id.window_animation_scale, mWindowAnimationScale, "Window");
-        mTransitionAnimationScaleSpinner = setupAnimationSpinner(
-                R.id.transition_animation_scale, mTransitionAnimationScale, "Transition");
-
-        if (FONT_HINTING_ENABLED) {
-            mFontHintingSpinner = (Spinner)findViewById(R.id.font_hinting);
-            mFontHintingSpinner.setOnItemSelectedListener(mFontHintingChanged);
-            adapter = new ArrayAdapter<String>(
-                    this,
-                    android.R.layout.simple_spinner_item,
-                    new String[] {
-                            "Light Hinting",
-                            "Medium Hinting" });
-            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-            mFontHintingSpinner.setAdapter(adapter);
-        }
-        mSharedPrefs = getSharedPreferences("global", 0);
-        mWindowManager = IWindowManager.Stub.asInterface(ServiceManager.getService("window"));
-    }
-
-    Spinner setupAnimationSpinner(int resid,
-            AnimationScaleSelectedListener listener, String name) {
-        Spinner spinner = (Spinner)findViewById(resid);
-        spinner.setOnItemSelectedListener(listener);
-        ArrayAdapter adapter = new ArrayAdapter<String>(
-                this,
-                android.R.layout.simple_spinner_item,
-                new String[] {
-                        name + " Animation Scale 1x",
-                        name + " Animation Scale 2x",
-                        name + " Animation Scale 5x",
-                        name + " Animation Scale 10x",
-                        name + " Animation Off" });
-        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
-        spinner.setAdapter(adapter);
-        listener.spinner = spinner;
-        return spinner;
-    }
-    
-    @Override
-    public void onResume() {
-        super.onResume();
-        updateDebugOptions();
-        updateFinishOptions();
-        updatePointerLocationOptions();
-        updateStrictModeVisualOptions();
-        updateProcessLimitOptions();
-        updateSharedOptions();
-        updateFlingerOptions();
-        updateSleepOptions();
-        updateXmppOptions();
-        updateWindowOrientationListenerLogOptions();
-        updateCompatibilityOptions();
-
-        try {
-            FileInputStream  in = new FileInputStream( FONT_HINTING_FILE );
-            int    mode = in.read() - 48;
-            if (mode >= 0 && mode < 3)
-                mFontHintingSpinner.setSelection(mode);
-            in.close();
-        } catch (Exception e) {
-        }
-
-        mWindowAnimationScale.load();
-        mTransitionAnimationScale.load();
-    }
-
-    private void writeDebugOptions() {
-        try {
-            ActivityManagerNative.getDefault().setDebugApp(
-                mDebugApp, mWaitForDebugger, true);
-        } catch (RemoteException ex) {
-        }
-    }
-
-    private void updateDebugOptions() {
-        mDebugApp = Settings.System.getString(
-            getContentResolver(), Settings.System.DEBUG_APP);
-        mWaitForDebugger = Settings.System.getInt(
-            getContentResolver(), Settings.System.WAIT_FOR_DEBUGGER, 0) != 0;
-
-        mDebugAppButton.setText(
-            mDebugApp == null || mDebugApp.length() == 0 ? "(none)" : mDebugApp);
-        mWaitForDebuggerCB.setChecked(mWaitForDebugger);
-    }
-
-    private void writeFinishOptions() {
-        try {
-            ActivityManagerNative.getDefault().setAlwaysFinish(mAlwaysFinish);
-        } catch (RemoteException ex) {
-        }
-    }
-
-    private void updateFinishOptions() {
-        mAlwaysFinish = Settings.System.getInt(
-            getContentResolver(), Settings.System.ALWAYS_FINISH_ACTIVITIES, 0) != 0;
-        mAlwaysFinishCB.setChecked(mAlwaysFinish);
-    }
-
-    private void writePointerLocationOptions() {
-        Settings.System.putInt(getContentResolver(),
-                Settings.System.POINTER_LOCATION, mPointerLocation);
-    }
-
-    private void updatePointerLocationOptions() {
-        mPointerLocation = Settings.System.getInt(getContentResolver(),
-                Settings.System.POINTER_LOCATION, 0);
-        mPointerLocationSpinner.setSelection(mPointerLocation);
-    }
-
-    private void writeWindowOrientationListenerLogOptions() {
-        Settings.System.putInt(getContentResolver(),
-                Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, mWindowOrientationListenerLog);
-    }
-
-    private void updateWindowOrientationListenerLogOptions() {
-        mWindowOrientationListenerLog = Settings.System.getInt(getContentResolver(),
-                Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, 0);
-        mWindowOrientationListenerLogCB.setChecked(mWindowOrientationListenerLog != 0);
-    }
-
-    // Returns the current state of the system property that controls
-    // strictmode flashes.  One of:
-    //    0: not explicitly set one way or another
-    //    1: on
-    //    2: off
-    // These are the indices in the Spinner's ArrayAdapter.
-    private int currentStrictModeActiveIndex() {
-        if (TextUtils.isEmpty(SystemProperties.get(StrictMode.VISUAL_PROPERTY))) {
-            return 0;
-        }
-        boolean enabled = SystemProperties.getBoolean(StrictMode.VISUAL_PROPERTY, false);
-        return enabled ? 1 : 2;
-    }
-
-    private void updateStrictModeVisualOptions() {
-        mStrictModeVisualSpinner.setSelection(currentStrictModeActiveIndex());
-    }
-
-    private void writeProcessLimitOptions() {
-        try {
-            ActivityManagerNative.getDefault().setProcessLimit(mProcessLimit);
-        } catch (RemoteException ex) {
-        }
-    }
-
-    private void updateProcessLimitOptions() {
-        try {
-            mProcessLimit = ActivityManagerNative.getDefault().getProcessLimit();
-            mMaxProcsSpinner.setSelection(mProcessLimit);
-        } catch (RemoteException ex) {
-        }
-    }
-
-    private void updateSharedOptions() {
-        mShowLoadCB.setChecked(Settings.System.getInt(getContentResolver(),
-                Settings.System.SHOW_PROCESSES, 0) != 0);
-    }
-
-    private void writeCompatibilityOptions() {
-        Settings.System.putInt(getContentResolver(),
-                Settings.System.COMPATIBILITY_MODE, mCompatibilityMode ? 0 : 1);
-    }
-
-    private void updateCompatibilityOptions() {
-        mCompatibilityMode = Settings.System.getInt(
-            getContentResolver(), Settings.System.COMPATIBILITY_MODE, 1) == 0;
-        mCompatibilityModeCB.setChecked(mCompatibilityMode);
-    }
-
-    private void updateFlingerOptions() {
-        // magic communication with surface flinger.
-        try {
-            IBinder flinger = ServiceManager.getService("SurfaceFlinger");
-            if (flinger != null) {
-                Parcel data = Parcel.obtain();
-                Parcel reply = Parcel.obtain();
-                data.writeInterfaceToken("android.ui.ISurfaceComposer");
-                flinger.transact(1010, data, reply, 0);
-                int v;
-                v = reply.readInt();
-                mShowCpuCB.setChecked(v != 0);
-                v = reply.readInt();
-                mEnableGLCB.setChecked(v != 0);
-                v = reply.readInt();
-                mShowUpdatesCB.setChecked(v != 0);
-                v = reply.readInt();
-                mShowBackgroundCB.setChecked(v != 0);
-                reply.recycle();
-                data.recycle();
-            }
-        } catch (RemoteException ex) {
-        }
-    }
-
-    private void writeSleepOptions() {
-        try {
-            FileOutputStream os = new FileOutputStream(
-                "/sys/devices/platform/gpio_sleep_debug/enable", true);
-            if(mShowSleep)
-                os.write(new byte[] { (byte)'1' });
-            else
-                os.write(new byte[] { (byte)'0' });
-            os.close();
-        } catch (Exception e) {
-            Log.w(TAG, "Failed setting gpio_sleep_debug");
-        }
-    }
-
-    private void updateSleepOptions() {
-        try {
-            FileInputStream is = new FileInputStream(
-                "/sys/devices/platform/gpio_sleep_debug/enable");
-            int character = is.read();
-            mShowSleep = character == '1';
-            is.close();
-        } catch (Exception e) {
-            Log.w(TAG, "Failed reading gpio_sleep_debug");
-            mShowSleep = false;
-        }
-        mShowSleepCB.setChecked(mShowSleep);
-    }
-
-    private void writeXmppOptions() {
-        Settings.System.setShowGTalkServiceStatus(getContentResolver(), mShowXmpp);
-    }
-
-    private void updateXmppOptions() {
-        mShowXmpp = Settings.System.getShowGTalkServiceStatus(getContentResolver());
-        mShowXmppCB.setChecked(mShowXmpp);
-    }
-
-    private View.OnClickListener mDebugAppClicked = new View.OnClickListener() {
-        public void onClick(View v) {
-            Intent intent = new Intent(Intent.ACTION_MAIN);
-            intent.setClass(DevelopmentSettings.this, AppPicker.class);
-            startActivityForResult(intent, DEBUG_APP_REQUEST);
-        }
-    };
-
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
-        if (requestCode == DEBUG_APP_REQUEST && resultCode == RESULT_OK) {
-            mDebugApp = intent.getAction();
-            writeDebugOptions();
-            updateDebugOptions();
-        }
-    }
-
-    private View.OnClickListener mWaitForDebuggerClicked =
-            new View.OnClickListener() {
-        public void onClick(View v) {
-            mWaitForDebugger = ((CheckBox)v).isChecked();
-            writeDebugOptions();
-            updateDebugOptions();
-        }
-    };
-
-    private View.OnClickListener mAlwaysFinishClicked =
-            new View.OnClickListener() {
-        public void onClick(View v) {
-            mAlwaysFinish = ((CheckBox)v).isChecked();
-            writeFinishOptions();
-            updateFinishOptions();
-        }
-    };
-
-    private View.OnClickListener mCompatibilityModeClicked =
-        new View.OnClickListener() {
-    public void onClick(View v) {
-        mCompatibilityMode = ((CheckBox)v).isChecked();
-        writeCompatibilityOptions();
-        updateCompatibilityOptions();
-        Toast toast = Toast.makeText(DevelopmentSettings.this,
-                R.string.development_settings_compatibility_mode_toast,
-                Toast.LENGTH_LONG);
-        toast.show();
-    }
-};
-
-    private View.OnClickListener mShowLoadClicked = new View.OnClickListener() {
-        public void onClick(View v) {
-            boolean value = ((CheckBox)v).isChecked();
-            Settings.System.putInt(getContentResolver(),
-                    Settings.System.SHOW_PROCESSES, value ? 1 : 0);
-            Intent service = (new Intent())
-                    .setClassName("android", "com.android.server.LoadAverageService");
-            if (value) {
-                startService(service);
-            } else {
-                stopService(service);
-            }
-        }
-    };
-
-    private class SurfaceFlingerClicker implements CheckBox.OnCheckedChangeListener {
-        SurfaceFlingerClicker(int code) {
-            mCode = code;
-        }
-
-        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-            try {
-                IBinder flinger = ServiceManager.getService("SurfaceFlinger");
-                if (flinger != null) {
-                    Parcel data = Parcel.obtain();
-                    data.writeInterfaceToken("android.ui.ISurfaceComposer");
-                    data.writeInt(isChecked ? 1 : 0);
-                    flinger.transact(mCode, data, null, 0);
-                    data.recycle();
-
-                    updateFlingerOptions();
-                }
-            } catch (RemoteException ex) {
-            }
-        }
-
-        final int mCode;
-    }
-
-    private View.OnClickListener mShowSleepClicked =
-            new View.OnClickListener() {
-        public void onClick(View v) {
-            mShowSleep = ((CheckBox)v).isChecked();
-            writeSleepOptions();
-            updateSleepOptions();
-        }
-    };
-
-    private View.OnClickListener mShowXmppClicked = new View.OnClickListener() {
-        public void onClick(View v) {
-            mShowXmpp = ((CheckBox)v).isChecked();
-            // can streamline these calls, but keeping consistent with the
-            // other development settings code.
-            writeXmppOptions();
-            updateXmppOptions();
-        }
-    };
-
-    private View.OnClickListener mWindowOrientationListenerLogClicked = new View.OnClickListener() {
-        public void onClick(View v) {
-            mWindowOrientationListenerLog = ((CheckBox)v).isChecked() ? 1 : 0;
-            writeWindowOrientationListenerLogOptions();
-        }
-    };
-
-    private Spinner.OnItemSelectedListener mPointerLocationChanged
-                                    = new Spinner.OnItemSelectedListener() {
-        public void onItemSelected(android.widget.AdapterView av, View v,
-                                    int position, long id) {
-            mPointerLocation = position;
-            writePointerLocationOptions();
-        }
-
-        public void onNothingSelected(android.widget.AdapterView av) {
-        }
-    };
-
-    private Spinner.OnItemSelectedListener mStrictModeVisualChanged
-                                    = new Spinner.OnItemSelectedListener() {
-        public void onItemSelected(android.widget.AdapterView av, View v,
-                                    int position, long id) {
-            if (position == currentStrictModeActiveIndex()) {
-                // at the existing position, so don't show a Toast.
-                return;
-            }
-
-            try {
-                switch (position) {
-                    case 0:  // default
-                        mWindowManager.setStrictModeVisualIndicatorPreference("");
-                        break;
-                    case 1:  // on
-                        mWindowManager.setStrictModeVisualIndicatorPreference("1");
-                        break;
-                    case 2:  // off
-                        mWindowManager.setStrictModeVisualIndicatorPreference("0");
-                        break;
-                }
-            } catch (RemoteException e) {
-                Log.w(TAG, "Error calling setStrictModeVisualIndicatorPreference", e);
-            }
-
-            Toast.makeText(
-                    DevelopmentSettings.this,
-                    "Setting changed; will take effect per-app next launch, or on reboot",
-                    Toast.LENGTH_LONG).show();
-        }
-
-        public void onNothingSelected(android.widget.AdapterView av) {
-        }
-    };
-
-    private Spinner.OnItemSelectedListener mMaxProcsChanged
-                                    = new Spinner.OnItemSelectedListener() {
-        public void onItemSelected(android.widget.AdapterView av, View v,
-                                    int position, long id) {
-            mProcessLimit = position;
-            writeProcessLimitOptions();
-        }
-
-        public void onNothingSelected(android.widget.AdapterView av) {
-        }
-    };
-
-    private Spinner.OnItemSelectedListener mFontHintingChanged
-                                    = new Spinner.OnItemSelectedListener() {
-        public void onItemSelected(android.widget.AdapterView  av, View v,
-                                    int position, long id) {
-            try {
-                FileOutputStream  out = new FileOutputStream( FONT_HINTING_FILE );
-                out.write(position+48);
-                out.close();
-            } catch (Exception e) {
-                Log.w(TAG, "Failed to write font hinting settings to /data/misc/font-hack");
-            }
-        }
-
-        public void onNothingSelected(android.widget.AdapterView av) {
-        }
-    };
-
-    class AnimationScaleSelectedListener implements OnItemSelectedListener {
-        final int which;
-        float scale;
-        Spinner spinner;
-        
-        AnimationScaleSelectedListener(int _which) {
-            which = _which;
-        }
-        
-        void load() {
-            try {
-                scale = mWindowManager.getAnimationScale(which);
-
-                if (scale > 0.1f && scale < 2.0f) {
-                    spinner.setSelection(0);
-                } else if (scale >= 2.0f && scale < 3.0f) {
-                    spinner.setSelection(1);
-                } else if (scale >= 4.9f && scale < 6.0f) {
-                    spinner.setSelection(2);
-                }  else if (scale >= 9.9f && scale < 11.0f) {
-                    spinner.setSelection(3);
-                } else {
-                    spinner.setSelection(4);
-                }
-            } catch (RemoteException e) {
-            }
-        }
-        
-        public void onItemSelected(android.widget.AdapterView av, View v,
-                int position, long id) {
-            switch (position) {
-                case 0: scale = 1.0f; break;
-                case 1: scale = 2.0f; break;
-                case 2: scale = 5.0f; break;
-                case 3: scale = 10.0f; break;
-                case 4: scale = 0.0f; break;
-                default: break;
-            }
-
-            try {
-                mWindowManager.setAnimationScale(which, scale);
-            } catch (RemoteException e) {
-            }
-        }
-
-        public void onNothingSelected(android.widget.AdapterView av) {
-        }
-    }
-}
diff --git a/apps/WidgetPreview/src/com/android/widgetpreview/WidgetPreviewActivity.java b/apps/WidgetPreview/src/com/android/widgetpreview/WidgetPreviewActivity.java
index 1026ba8..b119512 100644
--- a/apps/WidgetPreview/src/com/android/widgetpreview/WidgetPreviewActivity.java
+++ b/apps/WidgetPreview/src/com/android/widgetpreview/WidgetPreviewActivity.java
@@ -79,7 +79,7 @@
         if (retainedObj instanceof AppWidgetProviderInfo) {
             AppWidgetProviderInfo info = (AppWidgetProviderInfo) retainedObj;
             int id = mAppWidgetHost.allocateAppWidgetId();
-            AppWidgetManager.getInstance(getBaseContext()).bindAppWidgetId(id, info.provider);
+            AppWidgetManager.getInstance(getBaseContext()).bindAppWidgetIdIfAllowed(id, info.provider);
             setAppWidget(id);
         } else {
             startChooseActivity();
diff --git a/build/Android.mk b/build/Android.mk
index c65ca9c..9672427 100644
--- a/build/Android.mk
+++ b/build/Android.mk
@@ -116,6 +116,6 @@
 $(eval _psm_packaging_target :=)
 endef
 
-ANDROID_SUPPORT_LIBRARIES := android-support-v4 android-support-v13
+ANDROID_SUPPORT_LIBRARIES := android-support-v4 android-support-v7-gridlayout android-support-v13
 
 $(foreach lib, $(ANDROID_SUPPORT_LIBRARIES), $(eval $(call _package_sdk_library,$(lib))))
diff --git a/build/sdk-android-armeabi-v7a.atree b/build/sdk-android-armeabi-v7a.atree
index ddf2f65..603f146 100644
--- a/build/sdk-android-armeabi-v7a.atree
+++ b/build/sdk-android-armeabi-v7a.atree
@@ -18,4 +18,4 @@
 prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu-armv7 system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
 
 # version files for the SDK updater, from development.git
-development/sdk/images_armeabi-v7a_source.properties   system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
+${HOST_OUT}/development/sdk/images_armeabi-v7a_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk-android-armeabi.atree b/build/sdk-android-armeabi.atree
index 2badd85..f641ee3 100644
--- a/build/sdk-android-armeabi.atree
+++ b/build/sdk-android-armeabi.atree
@@ -17,4 +17,4 @@
 prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
 
 # version files for the SDK updater, from development.git
-development/sdk/images_armeabi_source.properties   system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
+${HOST_OUT}/development/sdk/images_armeabi_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk-android-x86.atree b/build/sdk-android-x86.atree
index 8425600..9adad9b 100644
--- a/build/sdk-android-x86.atree
+++ b/build/sdk-android-x86.atree
@@ -17,4 +17,4 @@
 prebuilts/qemu-kernel/${TARGET_ARCH}/kernel-qemu system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/kernel-qemu
 
 # version files for the SDK updater, from development.git
-development/sdk/images_x86_source.properties   system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
+${HOST_OUT}/development/sdk/images_x86_source.properties system-images/${PLATFORM_NAME}/${TARGET_CPU_ABI}/source.properties
diff --git a/build/sdk.atree b/build/sdk.atree
index b7c402b..e0cf7f0 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -52,7 +52,7 @@
 framework/dx.jar                              platform-tools/lib/dx.jar
 
 # Framework include for Renderscript
-frameworks/base/libs/rs/scriptc               platform-tools/renderscript/include
+frameworks/rs/scriptc                         platform-tools/renderscript/include
 external/clang/lib/Headers                    platform-tools/renderscript/clang-include
 external/clang/LICENSE.TXT                    platform-tools/renderscript/clang-include/LICENSE.TXT
 
@@ -76,15 +76,16 @@
 obj/framework.aidl platforms/${PLATFORM_NAME}/framework.aidl
 
 # emulator skins from sdk.git
-development/tools/emulator/skins/QVGA      platforms/${PLATFORM_NAME}/skins/QVGA
-development/tools/emulator/skins/WQVGA432  platforms/${PLATFORM_NAME}/skins/WQVGA432
-development/tools/emulator/skins/WQVGA400  platforms/${PLATFORM_NAME}/skins/WQVGA400
-development/tools/emulator/skins/HVGA      platforms/${PLATFORM_NAME}/skins/HVGA
-development/tools/emulator/skins/WVGA800   platforms/${PLATFORM_NAME}/skins/WVGA800
-development/tools/emulator/skins/WVGA854   platforms/${PLATFORM_NAME}/skins/WVGA854
-development/tools/emulator/skins/WSVGA     platforms/${PLATFORM_NAME}/skins/WSVGA
-development/tools/emulator/skins/WXGA720   platforms/${PLATFORM_NAME}/skins/WXGA720
-development/tools/emulator/skins/WXGA800   platforms/${PLATFORM_NAME}/skins/WXGA800
+development/tools/emulator/skins/QVGA          platforms/${PLATFORM_NAME}/skins/QVGA
+development/tools/emulator/skins/WQVGA432      platforms/${PLATFORM_NAME}/skins/WQVGA432
+development/tools/emulator/skins/WQVGA400      platforms/${PLATFORM_NAME}/skins/WQVGA400
+development/tools/emulator/skins/HVGA          platforms/${PLATFORM_NAME}/skins/HVGA
+development/tools/emulator/skins/WVGA800       platforms/${PLATFORM_NAME}/skins/WVGA800
+development/tools/emulator/skins/WVGA854       platforms/${PLATFORM_NAME}/skins/WVGA854
+development/tools/emulator/skins/WSVGA         platforms/${PLATFORM_NAME}/skins/WSVGA
+development/tools/emulator/skins/WXGA720       platforms/${PLATFORM_NAME}/skins/WXGA720
+development/tools/emulator/skins/WXGA800       platforms/${PLATFORM_NAME}/skins/WXGA800
+development/tools/emulator/skins/WXGA800-7in   platforms/${PLATFORM_NAME}/skins/WXGA800-7in
 
 # Platform SDK properties
 development/sdk/sdk.properties               platforms/${PLATFORM_NAME}/sdk.properties
@@ -99,6 +100,7 @@
 development/tools/templates/ic_launcher_ldpi.png            platforms/${PLATFORM_NAME}/templates/ic_launcher_ldpi.png
 development/tools/templates/ic_launcher_mdpi.png            platforms/${PLATFORM_NAME}/templates/ic_launcher_mdpi.png
 development/tools/templates/ic_launcher_hdpi.png            platforms/${PLATFORM_NAME}/templates/ic_launcher_hdpi.png
+development/tools/templates/ic_launcher_xhdpi.png           platforms/${PLATFORM_NAME}/templates/ic_launcher_xhdpi.png
 
 # Eclipse Editors support
 framework/layoutlib.jar       platforms/${PLATFORM_NAME}/data/layoutlib.jar
@@ -175,7 +177,6 @@
 development/samples/LunarLander                samples/${PLATFORM_NAME}/LunarLander
 development/samples/MultiResolution            samples/${PLATFORM_NAME}/MultiResolution
 development/samples/NotePad                    samples/${PLATFORM_NAME}/NotePad
-development/samples/NFCDemo                    samples/${PLATFORM_NAME}/NFCDemo
 development/samples/RandomMusicPlayer          samples/${PLATFORM_NAME}/RandomMusicPlayer
 development/samples/SpellChecker/SampleSpellCheckerService samples/${PLATFORM_NAME}/SpellChecker/SampleSpellCheckerService
 development/samples/SpellChecker/HelloSpellChecker samples/${PLATFORM_NAME}/SpellChecker/HelloSpellChecker
@@ -201,12 +202,7 @@
 development/samples/Wiktionary                 samples/${PLATFORM_NAME}/Wiktionary
 development/samples/WiktionarySimple           samples/${PLATFORM_NAME}/WiktionarySimple
 development/samples/XmlAdapters                samples/${PLATFORM_NAME}/XmlAdapters
-development/samples/RenderScript/Balls         samples/${PLATFORM_NAME}/RenderScript/Balls
-development/samples/RenderScript/Fountain      samples/${PLATFORM_NAME}/RenderScript/Fountain
-development/samples/RenderScript/FountainFbo   samples/${PLATFORM_NAME}/RenderScript/FountainFbo
 development/samples/RenderScript/HelloCompute  samples/${PLATFORM_NAME}/RenderScript/HelloCompute
-development/samples/RenderScript/HelloWorld    samples/${PLATFORM_NAME}/RenderScript/HelloWorld
-development/samples/RenderScript/MiscSamples   samples/${PLATFORM_NAME}/RenderScript/MiscSamples
 
 # NOTICE files are copied by build/core/Makefile from sdk.git
 sdk/files/sdk_files_NOTICE.txt samples/${PLATFORM_NAME}/NOTICE.txt
@@ -225,15 +221,24 @@
 development/sdk/support_source.properties                                                         extras/android/support/source.properties
 development/sdk/support_README.txt                                                                extras/android/support/README.txt
 sdk/files/sdk_files_NOTICE.txt                                                                    extras/android/support/NOTICE.txt
+
 ${OUT_DIR}/target/common/obj/PACKAGING/android-support-v4_intermediates/android-support-v4.jar    extras/android/support/v4/android-support-v4.jar
 frameworks/support/v4                                                                             extras/android/support/v4/src
 development/samples/Support4Demos                                                                 extras/android/support/samples/Support4Demos
+development/samples/SupportAppNavigation                                                          extras/android/support/samples/SupportAppNavigation
 
 ${OUT_DIR}/target/common/obj/PACKAGING/android-support-v13_intermediates/android-support-v13.jar  extras/android/support/v13/android-support-v13.jar
 frameworks/support/v13                                                                            extras/android/support/v13/src
 development/samples/Support13Demos                                                                extras/android/support/samples/Support13Demos
 
-development/sdk/prebuilt/v7                                                                       extras/android/support/v7
+frameworks/support/v7/gridlayout/README.txt                                                       extras/android/support/v7/gridlayout/README.txt
+frameworks/support/v7/gridlayout/.project                                                         extras/android/support/v7/gridlayout/.project
+frameworks/support/v7/gridlayout/.classpath                                                       extras/android/support/v7/gridlayout/.classpath
+frameworks/support/v7/gridlayout/AndroidManifest.xml                                              extras/android/support/v7/gridlayout/AndroidManifest.xml
+frameworks/support/v7/gridlayout/project.properties                                               extras/android/support/v7/gridlayout/project.properties
+frameworks/support/v7/gridlayout/res                                                              extras/android/support/v7/gridlayout/res
+frameworks/support/v7/gridlayout/readme                                                           extras/android/support/v7/gridlayout/src/.readme
+${OUT_DIR}/target/common/obj/PACKAGING/android-support-v7-gridlayout_intermediates/android-support-v7-gridlayout.jar    extras/android/support/v7/gridlayout/libs/android-support-v7-gridlayout.jar
 
 ##############################################################################
 # Tests Component
diff --git a/build/sdk_only_whitelist.mk b/build/sdk_only_whitelist.mk
index ed27792..0ffff04 100644
--- a/build/sdk_only_whitelist.mk
+++ b/build/sdk_only_whitelist.mk
@@ -46,11 +46,13 @@
 	external/zlib \
 	frameworks/base \
 	frameworks/compile \
+	frameworks/native \
 	system/core/adb \
 	system/core/fastboot \
 	system/core/libcutils \
 	system/core/liblog \
-	system/core/libzipfile
+	system/core/libzipfile \
+	system/extras/ext4_utils
 
 # -----
 # Whitelist of platform specific projects that DO require Java
diff --git a/cmds/monkey/src/com/android/commands/monkey/Monkey.java b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
index 3aa2fc1..fcf0893 100644
--- a/cmds/monkey/src/com/android/commands/monkey/Monkey.java
+++ b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
@@ -32,7 +32,9 @@
 import android.os.StrictMode;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.os.UserId;
 import android.view.IWindowManager;
+import android.view.Surface;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -203,6 +205,8 @@
 
     long mDroppedFlipEvents = 0;
 
+    long mDroppedRotationEvents = 0;
+
     /** The delay between user actions. This is for the scripted monkey. **/
     long mProfileWaitTime = 5000;
 
@@ -607,7 +611,15 @@
         }
 
         mNetworkMonitor.start();
-        int crashedAtCycle = runMonkeyCycles();
+        int crashedAtCycle = 0;
+        try {
+            crashedAtCycle = runMonkeyCycles();
+        } finally {
+            // Release the rotation lock if it's still held and restore the
+            // original orientation.
+            new MonkeyRotationEvent(Surface.ROTATION_0, false).injectEvent(
+                mWm, mAm, mVerbose);
+        }
         mNetworkMonitor.stop();
 
         synchronized (this) {
@@ -661,7 +673,9 @@
             System.out.print(" trackballs=");
             System.out.print(mDroppedTrackballEvents);
             System.out.print(" flips=");
-            System.out.println(mDroppedFlipEvents);
+            System.out.print(mDroppedFlipEvents);
+            System.out.print(" rotations=");
+            System.out.println(mDroppedRotationEvents);
         }
 
         // report network stats
@@ -725,6 +739,9 @@
                 } else if (opt.equals("--pct-trackball")) {
                     int i = MonkeySourceRandom.FACTOR_TRACKBALL;
                     mFactors[i] = -nextOptionLong("trackball events percentage");
+                } else if (opt.equals("--pct-rotation")) {
+                    int i = MonkeySourceRandom.FACTOR_ROTATION;
+                    mFactors[i] = -nextOptionLong("screen rotation events percentage");
                 } else if (opt.equals("--pct-syskeys")) {
                     int i = MonkeySourceRandom.FACTOR_SYSOPS;
                     mFactors[i] = -nextOptionLong("system (key) operations percentage");
@@ -935,7 +952,8 @@
                 if (category.length() > 0) {
                     intent.addCategory(category);
                 }
-                List<ResolveInfo> mainApps = mPm.queryIntentActivities(intent, null, 0);
+                List<ResolveInfo> mainApps = mPm.queryIntentActivities(intent, null, 0,
+                        UserId.myUserId());
                 if (mainApps == null || mainApps.size() == 0) {
                     System.err.println("// Warning: no activities found for category " + category);
                     continue;
@@ -1080,6 +1098,8 @@
                         mDroppedPointerEvents++;
                     } else if (ev instanceof MonkeyFlipEvent) {
                         mDroppedFlipEvents++;
+                    } else if (ev instanceof MonkeyRotationEvent) {
+                        mDroppedRotationEvents++;
                     }
                 } else if (injectCode == MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION) {
                     systemCrashed = true;
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java
index 75c3a58..0321752 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyActivityEvent.java
@@ -26,10 +26,10 @@
 /**
  * monkey activity event
  */
-public class MonkeyActivityEvent extends MonkeyEvent {    
-    private ComponentName mApp; 
+public class MonkeyActivityEvent extends MonkeyEvent {
+    private ComponentName mApp;
     long mAlarmTime = 0;
-    
+
     public MonkeyActivityEvent(ComponentName app) {
         super(EVENT_TYPE_ACTIVITY);
         mApp = app;
@@ -44,11 +44,11 @@
     /**
      * @return Intent for the new activity
      */
-    private Intent getEvent() {        
+    private Intent getEvent() {
         Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.addCategory(Intent.CATEGORY_LAUNCHER);
         intent.setComponent(mApp);
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
         return intent;
     }
 
@@ -66,8 +66,8 @@
         }
 
         try {
-            iam.startActivity(null, intent, null, null, 0, null, null, 0,
-                    false, false, null, null, false);
+            iam.startActivity(null, intent, null, null, null, 0,
+                    0, null, null, null);
         } catch (RemoteException e) {
             System.err.println("** Failed talking with activity manager!");
             return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyEvent.java
index 1f703ea..0a06604 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyEvent.java
@@ -27,10 +27,11 @@
     public static final int EVENT_TYPE_KEY = 0;
     public static final int EVENT_TYPE_TOUCH = 1;
     public static final int EVENT_TYPE_TRACKBALL = 2;
-    public static final int EVENT_TYPE_ACTIVITY = 3;
-    public static final int EVENT_TYPE_FLIP = 4; // Keyboard flip
-    public static final int EVENT_TYPE_THROTTLE = 5;
-    public static final int EVENT_TYPE_NOOP = 6;
+    public static final int EVENT_TYPE_ROTATION = 3;  // Screen rotation
+    public static final int EVENT_TYPE_ACTIVITY = 4;
+    public static final int EVENT_TYPE_FLIP = 5; // Keyboard flip
+    public static final int EVENT_TYPE_THROTTLE = 6;
+    public static final int EVENT_TYPE_NOOP = 7;
 
     public static final int INJECT_SUCCESS = 1;
     public static final int INJECT_FAIL = 0;
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyGetAppFrameRateEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyGetAppFrameRateEvent.java
new file mode 100644
index 0000000..77515f2
--- /dev/null
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyGetAppFrameRateEvent.java
@@ -0,0 +1,167 @@
+/*
+ * 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.
+ */
+
+package com.android.commands.monkey;
+
+import android.app.IActivityManager;
+import android.os.Environment;
+import android.util.Log;
+import android.view.IWindowManager;
+
+import java.lang.Process;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
+/**
+ * Events for running a special shell command to capture the frame rate for a given app. To run
+ * this test, the system property viewancestor.profile_rendering must be set to
+ * true to force the currently focused window to render at 60 Hz.
+ */
+public class MonkeyGetAppFrameRateEvent extends MonkeyEvent {
+
+    private String GET_APP_FRAMERATE_TMPL = "dumpsys gfxinfo %s";
+    private String mStatus;
+    private static long sStartTime; // in millisecond
+    private static long sEndTime; // in millisecond
+    private static float sDuration; // in seconds
+    private static String sActivityName = null;
+    private static String sTestCaseName = null;
+    private static int sStartFrameNo;
+    private static int sEndFrameNo;
+
+    private static final String TAG = "MonkeyGetAppFrameRateEvent";
+    private static final String LOG_FILE = new File(Environment.getExternalStorageDirectory(),
+            "avgAppFrameRateOut.txt").getAbsolutePath();
+    private static final Pattern NO_OF_FRAMES_PATTERN =
+            Pattern.compile(".* ([0-9]*) frames rendered");
+
+    public MonkeyGetAppFrameRateEvent(String status, String activityName, String testCaseName) {
+        super(EVENT_TYPE_ACTIVITY);
+        mStatus = status;
+        sActivityName = activityName;
+        sTestCaseName = testCaseName;
+    }
+
+    public MonkeyGetAppFrameRateEvent(String status, String activityName) {
+        super(EVENT_TYPE_ACTIVITY);
+        mStatus = status;
+        sActivityName = activityName;
+    }
+
+    public MonkeyGetAppFrameRateEvent(String status) {
+        super(EVENT_TYPE_ACTIVITY);
+        mStatus = status;
+    }
+
+    // Calculate the average frame rate
+    private float getAverageFrameRate(int totalNumberOfFrame, float duration) {
+        float avgFrameRate = 0;
+        if (duration > 0) {
+            avgFrameRate = (totalNumberOfFrame / duration);
+        }
+        return avgFrameRate;
+    }
+
+    /**
+     * Calculate the frame rate and write the output to a file on the SD card.
+     */
+    private void writeAverageFrameRate() {
+        FileWriter writer = null;
+        float avgFrameRate;
+        int totalNumberOfFrame = 0;
+        try {
+            Log.w(TAG, "file: " +LOG_FILE);
+            writer = new FileWriter(LOG_FILE, true); // true = append
+            totalNumberOfFrame = sEndFrameNo - sStartFrameNo;
+            avgFrameRate = getAverageFrameRate(totalNumberOfFrame, sDuration);
+            writer.write(String.format("%s:%.2f\n", sTestCaseName, avgFrameRate));
+        } catch (IOException e) {
+            Log.w(TAG, "Can't write sdcard log file", e);
+        } finally {
+            try {
+                if (writer != null)
+                    writer.close();
+            } catch (IOException e) {
+                Log.e(TAG, "IOException " + e.toString());
+            }
+        }
+    }
+
+    // Parse the output of the dumpsys shell command call
+    private String getNumberOfFrames(BufferedReader reader) throws IOException {
+        String noOfFrames = null;
+        String line = null;
+        while((line = reader.readLine()) != null) {
+            Matcher m = NO_OF_FRAMES_PATTERN.matcher(line);
+            if (m.matches()) {
+                noOfFrames = m.group(1);
+                break;
+            }
+        }
+        return noOfFrames;
+    }
+
+    @Override
+    public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
+        Process p = null;
+        BufferedReader result = null;
+        String cmd = String.format(GET_APP_FRAMERATE_TMPL, sActivityName);
+        try {
+            p = Runtime.getRuntime().exec(cmd);
+            int status = p.waitFor();
+            if (status != 0) {
+                System.err.println(String.format("// Shell command %s status was %s",
+                        cmd, status));
+            }
+            result = new BufferedReader(new InputStreamReader(p.getInputStream()));
+
+            String output = getNumberOfFrames(result);
+
+            if (output != null) {
+                if ("start".equals(mStatus)) {
+                    sStartFrameNo = Integer.parseInt(output);
+                    sStartTime = System.currentTimeMillis();
+                } else if ("end".equals(mStatus)) {
+                    sEndFrameNo = Integer.parseInt(output);
+                    sEndTime = System.currentTimeMillis();
+                    long diff = sEndTime - sStartTime;
+                    sDuration = (float) (diff / 1000.0);
+                    writeAverageFrameRate();
+                }
+            }
+        } catch (Exception e) {
+            System.err.println("// Exception from " + cmd + ":");
+            System.err.println(e.toString());
+        } finally {
+            try {
+                if (result != null) {
+                    result.close();
+                }
+                if (p != null) {
+                    p.destroy();
+                }
+            } catch (IOException e) {
+                System.err.println(e.toString());
+            }
+        }
+        return MonkeyEvent.INJECT_SUCCESS;
+    }
+}
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
index 455c009..a732968 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
@@ -17,88 +17,78 @@
 package com.android.commands.monkey;
 
 import android.app.IActivityManager;
-import android.os.RemoteException;
+import android.hardware.input.InputManager;
+import android.os.SystemClock;
 import android.view.IWindowManager;
+import android.view.InputDevice;
+import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 /**
  * monkey key event
  */
 public class MonkeyKeyEvent extends MonkeyEvent {
-    private long mDownTime = -1;
-    private int mMetaState = -1;
-    private int mAction = -1;
-    private int mKeyCode = -1;
-    private int mScancode = -1;
-    private int mRepeatCount = -1;
-    private int mDeviceId = -1;
-    private long mEventTime = -1;
+    private int mDeviceId;
+    private long mEventTime;
+    private long mDownTime;
+    private int mAction;
+    private int mKeyCode;
+    private int mScanCode;
+    private int mMetaState;
+    private int mRepeatCount;
 
-    private KeyEvent keyEvent = null;
+    private KeyEvent mKeyEvent;
 
-    public MonkeyKeyEvent(int action, int keycode) {
+    public MonkeyKeyEvent(int action, int keyCode) {
+        this(-1, -1, action, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0);
+    }
+
+    public MonkeyKeyEvent(long downTime, long eventTime, int action,
+            int keyCode, int repeatCount, int metaState,
+            int device, int scanCode) {
         super(EVENT_TYPE_KEY);
+        mDownTime = downTime;
+        mEventTime = eventTime;
         mAction = action;
-        mKeyCode = keycode;
+        mKeyCode = keyCode;
+        mRepeatCount = repeatCount;
+        mMetaState = metaState;
+        mDeviceId = device;
+        mScanCode = scanCode;
     }
 
     public MonkeyKeyEvent(KeyEvent e) {
         super(EVENT_TYPE_KEY);
-        keyEvent = e;
-    }
-
-    public MonkeyKeyEvent(long downTime, long eventTime, int action,
-            int code, int repeat, int metaState,
-            int device, int scancode) {
-        super(EVENT_TYPE_KEY);
-
-        mAction = action;
-        mKeyCode = code;
-        mMetaState = metaState;
-        mScancode = scancode;
-        mRepeatCount = repeat;
-        mDeviceId = device;
-        mDownTime = downTime;
-        mEventTime = eventTime;
+        mKeyEvent = e;
     }
 
     public int getKeyCode() {
-        return mKeyCode;
+        return mKeyEvent != null ? mKeyEvent.getKeyCode() : mKeyCode;
     }
 
     public int getAction() {
-        return mAction;
+        return mKeyEvent != null ? mKeyEvent.getAction() : mAction;
     }
 
     public long getDownTime() {
-        return mDownTime;
+        return mKeyEvent != null ? mKeyEvent.getDownTime() : mDownTime;
     }
 
     public long getEventTime() {
-        return mEventTime;
+        return mKeyEvent != null ? mKeyEvent.getEventTime() : mEventTime;
     }
 
     public void setDownTime(long downTime) {
+        if (mKeyEvent != null) {
+            throw new IllegalStateException("Cannot modify down time of this key event.");
+        }
         mDownTime = downTime;
     }
 
     public void setEventTime(long eventTime) {
-        mEventTime = eventTime;
-    }
-
-    /**
-     * @return the key event
-     */
-    private KeyEvent getEvent() {
-        if (keyEvent == null) {
-            if (mDeviceId < 0) {
-                keyEvent = new KeyEvent(mAction, mKeyCode);
-            } else {
-                // for scripts
-                keyEvent = new KeyEvent(mDownTime, mEventTime, mAction,
-                                        mKeyCode, mRepeatCount, mMetaState, mDeviceId, mScancode);
-            }
+        if (mKeyEvent != null) {
+            throw new IllegalStateException("Cannot modify event time of this key event.");
         }
-        return keyEvent;
+        mEventTime = eventTime;
     }
 
     @Override
@@ -126,15 +116,24 @@
             }
         }
 
-        // inject key event
-        try {
-            if (!iwm.injectKeyEvent(getEvent(), false)) {
-                return MonkeyEvent.INJECT_FAIL;
+        KeyEvent keyEvent = mKeyEvent;
+        if (keyEvent == null) {
+            long eventTime = mEventTime;
+            if (eventTime <= 0) {
+                eventTime = SystemClock.uptimeMillis();
             }
-        } catch (RemoteException ex) {
-            return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
+            long downTime = mDownTime;
+            if (downTime <= 0) {
+                downTime = eventTime;
+            }
+            keyEvent = new KeyEvent(downTime, eventTime, mAction, mKeyCode,
+                    mRepeatCount, mMetaState, mDeviceId, mScanCode,
+                    KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD);
         }
-
+        if (!InputManager.getInstance().injectInputEvent(keyEvent,
+                InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
+            return MonkeyEvent.INJECT_FAIL;
+        }
         return MonkeyEvent.INJECT_SUCCESS;
     }
 }
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyMotionEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyMotionEvent.java
index c59382f..4491cbd 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyMotionEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyMotionEvent.java
@@ -17,7 +17,7 @@
 package com.android.commands.monkey;
 
 import android.app.IActivityManager;
-import android.os.RemoteException;
+import android.hardware.input.InputManager;
 import android.os.SystemClock;
 import android.util.SparseArray;
 import android.view.IWindowManager;
@@ -185,11 +185,10 @@
             System.out.println(msg.toString());
         }
         try {
-            if (!injectMotionEvent(iwm, me)) {
+            if (!InputManager.getInstance().injectInputEvent(me,
+                    InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
                 return MonkeyEvent.INJECT_FAIL;
             }
-        } catch (RemoteException ex) {
-            return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
         } finally {
             me.recycle();
         }
@@ -197,6 +196,4 @@
     }
 
     protected abstract String getTypeLabel();
-    protected abstract boolean injectMotionEvent(IWindowManager iwm, MotionEvent me)
-            throws RemoteException;
 }
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyRotationEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyRotationEvent.java
new file mode 100644
index 0000000..26108ec
--- /dev/null
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyRotationEvent.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 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.
+ */
+
+package com.android.commands.monkey;
+
+import android.app.IActivityManager;
+import android.os.RemoteException;
+import android.view.IWindowManager;
+/**
+ * monkey screen rotation event
+ */
+public class MonkeyRotationEvent extends MonkeyEvent {
+
+    private final int mRotationDegree;
+    private final boolean mPersist;
+
+    /**
+     * Construct a rotation Event.
+     *
+     * @param degree Possible rotation degrees, see constants in
+     * anroid.view.Suface.
+     * @param persist Should we keep the rotation lock after the orientation
+     * change.
+     */
+    public MonkeyRotationEvent(int degree, boolean persist) {
+        super(EVENT_TYPE_ROTATION);
+        mRotationDegree = degree;
+        mPersist = persist;
+    }
+
+    @Override
+    public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) {
+        if (verbose > 0) {
+            System.out.println(":Sending rotation degree=" + mRotationDegree +
+                               ", persist=" + mPersist);
+        }
+
+        // inject rotation event
+        try {
+            iwm.freezeRotation(mRotationDegree);
+            if (!mPersist) {
+                iwm.thawRotation();
+            }
+            return MonkeyEvent.INJECT_SUCCESS;
+        } catch (RemoteException ex) {
+            return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION;
+        }
+    }
+}
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetwork.java b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetwork.java
index c5b25e6..99e7c07 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetwork.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetwork.java
@@ -247,13 +247,17 @@
             // Ok, it wasn't a number, see if we have a
             // keycode name for it
             keyCode = MonkeySourceRandom.getKeyCode(keyName);
-            if (keyCode == -1) {
+            if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
                 // OK, one last ditch effort to find a match.
                 // Build the KEYCODE_STRING from the string
                 // we've been given and see if that key
                 // exists.  This would allow you to do "key
                 // down menu", for example.
                 keyCode = MonkeySourceRandom.getKeyCode("KEYCODE_" + keyName.toUpperCase());
+                if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
+                    // Still unknown
+                    return -1;
+                }
             }
         }
         return keyCode;
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetworkViews.java b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetworkViews.java
index 5d078c2..590f406 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetworkViews.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceNetworkViews.java
@@ -18,49 +18,34 @@
 
 import static com.android.commands.monkey.MonkeySourceNetwork.EARG;
 
-import android.accessibilityservice.IAccessibilityServiceConnection;
-import android.accessibilityservice.IEventListener;
-import android.content.Context;
-import android.content.pm.IPackageManager;
+import android.accessibilityservice.UiTestAutomationBridge;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
 import android.graphics.Rect;
-import android.os.ServiceManager;
 import android.os.RemoteException;
-import android.os.SystemClock;
-import android.util.Log;
-import android.view.accessibility.AccessibilityInteractionClient;
-import android.view.accessibility.AccessibilityNodeInfo;
-import android.view.accessibility.IAccessibilityManager;
+import android.os.ServiceManager;
+import android.os.UserId;
 import android.view.accessibility.AccessibilityEvent;
-
-import dalvik.system.DexClassLoader;
+import android.view.accessibility.AccessibilityNodeInfo;
 
 import com.android.commands.monkey.MonkeySourceNetwork.CommandQueue;
 import com.android.commands.monkey.MonkeySourceNetwork.MonkeyCommand;
 import com.android.commands.monkey.MonkeySourceNetwork.MonkeyCommandReturn;
 
+import dalvik.system.DexClassLoader;
+
 import java.lang.reflect.Field;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.Map;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.ArrayList;
-
+import java.util.Map;
 
 /**
  * Utility class that enables Monkey to perform view introspection when issued Monkey Network
  * Script commands over the network.
  */
 public class MonkeySourceNetworkViews {
-    private static final String TAG = "MonkeyViews";
-
-    private static final int TIMEOUT_REGISTER_EVENT_LISTENER = 2000;
-
-    private static final int NO_ID = -1;
-
-    private static volatile AtomicReference<AccessibilityEvent> sLastAccessibilityEvent
-            = new AtomicReference<AccessibilityEvent>();
-    protected static int sConnectionId;
+    protected static UiTestAutomationBridge sUiTestAutomationBridge;
     private static IPackageManager sPm =
             IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
     private static Map<String, Class<?>> sClassMap = new HashMap<String, Class<?>>();
@@ -100,78 +85,16 @@
         COMMAND_MAP.put("getaccessibilityids", new GetAccessibilityIds());
     }
 
-    private static int getConnection() throws RemoteException {
-        if (sConnectionId != NO_ID) {
-            return sConnectionId;
-        }
-        IEventListener listener = new IEventListener.Stub() {
-            public void setConnection(IAccessibilityServiceConnection connection,
-                    int connectionId) {
-                sConnectionId = connectionId;
-                if (connection != null) {
-                    AccessibilityInteractionClient.getInstance().addConnection(connectionId,
-                            connection);
-                } else {
-                    AccessibilityInteractionClient.getInstance().removeConnection(connectionId);
-                }
-                synchronized (MonkeySourceNetworkViews.class) {
-                    notifyAll();
-                }
-            }
-
-            public void onInterrupt() {}
-
-            public void onAccessibilityEvent(AccessibilityEvent event) {
-                Log.d(TAG, "Accessibility Event");
-                sLastAccessibilityEvent.set(AccessibilityEvent.obtain(event));
-                synchronized (MonkeySourceNetworkViews.class) {
-                    notifyAll();
-                }
-            }
-        };
-
-        IAccessibilityManager manager = IAccessibilityManager.Stub.asInterface(
-                ServiceManager.getService(Context.ACCESSIBILITY_SERVICE));
-
-        final long beginTime = SystemClock.uptimeMillis();
-        synchronized (MonkeySourceNetworkViews.class) {
-            manager.registerEventListener(listener);
-            while (true) {
-                if (sConnectionId != NO_ID) {
-                    return sConnectionId;
-                }
-                final long elapsedTime = (SystemClock.uptimeMillis() - beginTime);
-                final long remainingTime = TIMEOUT_REGISTER_EVENT_LISTENER - elapsedTime;
-                if (remainingTime <= 0) {
-                    if (sConnectionId == NO_ID) {
-                        throw new IllegalStateException("Cound not register IEventListener.");
-                    }
-                    return sConnectionId;
-                }
-                try {
-                    MonkeySourceNetworkViews.class.wait(remainingTime);
-                } catch (InterruptedException ie) {
-                    /* ignore */
-                }
-            }
-        }
-    }
-
     /**
      * Registers the event listener for AccessibilityEvents.
      * Also sets up a communication connection so we can query the
      * accessibility service.
      */
     public static void setup() {
-        try {
-            sConnectionId = getConnection();
-        } catch (RemoteException re) {
-            Log.e(TAG,"Remote Exception encountered when"
-                  + " attempting to connect to Accessibility Service");
-        }
+        sUiTestAutomationBridge = new UiTestAutomationBridge();
+        sUiTestAutomationBridge.connect();
     }
 
-
     /**
      * Get the ID class for the given package.
      * This will cause issues if people reload a package with different
@@ -181,7 +104,7 @@
      * @return The ID class for the given package
      */
     private static Class<?> getIdClass(String packageName, String sourceDir)
-            throws RemoteException, ClassNotFoundException {
+            throws ClassNotFoundException {
         // This kind of reflection is expensive, so let's only do it
         // if we need to
         Class<?> klass = sClassMap.get(packageName);
@@ -217,7 +140,7 @@
         try {
             AccessibilityNodeInfo node = event.getSource();
             String packageName = node.getPackageName().toString();
-            ApplicationInfo appInfo = sPm.getApplicationInfo(packageName, 0);
+            ApplicationInfo appInfo = sPm.getApplicationInfo(packageName, 0, UserId.myUserId());
             Class<?> klass;
             klass = getIdClass(packageName, appInfo.sourceDir);
             return klass.getField(stringId).getInt(null);
@@ -240,15 +163,15 @@
             String windowString, String viewString) {
         int windowId = Integer.parseInt(windowString);
         int viewId = Integer.parseInt(viewString);
-        return AccessibilityInteractionClient.getInstance()
-            .findAccessibilityNodeInfoByAccessibilityId(sConnectionId, windowId, viewId);
+        return sUiTestAutomationBridge.findAccessibilityNodeInfoByAccessibilityId(windowId,
+                viewId);
     }
 
     private static AccessibilityNodeInfo getNodeByViewId(String viewId, AccessibilityEvent event)
             throws MonkeyViewException {
         int id = getId(viewId, event);
-        return AccessibilityInteractionClient.getInstance()
-            .findAccessibilityNodeInfoByViewIdInActiveWindow(sConnectionId, id);
+        return sUiTestAutomationBridge.findAccessibilityNodeInfoByViewId(
+                UiTestAutomationBridge.ACTIVE_WINDOW_ID, UiTestAutomationBridge.ROOT_NODE_ID, id);
     }
 
     /**
@@ -259,11 +182,10 @@
         //listviews
         public MonkeyCommandReturn translateCommand(List<String> command,
                                                     CommandQueue queue) {
-            AccessibilityEvent lastEvent = sLastAccessibilityEvent.get();
+            AccessibilityEvent lastEvent = sUiTestAutomationBridge.getLastAccessibilityEvent();
             if (lastEvent == null) {
                 return new MonkeyCommandReturn(false, NO_ACCESSIBILITY_EVENT);
             }
-            lastEvent.setSealed(true);
             AccessibilityNodeInfo node = lastEvent.getSource();
             /* Occasionally the API will generate an event with no source, which is essentially the
              * same as it generating no event at all */
@@ -273,7 +195,7 @@
             String packageName = node.getPackageName().toString();
             try{
                 Class<?> klass;
-                ApplicationInfo appInfo = sPm.getApplicationInfo(packageName, 0);
+                ApplicationInfo appInfo = sPm.getApplicationInfo(packageName, 0, UserId.myUserId());
                 klass = getIdClass(packageName, appInfo.sourceDir);
                 StringBuilder fieldBuilder = new StringBuilder();
                 Field[] fields = klass.getFields();
@@ -300,14 +222,13 @@
         public MonkeyCommandReturn translateCommand(List<String> command,
                                                     CommandQueue queue) {
             if (command.size() > 2) {
-                if (sConnectionId < 0) {
+                if (!sUiTestAutomationBridge.isConnected()) {
                     return new MonkeyCommandReturn(false, NO_CONNECTION);
                 }
-                AccessibilityEvent lastEvent = sLastAccessibilityEvent.get();
+                AccessibilityEvent lastEvent = sUiTestAutomationBridge.getLastAccessibilityEvent();
                 if (lastEvent == null) {
                     return new MonkeyCommandReturn(false, NO_ACCESSIBILITY_EVENT);
                 }
-                lastEvent.setSealed(true);
                 String idType = command.get(1);
                 AccessibilityNodeInfo node;
                 String viewQuery;
@@ -352,11 +273,10 @@
         // getrootview
         public MonkeyCommandReturn translateCommand(List<String> command,
                                                     CommandQueue queue) {
-            AccessibilityEvent lastEvent = sLastAccessibilityEvent.get();
+            AccessibilityEvent lastEvent = sUiTestAutomationBridge.getLastAccessibilityEvent();
             if (lastEvent == null) {
                 return new MonkeyCommandReturn(false, NO_ACCESSIBILITY_EVENT);
             }
-            lastEvent.setSealed(true);
             AccessibilityNodeInfo node = lastEvent.getSource();
             return (new GetAccessibilityIds()).query(node, new ArrayList<String>());
         }
@@ -372,13 +292,14 @@
         // getviewswithtext "some text here"
         public MonkeyCommandReturn translateCommand(List<String> command,
                                                     CommandQueue queue) {
-            if (sConnectionId < 0) {
+            if (!sUiTestAutomationBridge.isConnected()) {
                 return new MonkeyCommandReturn(false, NO_CONNECTION);
             }
             if (command.size() == 2) {
                 String text = command.get(1);
-                List<AccessibilityNodeInfo> nodes = AccessibilityInteractionClient.getInstance()
-                    .findAccessibilityNodeInfosByViewTextInActiveWindow(sConnectionId, text);
+                List<AccessibilityNodeInfo> nodes = sUiTestAutomationBridge
+                    .findAccessibilityNodeInfosByText(UiTestAutomationBridge.ACTIVE_WINDOW_ID,
+                            UiTestAutomationBridge.ROOT_NODE_ID, text);
                 ViewIntrospectionCommand idGetter = new GetAccessibilityIds();
                 List<String> emptyArgs = new ArrayList<String>();
                 StringBuilder ids = new StringBuilder();
@@ -550,7 +471,6 @@
         //queryview viewid button1 setfocused false
         public MonkeyCommandReturn query(AccessibilityNodeInfo node,
                                          List<String> args) {
-            node.setSealed(true);
             if (args.size() == 1) {
                 boolean actionPerformed;
                 if (Boolean.valueOf(args.get(0))) {
@@ -579,7 +499,7 @@
             if (args.size() == 0) {
                 int viewId;
                 try {
-                    Class klass = node.getClass();
+                    Class<?> klass = node.getClass();
                     Field field = klass.getDeclaredField("mAccessibilityViewId");
                     field.setAccessible(true);
                     viewId = ((Integer) field.get(node)).intValue();
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java
index af740b3..3d940a8 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceRandom.java
@@ -23,6 +23,7 @@
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
+import android.view.Surface;
 import android.view.WindowManagerImpl;
 
 import java.util.ArrayList;
@@ -63,18 +64,26 @@
             PHYSICAL_KEY_EXISTS[SYS_KEYS[i]] = KeyCharacterMap.deviceHasKey(SYS_KEYS[i]);
         }
     }
+    /** Possible screen rotation degrees **/
+    private static final int[] SCREEN_ROTATION_DEGREES = {
+      Surface.ROTATION_0,
+      Surface.ROTATION_90,
+      Surface.ROTATION_180,
+      Surface.ROTATION_270,
+    };
 
     public static final int FACTOR_TOUCH        = 0;
     public static final int FACTOR_MOTION       = 1;
     public static final int FACTOR_PINCHZOOM    = 2;
     public static final int FACTOR_TRACKBALL    = 3;
-    public static final int FACTOR_NAV          = 4;
-    public static final int FACTOR_MAJORNAV     = 5;
-    public static final int FACTOR_SYSOPS       = 6;
-    public static final int FACTOR_APPSWITCH    = 7;
-    public static final int FACTOR_FLIP         = 8;
-    public static final int FACTOR_ANYTHING     = 9;
-    public static final int FACTORZ_COUNT       = 10;    // should be last+1
+    public static final int FACTOR_ROTATION     = 4;
+    public static final int FACTOR_NAV          = 5;
+    public static final int FACTOR_MAJORNAV     = 6;
+    public static final int FACTOR_SYSOPS       = 7;
+    public static final int FACTOR_APPSWITCH    = 8;
+    public static final int FACTOR_FLIP         = 9;
+    public static final int FACTOR_ANYTHING     = 10;
+    public static final int FACTORZ_COUNT       = 11;    // should be last+1
 
     private static final int GESTURE_TAP = 0;
     private static final int GESTURE_DRAG = 1;
@@ -102,7 +111,7 @@
      * be an expensive operation.
      *
      * @param keyName the name of the KEYCODE_VALUE to lookup.
-     * @returns the intenger keyCode value, or -1 if not found
+     * @returns the intenger keyCode value, or KeyEvent.KEYCODE_UNKNOWN if not found
      */
     public static int getKeyCode(String keyName) {
         return KeyEvent.keyCodeFromString(keyName);
@@ -116,6 +125,8 @@
         mFactors[FACTOR_TOUCH] = 15.0f;
         mFactors[FACTOR_MOTION] = 10.0f;
         mFactors[FACTOR_TRACKBALL] = 15.0f;
+        // Adjust the values if we want to enable rotation by default.
+        mFactors[FACTOR_ROTATION] = 0.0f;
         mFactors[FACTOR_NAV] = 25.0f;
         mFactors[FACTOR_MAJORNAV] = 15.0f;
         mFactors[FACTOR_SYSOPS] = 2.0f;
@@ -370,6 +381,18 @@
     }
 
     /**
+     * Generates a random screen rotation event.
+     *
+     * @param random Random number source for rotation degree.
+     */
+    private void generateRotationEvent(Random random) {
+        mQ.addLast(new MonkeyRotationEvent(
+                SCREEN_ROTATION_DEGREES[random.nextInt(
+                        SCREEN_ROTATION_DEGREES.length)],
+                random.nextBoolean()));
+    }
+
+    /**
      * generate a random event based on mFactor
      */
     private void generateEvents() {
@@ -388,6 +411,9 @@
         } else if (cls < mFactors[FACTOR_TRACKBALL]) {
             generateTrackballEvent(mRandom);
             return;
+        } else if (cls < mFactors[FACTOR_ROTATION]) {
+            generateRotationEvent(mRandom);
+            return;
         }
 
         // The remaining event categories are injected as key events
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java
index 4748a25..b2b9b4f 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java
@@ -20,6 +20,7 @@
 import android.os.SystemClock;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
+import android.view.Surface;
 
 import java.io.BufferedReader;
 import java.io.DataInputStream;
@@ -28,7 +29,6 @@
 import java.io.InputStreamReader;
 import java.util.NoSuchElementException;
 import java.util.Random;
-import android.util.Log;
 
 /**
  * monkey event queue. It takes a script to produce events sample script format:
@@ -85,6 +85,8 @@
 
     private static final String EVENT_KEYWORD_TRACKBALL = "DispatchTrackball";
 
+    private static final String EVENT_KEYWORD_ROTATION = "RotateScreen";
+
     private static final String EVENT_KEYWORD_KEY = "DispatchKey";
 
     private static final String EVENT_KEYWORD_FLIP = "DispatchFlip";
@@ -123,6 +125,11 @@
 
     private static final String EVENT_KEYWORD_END_FRAMERATE_CAPTURE = "EndCaptureFramerate";
 
+    private static final String EVENT_KEYWORD_START_APP_FRAMERATE_CAPTURE =
+            "StartCaptureAppFramerate";
+
+    private static final String EVENT_KEYWORD_END_APP_FRAMERATE_CAPTURE = "EndCaptureAppFramerate";
+
     // a line at the end of the header
     private static final String STARTING_DATA_LINE = "start data >>";
 
@@ -299,6 +306,23 @@
             return;
         }
 
+        // Handle screen rotation events
+        if ((s.indexOf(EVENT_KEYWORD_ROTATION) >= 0) && args.length == 2) {
+            try {
+                int rotationDegree = Integer.parseInt(args[0]);
+                int persist = Integer.parseInt(args[1]);
+                if ((rotationDegree == Surface.ROTATION_0) ||
+                    (rotationDegree == Surface.ROTATION_90) ||
+                    (rotationDegree == Surface.ROTATION_180) ||
+                    (rotationDegree == Surface.ROTATION_270)) {
+                    mQ.addLast(new MonkeyRotationEvent(rotationDegree,
+                                                       persist != 0));
+                }
+            } catch (NumberFormatException e) {
+            }
+            return;
+        }
+
         // Handle tap event
         if ((s.indexOf(EVENT_KEYWORD_TAP) >= 0) && args.length >= 2) {
             try {
@@ -515,7 +539,7 @@
             return;
         }
 
-       // Handle launch instrumentation events
+        // Handle launch instrumentation events
         if (s.indexOf(EVENT_KEYWORD_INSTRUMENTATION) >= 0 && args.length == 2) {
             String test_name = args[0];
             String runner_name = args[1];
@@ -547,6 +571,9 @@
         if (s.indexOf(EVENT_KEYWORD_KEYPRESS) >= 0 && args.length == 1) {
             String key_name = args[0];
             int keyCode = MonkeySourceRandom.getKeyCode(key_name);
+            if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
+                return;
+            }
             MonkeyKeyEvent e = new MonkeyKeyEvent(KeyEvent.ACTION_DOWN, keyCode);
             mQ.addLast(e);
             e = new MonkeyKeyEvent(KeyEvent.ACTION_UP, keyCode);
@@ -586,7 +613,7 @@
             mQ.addLast(e);
         }
 
-      //Run the shell command
+        //Run the shell command
         if (s.indexOf(EVENT_KEYWORD_RUNCMD) >= 0 && args.length == 1) {
             String cmd = args[0];
             MonkeyCommandEvent e = new MonkeyCommandEvent(cmd);
@@ -615,6 +642,20 @@
             return;
         }
 
+        if (s.indexOf(EVENT_KEYWORD_START_APP_FRAMERATE_CAPTURE) >= 0 && args.length == 1) {
+            String app = args[0];
+            MonkeyGetAppFrameRateEvent e = new MonkeyGetAppFrameRateEvent("start", app);
+            mQ.addLast(e);
+            return;
+        }
+
+        if (s.indexOf(EVENT_KEYWORD_END_APP_FRAMERATE_CAPTURE) >= 0 && args.length == 2) {
+            String app = args[0];
+            String label = args[1];
+            MonkeyGetAppFrameRateEvent e = new MonkeyGetAppFrameRateEvent("end", app, label);
+            mQ.addLast(e);
+            return;
+        }
 
 
     }
@@ -706,6 +747,7 @@
      *
      * @return True if the file exists and the header is valid, false otherwise.
      */
+    @Override
     public boolean validate() {
         boolean validHeader;
         try {
@@ -721,6 +763,7 @@
         return validHeader;
     }
 
+    @Override
     public void setVerbose(int verbose) {
         mVerbose = verbose;
     }
@@ -765,17 +808,24 @@
     /**
      * Adjust motion downtime and eventtime according to current system time.
      *
-     * @param e A KeyEvent
+     * @param e A MotionEvent
      */
     private void adjustMotionEventTime(MonkeyMotionEvent e) {
-        long updatedDownTime = 0;
+        long thisEventTime = SystemClock.uptimeMillis();
+        long thisDownTime = e.getDownTime();
 
-        if (e.getEventTime() < 0) {
-            return;
-        }      
-        updatedDownTime = SystemClock.uptimeMillis();
-        e.setDownTime(updatedDownTime);
-        e.setEventTime(updatedDownTime);
+        if (thisDownTime == mLastRecordedDownTimeMotion) {
+            // this event is the same batch as previous one
+            e.setDownTime(mLastExportDownTimeMotion);
+        } else {
+            // this event is the start of a new batch
+            mLastRecordedDownTimeMotion = thisDownTime;
+            // update down time to match current time
+            e.setDownTime(thisEventTime);
+            mLastExportDownTimeMotion = thisEventTime;
+        }
+        // always refresh event time
+        e.setEventTime(thisEventTime);
     }
 
     /**
@@ -788,6 +838,7 @@
      * @return The first event in the event queue or null if the end of the file
      *         is reached or if an error is encountered reading the file.
      */
+    @Override
     public MonkeyEvent getNextEvent() {
         long recordedEventTime = -1;
         MonkeyEvent ev;
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyTouchEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyTouchEvent.java
index 7a91c46..a9fb128 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyTouchEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyTouchEvent.java
@@ -16,10 +16,7 @@
 
 package com.android.commands.monkey;
 
-import android.os.RemoteException;
-import android.view.IWindowManager;
 import android.view.InputDevice;
-import android.view.MotionEvent;
 
 
 /**
@@ -34,10 +31,4 @@
     protected String getTypeLabel() {
         return "Touch";
     }
-
-    @Override
-    protected boolean injectMotionEvent(IWindowManager iwm, MotionEvent me)
-            throws RemoteException {
-        return iwm.injectPointerEvent(me, false);
-    }
 }
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyTrackballEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyTrackballEvent.java
index 5033be0..960e40e 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyTrackballEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyTrackballEvent.java
@@ -16,11 +16,7 @@
 
 package com.android.commands.monkey;
 
-import android.os.RemoteException;
-import android.view.IWindowManager;
 import android.view.InputDevice;
-import android.view.MotionEvent;
-
 
 /**
  * monkey trackball event
@@ -34,10 +30,4 @@
     protected String getTypeLabel() {
         return "Trackball";
     }
-
-    @Override
-    protected boolean injectMotionEvent(IWindowManager iwm, MotionEvent me)
-            throws RemoteException {
-        return iwm.injectTrackballEvent(me, false);
-    }
 }
diff --git a/host/windows/usb/android_winusb.inf b/host/windows/usb/android_winusb.inf
index 47cf2f7..ab25970 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           = 12/06/2010,4.0.0000.00000

+DriverVer           = 10/19/2011,6.0.0000.00000

 CatalogFile.NTx86   = androidwinusb86.cat

 CatalogFile.NTamd64 = androidwinusba64.cat

 

@@ -26,42 +26,33 @@
 %ProviderName% = Google, NTx86, NTamd64

 

 [Google.NTx86]

-; HTC Dream

-%SingleAdbInterface%        = USB_Install, USB\VID_0BB4&PID_0C01

-%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C02&MI_01

-%SingleBootLoaderInterface% = USB_Install, USB\VID_0BB4&PID_0FFF

-; HTC Magic

-%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C03&MI_01

-;

-;Moto Sholes

-%SingleAdbInterface%        = USB_Install, USB\VID_22B8&PID_41DB

-%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_41DB&MI_01

-;

-;Google NexusOne

+

+;Google Nexus One

 %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02

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

 %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11

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

+

+;Google Nexus S

+%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21

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

+%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23

+%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

+

 

 [Google.NTamd64]

-; HTC Dream

-%SingleAdbInterface%        = USB_Install, USB\VID_0BB4&PID_0C01

-%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C02&MI_01

-%SingleBootLoaderInterface% = USB_Install, USB\VID_0BB4&PID_0FFF

-; HTC Magic

-%CompositeAdbInterface%     = USB_Install, USB\VID_0BB4&PID_0C03&MI_01

-;

-;Moto Sholes

-%SingleAdbInterface%        = USB_Install, USB\VID_22B8&PID_41DB

-%CompositeAdbInterface%     = USB_Install, USB\VID_22B8&PID_41DB&MI_01

-;

-;Google NexusOne

+

+;Google Nexus One

 %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02

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

 %SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11

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

+

+;Google Nexus S

+%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E21

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

+%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E23

+%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E24&MI_01

 

 [USB_Install]

 Include = winusb.inf

diff --git a/ide/eclipse/.classpath b/ide/eclipse/.classpath
index d97fb0d..4a5ba3a 100644
--- a/ide/eclipse/.classpath
+++ b/ide/eclipse/.classpath
@@ -10,7 +10,7 @@
 	<classpathentry kind="src" path="packages/apps/DeskClock/src"/>
 	<classpathentry kind="src" path="packages/apps/Email/src"/>
 	<classpathentry kind="src" path="packages/apps/Email/emailcommon/src"/>
-	<classpathentry kind="src" path="packages/apps/Exchange/src"/>
+	<classpathentry kind="src" path="packages/apps/Exchange/exchange2/src"/>
 	<classpathentry kind="src" path="packages/apps/Gallery2/src"/>
 	<classpathentry kind="src" path="packages/apps/Gallery2/src_pd"/>
 	<classpathentry kind="src" path="packages/apps/Gallery2/gallerycommon/src"/>
@@ -42,6 +42,9 @@
 	<classpathentry kind="src" path="frameworks/base/keystore/java"/>
 	<classpathentry kind="src" path="frameworks/base/location/java"/>
 	<classpathentry kind="src" path="frameworks/base/media/java"/>
+	<classpathentry kind="src" path="frameworks/base/media/mca/effect/java"/>
+	<classpathentry kind="src" path="frameworks/base/media/mca/filterfw/java"/>
+	<classpathentry kind="src" path="frameworks/base/media/mca/filterpacks/java"/>
 	<classpathentry kind="src" path="frameworks/base/obex"/>
 	<classpathentry kind="src" path="frameworks/base/opengl/java"/>
 	<classpathentry kind="src" path="frameworks/base/packages/SettingsProvider/src"/>
@@ -60,6 +63,8 @@
 	<classpathentry kind="src" path="frameworks/opt/calendar/src"/>
 	<classpathentry kind="src" path="frameworks/opt/vcard/java"/>
 	<classpathentry kind="src" path="frameworks/support/v13/java"/>
+	<classpathentry kind="src" path="frameworks/support/v13/ics"/>
+	<classpathentry kind="src" path="frameworks/support/v13/ics-mr1"/>
 	<classpathentry kind="src" path="development/samples/ApiDemos/src"/>
 	<classpathentry kind="src" path="development/samples/ApiDemos/tests/src"/>
 	<classpathentry kind="src" path="development/samples/Compass/src"/>
@@ -77,7 +82,6 @@
 	<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/junit/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"/>
@@ -105,8 +109,10 @@
 	<classpathentry kind="src" path="external/libphonenumber/java/src"/>
 	<classpathentry kind="src" path="external/nist-sip/java"/>
 	<classpathentry kind="src" path="external/tagsoup/src"/>
+	<classpathentry excluding="src/" kind="src" path="out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates/src"/>
 	<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes-jarjar.jar"/>
 	<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/android-support-v4_intermediates/javalib.jar"/>
+	<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/core-junit_intermediates/classes.jar"/>
 	<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/android-support-v13_intermediates/javalib.jar"/>
 	<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/>
 	<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/guava_intermediates/javalib.jar"/>
diff --git a/ide/eclipse/android-include-paths.xml b/ide/eclipse/android-include-paths.xml
new file mode 100644
index 0000000..bb038a2
--- /dev/null
+++ b/ide/eclipse/android-include-paths.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cdtprojectproperties>
+<section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.IncludePaths">
+<language name="holder for library settings">
+
+</language>
+<language name="GNU C++">
+<includepath>${ProjDirPath}/prebuilt/darwin-x86/toolchain/arm-linux-androideabi-4.4.x/lib/gcc/arm-linux-androideabi/4.4.3/include</includepath>
+<includepath>${ProjDirPath}/system/core/include/arch/linux-arm</includepath>
+<includepath>${ProjDirPath}/system/core/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/arch-arm/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/include</includepath>
+<includepath>${ProjDirPath}/bionic/libstdc++/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/common</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/common/linux</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/arch-arm</includepath>
+<includepath>${ProjDirPath}/bionic/libm/include</includepath>
+<includepath>${ProjDirPath}/bionic/libm/include/arm</includepath>
+<includepath>${ProjDirPath}/bionic/libthread_db/include</includepath>
+<includepath>${ProjDirPath}/dalvik/libnativehelper/include</includepath>
+<includepath>${ProjDirPath}/dalvik/libnativehelper/include/nativehelper</includepath>
+<includepath>${ProjDirPath}/hardware/libhardware/include</includepath>
+<includepath>${ProjDirPath}/hardware/libhardware_legacy/include</includepath>
+<includepath>${ProjDirPath}/hardware/ril/include</includepath>
+<includepath>${ProjDirPath}/frameworks/native/include</includepath>
+<includepath>${ProjDirPath}/frameworks/native/opengl/include</includepath>
+<includepath>${ProjDirPath}/frameworks/base/include</includepath>
+<includepath>${ProjDirPath}/frameworks/base/native/include</includepath>
+<includepath>${ProjDirPath}/external/skia/include</includepath>
+<includepath>${ProjDirPath}/external/skia/include/core</includepath>
+
+</language>
+<language name="GNU C">
+<includepath>${ProjDirPath}/prebuilt/darwin-x86/toolchain/arm-linux-androideabi-4.4.x/lib/gcc/arm-linux-androideabi/4.4.3/include</includepath>
+<includepath>${ProjDirPath}/system/core/include/arch/linux-arm</includepath>
+<includepath>${ProjDirPath}/system/core/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/arch-arm/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/include</includepath>
+<includepath>${ProjDirPath}/bionic/libstdc++/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/common</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/common/linux</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/arch-arm</includepath>
+<includepath>${ProjDirPath}/bionic/libm/include</includepath>
+<includepath>${ProjDirPath}/bionic/libm/include/arm</includepath>
+<includepath>${ProjDirPath}/bionic/libthread_db/include</includepath>
+<includepath>${ProjDirPath}/dalvik/libnativehelper/include</includepath>
+<includepath>${ProjDirPath}/dalvik/libnativehelper/include/nativehelper</includepath>
+<includepath>${ProjDirPath}/hardware/libhardware/include</includepath>
+<includepath>${ProjDirPath}/hardware/libhardware_legacy/include</includepath>
+<includepath>${ProjDirPath}/hardware/ril/include</includepath>
+<includepath>${ProjDirPath}/frameworks/native/include</includepath>
+<includepath>${ProjDirPath}/frameworks/native/opengl/include</includepath>
+<includepath>${ProjDirPath}/frameworks/base/include</includepath>
+<includepath>${ProjDirPath}/frameworks/base/native/include</includepath>
+<includepath>${ProjDirPath}/external/skia/include</includepath>
+<includepath>${ProjDirPath}/external/skia/include/core</includepath>
+
+</language>
+<language name="Assembly">
+<includepath>${ProjDirPath}/prebuilt/darwin-x86/toolchain/arm-linux-androideabi-4.4.x/lib/gcc/arm-linux-androideabi/4.4.3/include</includepath>
+<includepath>${ProjDirPath}/system/core/include/arch/linux-arm</includepath>
+<includepath>${ProjDirPath}/system/core/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/arch-arm/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/include</includepath>
+<includepath>${ProjDirPath}/bionic/libstdc++/include</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/common</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/common/linux</includepath>
+<includepath>${ProjDirPath}/bionic/libc/kernel/arch-arm</includepath>
+<includepath>${ProjDirPath}/bionic/libm/include</includepath>
+<includepath>${ProjDirPath}/bionic/libm/include/arm</includepath>
+<includepath>${ProjDirPath}/bionic/libthread_db/include</includepath>
+<includepath>${ProjDirPath}/dalvik/libnativehelper/include</includepath>
+<includepath>${ProjDirPath}/dalvik/libnativehelper/include/nativehelper</includepath>
+<includepath>${ProjDirPath}/hardware/libhardware/include</includepath>
+<includepath>${ProjDirPath}/hardware/libhardware_legacy/include</includepath>
+<includepath>${ProjDirPath}/hardware/ril/include</includepath>
+<includepath>${ProjDirPath}/frameworks/native/include</includepath>
+<includepath>${ProjDirPath}/frameworks/native/opengl/include</includepath>
+<includepath>${ProjDirPath}/frameworks/base/include</includepath>
+<includepath>${ProjDirPath}/frameworks/base/native/include</includepath>
+<includepath>${ProjDirPath}/external/skia/include</includepath>
+<includepath>${ProjDirPath}/external/skia/include/core</includepath>
+
+</language>
+</section>
+</cdtprojectproperties>
diff --git a/ide/eclipse/android-symbols.xml b/ide/eclipse/android-symbols.xml
new file mode 100644
index 0000000..3fae03f
--- /dev/null
+++ b/ide/eclipse/android-symbols.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cdtprojectproperties>
+<section name="org.eclipse.cdt.internal.ui.wizards.settingswizards.Macros">
+<language name="holder for library settings">
+
+</language>
+<language name="Assembly">
+<macro>
+<name>HAVE_ANDROID_OS</name><value>1</value>
+</macro>
+<macro>
+<name>NDEBUG</name><value>1</value>
+</macro>
+<macro>
+<name>ANDROID</name><value>1</value>
+</macro>
+<macro>
+<name>__arm__</name><value>1</value>
+</macro>
+<macro>
+<name>__OPTIMIZE__</name><value>1</value>
+</macro>
+<macro>
+<name>HAVE_FUTEX</name><value>1</value>
+</macro>
+<macro>
+<name>HAVE_PTHREADS</name><value>1</value>
+</macro>
+<macro>
+<name>EGL_TRACE</name><value>1</value>
+</macro>
+<macro>
+<name>LOG_TAG</name><value>"tag"</value>
+</macro>
+
+</language>
+<language name="GNU C++">
+<macro>
+<name>HAVE_ANDROID_OS</name><value>1</value>
+</macro>
+<macro>
+<name>NDEBUG</name><value>1</value>
+</macro>
+<macro>
+<name>ANDROID</name><value>1</value>
+</macro>
+<macro>
+<name>__arm__</name><value>1</value>
+</macro>
+<macro>
+<name>__OPTIMIZE__</name><value>1</value>
+</macro>
+<macro>
+<name>HAVE_FUTEX</name><value>1</value>
+</macro>
+<macro>
+<name>HAVE_PTHREADS</name><value>1</value>
+</macro>
+<macro>
+<name>EGL_TRACE</name><value>1</value>
+</macro>
+<macro>
+<name>LOG_TAG</name><value>"tag"</value>
+</macro>
+
+</language>
+<language name="GNU C">
+<macro>
+<name>HAVE_ANDROID_OS</name><value>1</value>
+</macro>
+<macro>
+<name>NDEBUG</name><value>1</value>
+</macro>
+<macro>
+<name>ANDROID</name><value>1</value>
+</macro>
+<macro>
+<name>__arm__</name><value>1</value>
+</macro>
+<macro>
+<name>__OPTIMIZE__</name><value>1</value>
+</macro>
+<macro>
+<name>HAVE_FUTEX</name><value>1</value>
+</macro>
+<macro>
+<name>HAVE_PTHREADS</name><value>1</value>
+</macro>
+<macro>
+<name>EGL_TRACE</name><value>1</value>
+</macro>
+<macro>
+<name>LOG_TAG</name><value>"tag"</value>
+</macro>
+
+</language>
+</section>
+</cdtprojectproperties>
diff --git a/pdk/Pdk.mk b/pdk/Pdk.mk
deleted file mode 100644
index afe4dc6..0000000
--- a/pdk/Pdk.mk
+++ /dev/null
@@ -1,244 +0,0 @@
-#
-# Copyright (C) 2008 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.
-#
-
-# Assemble the Platform Development Kit (PDK)
-# (TODO) Figure out why $(ACP) builds with target pndk but not pdk_docs
-
-pdk:
-	@echo "Package: $@ has targets pndk, pdk_docs and pdk_all"
-
-pdk_all: pndk pdk_docs
-	@echo "Package: $^"
-
-LOCAL_PATH := $(call my-dir)
-
-#-------------------------------------------------------------------------------
-# Make the Native Development Kit (Code examples)
-#   Allows vendors to build shared libraries without entire source tree.
-# This include adds /pndk to LOCAL_PATH, so can't use it afterwards...
-include $(LOCAL_PATH)/pndk/Pndk.mk
-
-
-#-------------------------------------------------------------------------------
-# Make the Plaftorm Development Kit Documentation.
-#   Doxygenize the header files to create html docs in the generatedDocs dir.
-#   Copy the appengine files, the template files and the generated html 
-#   to the docs dir and zip everything up to the distribution directory.
-#   Run javadocs/droiddocs/clearsilver on the generatedDocs dir to get the right
-#   styles added to the html.
-
-
-# Workspace directory
-pdk_docs_intermediates := $(call intermediates-dir-for,PACKAGING,pdkdocs)
-
-# Source directories for appengine, templates, config & header files
-pdk_hosting_dir := development/pdk/hosting
-pdk_templates_dir := development/pdk/docs
-pdk_config_dir := development/pdk/doxygen_config
-pdk_docsfile_dir := $(pdk_config_dir)/docsfiles
-pdk_legacy_hardware_dir := hardware/libhardware_legacy/include/hardware_legacy
-pdk_hardware_dir := hardware/libhardware/include/hardware
-pdk_camera_dir := frameworks/base/include/camera
-
-# Destination directory for docs (templates + doxygenated headers)
-pdk_docs_dest_dir := $(pdk_docs_intermediates)/docs/porting
-pdk_app_eng_root := $(pdk_docs_intermediates)/docs
-
-# Working directory for source to be doxygenated
-pdk_doxy_source_dir := $(pdk_docs_intermediates)/sources
-
-# Working directory for html, et al. after doxygination
-pdk_generated_source_dir := $(pdk_docs_intermediates)/generatedDocs/html
-
-# Working directory for .dox files
-pdk_doxy_docsfiles_dir := $(pdk_docs_intermediates)/docsfiles
-
-# Doxygen version to use, so we can override it on the command line
-# doxygen 1.5.6 working, the latest version get-apt installable on ghardy.
-# with bug fix for </div> error.
-doxygen_version = doxygen
-
-#------------------------------------------------------------------------------- 
-# Header files to doxygenize. 
-#   Add new header files to document here, also adjust the templates to have 
-#   descriptions for the new headers and point to the new doxygen created html.
-pdk_headers := \
-    $(pdk_legacy_hardware_dir)/AudioHardwareInterface.h \
-    $(pdk_hardware_dir)/gps.h \
-    $(pdk_legacy_hardware_dir)/wifi.h \
-    $(pdk_camera_dir)/CameraHardwareInterface.h \
-    $(pdk_hardware_dir)/sensors.h \
-    $(pdk_hardware_dir)/lights.h
-
-# Create a rule to copy the list of PDK headers to be doxyginated.
-# copy-one-header defines the actual rule.
-$(foreach header,$(pdk_headers), \
-  $(eval _chFrom := $(header)) \
-  $(eval _chTo :=  $(pdk_doxy_source_dir)/$(notdir $(header))) \
-  $(eval $(call copy-one-header,$(_chFrom),$(_chTo))) \
-  $(eval all_copied_pdk_headers: $(_chTo)) \
- )
-_chFrom :=
-_chTo :=
-
-
-#-------------------------------------------------------------------------------
-# Assemble all the necessary doxygen config files and the sources into the
-#   working directories
-
-pdk_templates := $(shell find $(pdk_templates_dir) -type f)
-
-# Create a rule to copy the list of PDK doc templates.
-# copy-one-file defines the actual rule.
-$(foreach template,$(pdk_templates), \
-  $(eval _chFrom := $(template)) \
-  $(eval _chTo :=  $(pdk_app_eng_root)/$(patsubst $(pdk_templates_dir)/%,%,$(template))) \
-  $(eval $(call copy-one-header,$(_chFrom),$(_chTo))) \
-  $(eval all_copied_pdk_templates: $(_chTo)) \
- )
-_chFrom :=
-_chTo :=
-
-# Copy newer doxygen config file (basic configs, should not change very often.)
-pdk_doxygen_config_file := $(pdk_docs_intermediates)/pdk_config.conf
-$(pdk_doxygen_config_file): $(pdk_config_dir)/pdk_config.conf
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-# Copy newer doxygen override config file (may change these more often.)
-pdk_doxygen_config_override_file := $(pdk_docs_intermediates)/overrideconfig.conf
-$(pdk_doxygen_config_override_file): $(pdk_config_dir)/overrideconfig.conf
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-# (TODO) Get the latest templates
-# Copy newer doxygen html files.
-$(pdk_docs_intermediates)/header.html: $(pdk_config_dir)/header.html
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-$(pdk_docs_intermediates)/footer.html: $(pdk_config_dir)/footer.html
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-# Copy newer doxygen .dox files
-$(pdk_doxy_docsfiles_dir)/groups.dox: $(pdk_docsfile_dir)/groups.dox
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-$(pdk_doxy_docsfiles_dir)/main.dox: $(pdk_docsfile_dir)/main.dox
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-# All the files that we depend upon
-all_pdk_docs_files := $(pdk_doxygen_config_override_file) \
-    $(pdk_doxygen_config_file) $(pdk_docs_intermediates)/header.html \
-    $(pdk_docs_intermediates)/footer.html $(pdk_doxy_docsfiles_dir)/groups.dox \
-    $(pdk_doxy_docsfiles_dir)/main.dox all_copied_pdk_templates  \
-    all_copied_pdk_headers
-
-# Run doxygen and copy all output and templates to the final destination
-# We replace index.html with a template file so don't use the generated one
-pdk_doxygen: all_copied_pdk_headers $(pdk_doxygen_config_override_file) \
-    $(pdk_doxygen_config_file) $(pdk_docs_intermediates)/header.html \
-    $(pdk_docs_intermediates)/footer.html $(pdk_doxy_docsfiles_dir)/groups.dox \
-    $(pdk_doxy_docsfiles_dir)/main.dox 
-	@echo "Files for Doxygination: $^"
-	@mkdir -p $(pdk_generated_source_dir)
-	@rm -f $(pdk_generated_source_dir)/*
-	@cd $(pdk_docs_intermediates) && $(doxygen_version) pdk_config.conf
-	@mkdir -p $(pdk_docs_dest_dir)
-	@cd $(pdk_generated_source_dir) && chmod ug+rx *
-	@rm -f $(pdk_generated_source_dir)/index.html
-	# Fix a doxygen bug: in *-source.html file insert '</div>\n' after line 25
-	# @$(pdk_hosting_dir)/edoxfix.sh $(pdk_generated_source_dir)
-	@cp -fp $(pdk_generated_source_dir)/* $(pdk_docs_dest_dir)
-	@rm $(pdk_generated_source_dir)/*
-
-
-# ==== docs for the web (on the google app engine server) =======================
-# Run javadoc/droiddoc/clearsilver to get the formatting right
-
-# make droiddocs run after we make our doxygen docs
-$(pdk_docs_intermediates)/pdk-timestamp: pdk_doxygen all_copied_pdk_templates
-	@touch $(pdk_docs_intermediates)/pdk-timestamp
-
-$(LOCAL_PATH)/pdk-timestamp: $(pdk_docs_intermediates)/pdk-timestamp
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := pdk-timestamp samples/samplejni/src/com/example/jniexample/JNIExample.java  
-LOCAL_MODULE_CLASS := development/pdk/pndk/samples/samplejni/src/com/example/jniexample
-LOCAL_DROIDDOC_HTML_DIR := ../../../$(pdk_app_eng_root)
-
-LOCAL_MODULE := online-pdk
-
-LOCAL_DROIDDOC_OPTIONS:= \
-		-toroot / \
-		-hdf android.whichdoc online \
-		-hdf android.whichmodule $(LOCAL_MODULE)
-
-LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR := build/tools/droiddoc/templates-pdk
-LOCAL_DROIDDOC_CUSTOM_ASSET_DIR := assets
-
-include $(BUILD_DROIDDOC)
-
-# The docs output dir is:  out/target/common/docs/online-pdk
-DOCS_OUT_DIR  := $(OUT_DOCS)/$(LOCAL_MODULE)
-
-# Copy appengine server files for new system
-$(OUT_DOCS)/app.yaml: $(pdk_hosting_dir)/app.yaml
-	@echo "PDK: $@"
-	$(copy-file-to-target-with-cp)
-
-# Name the tar files
-name := android_pdk_docs-$(REQUESTED_PRODUCT)
-ifeq ($(TARGET_BUILD_TYPE),debug)
-  name := $(name)_debug
-endif
-name := $(name)-$(BUILD_NUMBER)
-pdk_docs_tarfile := $(pdk_docs_intermediates)/$(name).tar
-pdk_docs_tarfile_zipped := $(pdk_docs_tarfile).gz
-
-.PHONY: pdk pdk_docs pdk_doxygen all_copied_pdk_headers all_copied_pdk_templates pdk-timestamp
-
-pdk_docs: $(pdk_docs_tarfile_zipped) $(pdk_docs_tarfile)
-	@echo "PDK: Docs tarred and zipped"
-
-# Put the pdk_docs zip files in the distribution directory
-$(call dist-for-goals,pdk_docs,$(pdk_docs_tarfile_zipped))
-
-# zip up tar files
-%.tar.gz: %.tar
-	@echo "PDK docs: zipped $<"
-	$(hide) gzip -cf $< > $@
-
-# tar up all the files to make the pdk docs.
-$(pdk_docs_tarfile): $(DOCS_OUT_DIR)-timestamp $(OUT_DOCS)/app.yaml
-	@echo "PDK docs: $@"
-	@mkdir -p $(dir $@)
-	@rm -f $@
-	$(hide) tar rf $@ -C $(OUT_DOCS) $(LOCAL_MODULE) app.yaml
-
-# Debugging reporting can go here, add it as a target to get output.
-pdk_debug:
-	@echo "You are here: $@"
-	@echo "pdk headers copied: $(all_copied_pdk_headers)"
-	@echo "pdk headers: $(pdk_headers)"
-	@echo "pdk docs dest: $(pdk_docs_dest_dir)"
-	@echo "config dest: $(pdk_doxygen_config_file)"
-	@echo "config src: $(pdk_config_dir)/pdk_config.conf"
-	@echo "pdk templates: $(pdk_templates_dir)"
diff --git a/pdk/README b/pdk/README
deleted file mode 100644
index 0acb1eb..0000000
--- a/pdk/README
+++ /dev/null
@@ -1,103 +0,0 @@
-Building the pdk (platform development kit)
-
-1) get a cupcake source tree with all the normal tools... and add doxygen 
-(We currently support version 1.4.6)
-
-  sudo apt-get install doxygen
-  
-Make sure that you are using the right version of java
-  
-  sudo update-java-alternatives -s java-1.5.0-sun
-
-If that doesn't work, go through the instructions on
-
-  http://source.android.com/source/download.html again.
-
-
-2) from the root
-  . build/envsetup.sh
-
-
-4) mkdir dist
-   mkdir logs
-   
-then build everything:
-
-   time make -j8 pdk pdk_all dist DIST_DIR=dist 2>&1 | tee logs/`date +%y%m%d-%H%M%S`
-
-so you can have a record of the build commands in the logs directory.
-
-
-5) the pdk and pndk tar file is put in the dist directory.
-
-6) the pdk-docs are in 
-
-  out/target/common/docs/online-pdk
-
-
---------------------------------------------------------------------------------
-# Build Notes
-
-The build target 'pdk' brings in the pdk/pndk make files into the build system.
-  Then there are three targets:
-    pdk_docs - which builds just the pdk documentation
-    pndk - which builds the platform's native development kit (native compiler, linker, etc.)
-    pdk_all - which builds the above two targets
-
-To change which version of doxygen runs you can pass in the variable:
-  doxygen_version='<path/name_of_doxygen_executable>'
-on the make line.
-
-
---------------------------------------------------------------------------------
-# Testing
-
-You must install google appengine.  See: http://code.google.com/appengine/downloads.html
-
-Here's the command to run the pdk-docs server locally:
-  python <path_to_appengine_installation>/dev_appserver.py --address 0.0.0.0 \
-    <path_to_cupcake_code>/android/out/target/common/docs
-
-To verify it is working, you can access it with a browser locally on port 8080:
-
-http://localhost:8080/online-pdk/guide/index.html
-
-NOTE: If you are trying to get to the appengine local testing instance remotely
-you will have to ssh tunnel into your linux box as appengine only serves the web
-host locally.  
-
-On a Windows machine to check your current port forwarding settings:
-
-1. Start putty.
-2. Click on your session in the list and hit load (this loads the settings so you can edit them)
-3. Go to SSH -> tunnels and look at the Forwarded ports box
-
-L8080   localhost:8080
-
-Means that you can point your webbrowser on your laptop to http://localhost:8080/ and it will show you the same thing as on your workstation for http://localhost:8080/
-
-To add port forwarding
-
-1. Start putty.
-2. Click on your session in the list and hit load (this loads the settings so you can edit them)
-3. Go to SSH -> tunnels.
-4. Pick an unused port on your laptop (8080, 8888, something like that) and put it in the "source port box"
-5. In the destination box, put localhost:8888 (replace with the actual port number the service is running on)
-6. Hit add.
-7. Go back to "Session" and save your new settings so this configuration will happen every time you login.
- 
-
---------------------------------------------------------------------------------
-# Deployment
-
-To host the pdk docs on the internal appengine run:
-/home/build/static/projects/apphosting/devtools/appcfg.py update <path_to_cupcake_src>/out/target/common/docs
-where the docs directory contains: pdk.py, app.yaml, and the online-pdk directory,
-all of which are tarred up by the Pdk.mk file when using the target pdk_docs. 
-
-To host the pdk docs on the external appengine run:
-/home/build/static/projects/apphosting/devtools/appcfg.py -s pdk-docs.appspot.com update <path_to_cupcake_src>/out/target/common/docs
-where the docs directory contains: pdk.py, app.yaml, and the online-pdk directory,
-all of which are tarred up by the Pdk.mk file when using the target pdk_docs. 
-
-
diff --git a/pdk/docs/README b/pdk/docs/README
deleted file mode 100644
index 883d83a..0000000
--- a/pdk/docs/README
+++ /dev/null
@@ -1,15 +0,0 @@
-This directory contains the source for the source.android.com site contents.
-The Platform Development Kit (PDK, a set of tools for the convenience of
-engineers doing building devices) is also built as part of the site build.
-
-Subdirectories include:
-  about -- general information about the Android Open Source Project
-  community -- information about the AOSP mailing lists
-  compatibility -- information about building compatible devices
-  downloads -- links to download files of interest
-  images -- images used in docs; note: this is NOT for UI assets/skins
-  porting -- tips & guides for porting the Android source to hardware
-  source -- how to access & use the Android source
-
-This directory originated as the PDK home (hence the name) and grew to
-encompass source.android.com.
diff --git a/pdk/docs/about/about_toc.cs b/pdk/docs/about/about_toc.cs
deleted file mode 100644
index 4676ace..0000000
--- a/pdk/docs/about/about_toc.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-    <li><a href="<?cs var:toroot ?>about/philosophy.html">Project Philosophy</a></li>
-    <li><a href="<?cs var:toroot ?>source/index.html">Getting Involved</a></li>
-    <li><a href="<?cs var:toroot ?>compatibility/index.html">Compatibility</a></li>
-    <li><a href="<?cs var:toroot ?>source/licenses.html">Licensing Information</a></li>
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
diff --git a/pdk/docs/about/index.jd b/pdk/docs/about/index.jd
deleted file mode 100644
index 43d2a8d..0000000
--- a/pdk/docs/about/index.jd
+++ /dev/null
@@ -1,20 +0,0 @@
-page.title=About the Android Open Source Project
-doc.type=about
-doc.hidenav=true
-@jd:body
-<p>Android is an open-source software stack created for mobile phones and
-other devices.  The Android Open Source Project (AOSP), led by Google, is
-tasked with the maintenance and further development of Android. Many device
-manufacturers have brought to market devices running Android, and they are
-readibly available around the world.</p>
-<p>Our primary purpose is to build an excellent software platform for everyday
-users. A number of companies have committed many engineers to achieve this
-goal, and the result is a full production quality consumer product whose
-source is open for customization and porting.</p>
-<p>You can find more information about Android from these pages:</p>
-<ul>
-  <li><a href="{@docRoot}about/philosophy.html">Our Project Philosophy and Goals</a></li>
-  <li><a href="{@docRoot}source/index.html">Interacting with the Project</a></li>
-  <li><a href="{@docRoot}compatibility/index.html">Android Compatibility</a></li>
-  <li><a href="{@docRoot}source/licenses.html">Licensing Information</a></li>
-</ul>
diff --git a/pdk/docs/about/philosophy.jd b/pdk/docs/about/philosophy.jd
deleted file mode 100644
index 1562e42..0000000
--- a/pdk/docs/about/philosophy.jd
+++ /dev/null
@@ -1,62 +0,0 @@
-page.title=Philosophy and Goals
-doc.type=about
-doc.hidenav=true
-@jd:body
-<p>Android is an open-source software stack for mobile phones and other
-devices.</p>
-<h2>Origin and Goal</h2>
-<p>Android was originated by a group of companies known as the Open Handset
-Alliance, led by Google. Today, many companies -- both original members of the
-OHA and others -- have invested heavily in Android, typically in the form of
-allocating significant engineering resources to improve Android and bring
-Android devices to Market.</p>
-<p>We created Android in response to our own experiences launching mobile
-apps. We wanted to make sure that there would always be an open platform
-available for carriers, OEMs, and developers to use to make their innovative
-ideas a reality. We wanted to make sure that there was no central point of
-failure, where one industry player could restrict or control the innovations
-of any other. The solution we chose was an open and open-source platform.</p>
-<p>The goal of the Android Open Source Project is to create a successful
-real-world product that improves the mobile experience for end users.</p>
-<h2>Governance Philosophy</h2>
-<p>The companies that have invested in Android have done so on its merits,
-because we believe that an open platform is necessary. Android is
-intentionally and explicitly an open-source -- as opposed to free software --
-effort: a group of organizations with shared needs has pooled
-resources to collaborate on a single implementation of a shared product. 
-The Android philosophy is pragmatic, first and foremost. The objective is
-a shared product that each contributor can tailor and customize.</p>
-<p>Uncontrolled customization can, of course, lead to incompatible
-implementations. To prevent this, the AOSP also maintains the Android
-Compatibility Program, which spells out what it means to be "Android
-compatible", and what is required of device builders to achieve that status.
-Anyone can (and will!) use the Android source code for any purpose, and we
-welcome all such uses. However, in order to take part in the shared
-ecosystem of applications that we are building around Android, device builders
-must participate in the Compatibility Program.</p>
-<p>Though Android consists of multiple sub-projects, this is strictly a
-project-management technique. We view and manage Android as a single,
-holistic software product, not a "distribution", specification, or collection
-of replaceable parts. Our intent is that device builders port
-Android to a device; they don't implement a specification or curate a
-distribution.</p>
-<h2>How We Work</h2>
-<p>We know that quality does not come without hard work. Along with many
-partners, Google has contributed full-time engineers, product managers, UI
-designers, Quality Assurance, and all the other roles required to bring
-modern devices to market.  We roll the open source administration and
-maintenance into the larger product development cycle.</p>
-<ul>
-<li>At any given moment, there is a current latest release of the Android
-platform. This typically takes the form of a branch in the tree.</li>
-<li>Device builders and Contributors work with the current
-latest release, fixing bugs, launching new devices, experimenting with new
-features, and so on.</li>
-<li>In parallel, Google works internally on the next version of the
-Android platform and framework, working according to the product's needs and
-goals. We develop the next version of Android by working with a device partner
-on a flagship device whose specifications are chosen to push Android
-in the direction we believe it should go.</li>
-<li>When the "n+1"th version is ready, it will be published to the public
-source tree, and become the new latest release.</li>
-</ul>
diff --git a/pdk/docs/community/community_toc.cs b/pdk/docs/community/community_toc.cs
deleted file mode 100644
index 431aae0..0000000
--- a/pdk/docs/community/community_toc.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-<ul>
-  <li><h2>Discussion Groups</h2><ul>
-    <li><a href="http://groups.google.com/group/android-platform">android-platform</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-    <li><a href="http://groups.google.com/group/android-porting">android-porting</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-    <li><a href="http://groups.google.com/group/android-kernel">android-kernel</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-    <li><a href="http://groups.google.com/group/repo-discuss">repo-discuss</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-    <li><a href="http://groups.google.com/group/android-framework">android-framework</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-  </ul></li>
-  <li><h2>Other Links</h2><ul>
-    <li><a href="<?cs var:toroot ?>community/groups-charter.html">Groups Charter</a></li>
-    <li><a href="http://developer.android.com/community/index.html">App Developer Groups</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-  </ul></li>
-</ul>
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
-
diff --git a/pdk/docs/community/groups-charter.jd b/pdk/docs/community/groups-charter.jd
deleted file mode 100644
index 959917e..0000000
--- a/pdk/docs/community/groups-charter.jd
+++ /dev/null
@@ -1,71 +0,0 @@
-page.title=Android Discussion Groups Charter
-doc.type=community
-doc.hidenav=true
-@jd:body
-<h2>Audience</h2>
-<p>These discussion groups are intended for developers working with the
-Android platform. Everyone is welcome to join in, provided you follow our
-community's policies described below. Our users help each other, and many
-experts post to these groups, including members of the Open Handset Alliance.
-</p>
-<p>No topic is off-limits, provided it relates to Android in some way.
-However, since these are very busy lists, search the archives before posting
-your question; you may find your question has already been answered.
-</p>
-<h2>Mailing list rules</h2>
-<p>We love simplicity and hate restrictions, so we keep our policies minimal.
-The rules below describe what's expected of subscribers to the Android mailing
-lists.
-</p>
-<ul><li><b>Please be friendly</b>
-<br>Showing courtesy and respect to others is a vital part of the Android
-culture, and we expect everyone participating in the Android community to join
-us in accepting nothing less. Being courteous does not mean we can't
-constructively disagree with each other, but it does mean that we must be
-polite when we do so. There's never a reason to be antagonistic or dismissive
-toward anyone; if you think there is, think again before you
-post.<br><br>Mobile development is serious business, but it's also a lot of
-fun. Let's keep it that way. Let's strive to be one of the friendliest
-communities in all of open source.<br><br></li>
-
-<li><b>Allowed discussion topics</b>
-<br>Most of our groups are for technical discussions of Android or users
-helping each other. Generally we don't put hard restrictions on the topics
-discussed in the group: as long as the topic is relevant to Android in some
-way, it's welcome on our groups.  We welcome announcements and discussion of
-products, libraries, publications, and other interesting Android-related news,
-but <b>please do not cross-post</b>. Post only to the most relevant group for
-your message. We even welcome (polite!) discussion of articles and ideas
-critical of Android--after all, we can't improve if we don't listen.<br><br>
-</li>
-
-<li><b>Working Lists</b>
-<br>Some of our groups are considered "working lists", by which we mean that the
-list is intended to be used in support of the completion of specific tasks. On
-these groups, we don't welcome off-topic conversations, and will generally ask
-you to take general discussions to a different list. Since these are lists
-where people are trying to get work done, we will be pretty aggressive about
-keeping the noise level low. We ask that you respect our contributors' time
-and keep general discussions to appropriate lists.<br><br>
-</li>
-
-<li><b>Spam</b>
-<br>We hate spam almost as passionately as we love courtesy and respect, so we
-reserve the right to limit discussions that amount to spam. Outright spam will
-result in the spammer being immediately and permanently banned from the list.
-<br><br></li>
-</ul>
-
-<p>The most important rule is friendliness. Remember: disrespect and rudeness
-are not welcome in our community under any circumstances. We don't have a
-formal policy on dealing with troublemakers, and we hope we never need
-one.That said, we do pledge to do our best to be fair, and we will always try
-to warn someone before banning him or her.
-</p>
-<h2>
-Contacting the moderators
-</h2>
-<p>If you see anyone being rude, call them out on it. This is your group too, and you don't have to accept someone else being disrespectful just because it wasn't directed at you. Just remember to be polite and courteous yourself! Don't add fuel to the fire.
-</p>
-<p>But if you see an outrageous violation, want to report spam, feel very strongly about something, or even if you just want to chat, then contact the mailing list's owners. It's what we're here for!
-</p>
diff --git a/pdk/docs/community/index.jd b/pdk/docs/community/index.jd
deleted file mode 100644
index 46adf37..0000000
--- a/pdk/docs/community/index.jd
+++ /dev/null
@@ -1,130 +0,0 @@
-page.title=Android Community
-doc.type=community
-doc.hidenav=true
-@jd:body
-<p>Welcome to the Android community!</p>
-<p>The key to any community is, obviously, communication. Like most projects,
-Android communicates via mailing lists. Because Android is an extremely large
-project with many components, we have many discussion forums, each focusing on
-a different topic.</p>
-<p>Please check out the groups below, and join any that seem interesting to
-you. Note that if you're a user looking for help with your Android device,
-this page probably isn't for you; you should contact your carrier or retailer
-for help with your phone.</p>
-<p>Please note that if you're looking for information about building
-applications for Android, you can find a separate set of groups for those at
-our sister site, developer.android.com: <a
-href="http://developer.android.com/community/index.html">http://developer.android.com/community/index.html</a></p>
-
-<h2>Getting the Most from Our Lists</h2>
-<p>Please consider the following before you post to our lists.</p>
-<ol>
-  <li><b>Read the <a
-  href="{@docRoot}community/groups-charter.html">Charter
-  for our forums.</a></b> This explains the (few) rules and guidelines for our
-  community.<br></li>
-  <li><b>Search the group archives to see whether your questions have already
-  been discussed.</b></li> This avoids time-wasting redundant discussions.
-  <li><b>Use a clear, relevant message subject.</b> This helps everyone,
-  both those trying to answer your question as well as those who may be
-  looking for information in the future.</li>
-  <li><b>Give plenty of details in your post.</b> Code or log snippets,
-  pointers to screenshots, and similar details will get better results and
-  make for better discussions. For a great guide to phrasing your questions,
-  read <a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html">How To
-  Ask Questions The Smart Way</a>.</li>
-</ol>
-
-<h2>Open Source Project discussions</h2>
-<ul>
-<li><b>android-platform</b><br/>
-This list is for general discussion about the Android open-source project or
-the platform technologies.<br/><br/>
-Subscribe using Google Groups: <a
-href="http://groups.google.com/group/android-platform">android-platform</a><br/>
-Subscribe via email: <a href="mailto:android-platform+subscribe@googlegroups.com">android-platform+subscribe@googlegroups.com</a>
-</li>
-
-<li><b>android-building</b><br/>
-Subscribe to this list for discussion and help on building the Android source
-code, and on the build system. If you've just checked out the source code and
-have questions about how to turn it into binaries, start here.<br/><br/>
-Subscribe using Google Groups: <a
-href="http://groups.google.com/group/android-building">android-building</a><br/>
-Subscribe via email: <a href="mailto:android-building+subscribe@googlegroups.com">android-building+subscribe@googlegroups.com</a>
-</li>
-
-<li><b>android-porting</b><br/>
-This list is for developers who want to port Android to a new device. If
-you're wondering how to combine the Android source code with your hardware,
-this is the right group for you. Discuss here the specifics of porting Android
-to individual devices, from obtaining toolchains and merging kernel drivers
-all the way to configuring or modifying applications for your specific
-configuration.<br/><br/>
-Subscribe using Google Groups: <a
-href="http://groups.google.com/group/android-porting">android-porting</a><br/>
-Subscribe via email: <a href="mailto:android-porting+subscribe@googlegroups.com">android-porting+subscribe@googlegroups.com</a>
-</li>
-
-<li><b>android-contrib</b><br/>
-This list is for developers who want to contribute code to Android. This is a
-working list, and is not appropriate for general discussion. We ask that
-general discussion go to android-platform.  Note: contributors
-to the Android kernel should go to the android-kernel list, below.<br/><br/>
-Subscribe using Google Groups: <a
-href="http://groups.google.com/group/android-contrib">android-contrib</a><br/>
-Subscribe via email: <a href="mailto:android-contrib+subscribe@googlegroups.com">android-contrib+subscribe@googlegroups.com</a>
-</li>
-
-<li><b>android-kernel</b><br/>
-This list is for deveopers who want to contribute to the Linux kernel that
-Android devices use. If you've downloaded the kernel code, if you know how to
-compile it, if you want to write kernel code to specifically support Android,
-this is your place. This group isn't for user-space topics (see
-android-platform for that), and people will shake their fingers at you and
-call you naughty if you ask user-space questions here.<br/><br/>
-Subscribe using Google Groups: <a
-href="http://groups.google.com/group/android-kernel">android-kernel</a><br/>
-Subscribe via email: <a href="mailto:android-kernel+subscribe@googlegroups.com">android-kernel+subscribe@googlegroups.com</a>
-</li>
-</ul>
-
-<h2>Using email with Google Groups</h2>
-<p>Instead of using the <a href="http://groups.google.com/">Google Groups</a>
-site, you can use your email client of choice to participate in the mailing lists.</p>
-<p>To subscribe to a group without using the Google Groups site, use the link
-under "subscribe via email" in the lists above.</p>
-<p>To set up how you receive mailing list postings by email:</p>
-<ol>
-<li>Sign into the group via the Google Groups site. For example, for the android-platform group you would
-visit <a href="http://groups.google.com/group/android-platform">http://groups.google.com/group/android-platform</a>.</li>
-<li>Click "Edit my membership" on the right side.</li>
-<li>Under "How do you want to read this group?" select one of the email options.</li>
-</ol>
-
-<h2>Android on IRC</h2>
-<p>We also have a presence on IRC via <a href="http://freenode.net/">freenode</a>.
-We maintain two official IRC channels on
-<a href="irc://irc.freenode.net/">irc.freenode.net</a> (access via the web
-at <a href="http://webchat.freenode.net/">freenode webchat</a>):</p>
-<ul>
-<li><b><a href="irc://irc.freenode.net/android">#android</a></b>
-    &mdash; dedicated to general Android discussion and porting concerns</li>
-<li><b><a href="irc://irc.freenode.net/android-dev">#android-dev</a></b>
-    &mdash; dedicated to discussion about writing Android applications</li>
-</ul>
-<p>The channels above are official. There are a few other channels the
-community is using, but are not official. These aren't official or officially
-moderated/managed, so you use the channels below at your own risk. The Open
-Handset Alliance doesn't endorse these channels, there's no warranty express
-or implied, and so on. There may be more channels than just these listed.</p>
-<ul>
-<li><b><a href="irc://irc.freenode.net/android-firehose">#android-firehose</a></b>
-    &mdash; displays in real-time the commits to the Android Open Source Project</li>
-<li><b><a href="irc://irc.freenode.net/android-fr">#android-fr</a></b>
-    &mdash; pour discuter d'Android en français</li>
-<li><b><a href="irc://irc.freenode.net/android-offtopic">#android-offtopic</a></b>
-    &mdash; for, well, off-topic discussions</li>
-<li><b><a href="irc://irc.freenode.net/android-root">#android-root</a></b>
-    &mdash; for discussion related to off-label uses of hardware</li>
-</ul>
diff --git a/pdk/docs/compatibility/2.1/versions.jd b/pdk/docs/compatibility/2.1/versions.jd
deleted file mode 100644
index 9687a96..0000000
--- a/pdk/docs/compatibility/2.1/versions.jd
+++ /dev/null
@@ -1,19 +0,0 @@
-page.title=Permitted Version Strings for Android 2.1
-doc.type=compatibility
-@jd:body
-<p>As described in Section 3.2.2 of the <a
-href="{@docRoot}compatibility/android-2.1-cdd.pdf">Android 2.1 Compatibility
-Definition</a>, only certain strings are allowable for the system property
-<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
-applications and web sites may rely on predictable values for this string, and
-so that end users can easily and reliably identify the version of Android
-running on their devices.</p>
-<p>Because subsequent releases of the Android software may revise this string,
-but not change any API behavior, such releases may not be accompanied by a new
-Compatibility Definition Document. This page lists the versions that are
-allowable by an Android 2.1-based system. The only permitted values for
-<code>android.os.Build.VERSION.RELEASE</code> for Android 2.1 are:</p>
-<ul>
-<li>2.1</li>
-<li>2.1-update1</li>
-</ul>
diff --git a/pdk/docs/compatibility/2.2/versions.jd b/pdk/docs/compatibility/2.2/versions.jd
deleted file mode 100644
index 87b12eb..0000000
--- a/pdk/docs/compatibility/2.2/versions.jd
+++ /dev/null
@@ -1,20 +0,0 @@
-page.title=Permitted Version Strings for Android 2.2
-doc.type=compatibility
-@jd:body
-<p>As described in Section 3.2.2 of the <a
-href="{@docRoot}compatibility/android-2.2-cdd.pdf">Android 2.2 Compatibility
-Definition</a>, only certain strings are allowable for the system property
-<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
-applications and web sites may rely on predictable values for this string, and
-so that end users can easily and reliably identify the version of Android
-running on their devices.</p>
-<p>Because subsequent releases of the Android software may revise this string,
-but not change any API behavior, such releases may not be accompanied by a new
-Compatibility Definition Document. This page lists the versions that are
-allowable by an Android 2.2-based system.</p>
-<p>The value of <code>android.os.Build.VERSION.RELEASE</code> for Android 2.2
-MUST be one of the following strings:</p>
-<ul>
-<li>2.2</li>
-<li>2.2.1</li>
-</ul>
diff --git a/pdk/docs/compatibility/2.3/versions.jd b/pdk/docs/compatibility/2.3/versions.jd
deleted file mode 100644
index 5b7fcee..0000000
--- a/pdk/docs/compatibility/2.3/versions.jd
+++ /dev/null
@@ -1,19 +0,0 @@
-page.title=Permitted Version Strings for Android 2.3
-doc.type=compatibility
-@jd:body
-<p>As described in Section 3.2.2 of the <a
-href="{@docRoot}compatibility/android-2.3-cdd.pdf">Android 2.3 Compatibility
-Definition</a>, only certain strings are allowable for the system property
-<code>android.os.Build.VERSION.RELEASE</code>. The reason for this is that
-applications and web sites may rely on predictable values for this string, and
-so that end users can easily and reliably identify the version of Android
-running on their devices.</p>
-<p>Because subsequent releases of the Android software may revise this string,
-but not change any API behavior, such releases may not be accompanied by a new
-Compatibility Definition Document. This page lists the versions that are
-allowable by an Android 2.2-based system.</p>
-<p>The value of <code>android.os.Build.VERSION.RELEASE</code> for Android 2.3
-MUST be one of the following strings:</p>
-<ul>
-<li>2.3.3</li>
-</ul>
diff --git a/pdk/docs/compatibility/android-1.6-cdd.pdf b/pdk/docs/compatibility/android-1.6-cdd.pdf
deleted file mode 100644
index ba7b4ad..0000000
--- a/pdk/docs/compatibility/android-1.6-cdd.pdf
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/compatibility/android-2.1-cdd.pdf b/pdk/docs/compatibility/android-2.1-cdd.pdf
deleted file mode 100644
index 7fe54c6..0000000
--- a/pdk/docs/compatibility/android-2.1-cdd.pdf
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/compatibility/android-2.2-cdd.pdf b/pdk/docs/compatibility/android-2.2-cdd.pdf
deleted file mode 100644
index fbc1e77..0000000
--- a/pdk/docs/compatibility/android-2.2-cdd.pdf
+++ /dev/null
@@ -1,4080 +0,0 @@
-%PDF-1.4

-%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com

-% 'BasicFonts': class PDFDictionary 

-1 0 obj

-% The standard fonts dictionary

-<< /F1 2 0 R

- /F2 4 0 R

- /F3 105 0 R

- /F4 107 0 R >>

-endobj

-% 'F1': class PDFType1Font 

-2 0 obj

-% Font Helvetica

-<< /BaseFont /Helvetica

- /Encoding /WinAnsiEncoding

- /Name /F1

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'FormXob.a31102908a592e8f94c7b4e032ffcc37': class PDFImageXObject 

-3 0 obj

-<< /BitsPerComponent 8

- /ColorSpace /DeviceRGB

- /Filter [ /ASCII85Decode

- /DCTDecode ]

- /Height 49

- /Length 11548

- /Subtype /Image

- /Type /XObject

- /Width 369 >>

-stream

-s4IA0!"_al8O`[\!<<*#!!*'"s5F.Y8OGjP:f:(Y8PDPQ!<E0#"70H8E,5RU!!$kRFE18L66KB5=s+('!!3-/!"JuF!'"CsF)XEA:eUihzzzzzzp=93Ezdk,!IE,5LSzzzzzzzzzzz!"O$O=]te*!A"3N!#0'J=]te*!C-Vb!#/mE=]te*!E9%!!#0X!E-)'[!GDH5!#/pV@:T?<!IOkI!%`.i;F:Ea!N5tu!"NX@;F:Ea!Or+0!"NI;;F:Ea!QY6@!"O0^B64+R!S@AP!&/;$Bl3nN!XJc+!'"M#F(51M!^H_c!+]V]@r22G!i,er!;^PLDe&hJ"/#Vo!%;>rEc_9]"3:HB!$kZL=s*eFzS#-/c9N;&m!jGd0=s*eFz2.HUdTBcIW)6m:H=s*eFz--ZDi'@d'_[`)?O=s*eFzo@O$D!!!!"('ntn1GSq1!!!!"$b$*9"d]2go2bnl#:TWQrR_)LqmZV*rMBPp"53_T_"M8\EcqE_z!!*,F!!$MOEcqE_z!!*,F!!$MOEcqE_z!!*,F!!%1PB64+Rz!!*'"d<#?g!!!!"zd<#?g!!!!"zd<#?g!!!!"!!$nIBl3nNz!&+BQW.4jJ;ZHdt1dD$@W^$Oa-C4]4'&*Bd:d>!\<'UEb1G]"41G]"41G`QQF(51Mz!")7n+A>Tf0K(cgzzzzzzzzzzzzzzzzzzz!!$kPF^kCOz!"o83!"<aS:/:ii!"o83!9eBD:fIDp!"o83!9eKI;agZd!"o83!9e$/7S*R[!"o83!9ds%6q[L[!"o83!9e`B6V[U]!"o83!9e$87T'3d!"o83!9e0+8l,Kf!"o83!9e!3<Drkt!"o83!9eB<:eUih!"o83!9eBD6;dd`!"o83!9e!878j0d!"o83!9e`B<*'&"!"o83!9eHG;H3\s!"o83!9e3:92Y`i!"o83!9ds)6q%(U!"o83!9e<::.tWf!"o83!9e-=8Q5Zi!"o83!9aDR!)NY<!)*Ah!&FU/!&ag7!!$kQDe&hJz,4GR4-BJ3-!!'kS8:U[?zzz!!%+PG]Woc!!#B)E-ZJ<B4uB06#^dZALnrqDIY:M+>PW)3<9*<!'ittBk@>F9hbU;!!!!)!!.jh!!E9%!!*'"!#bh;!!!!#TE5)r!!!!"!!!%>TE>/s!!!!"!!!!Rzs4[N@!!30%!<E3&!<E3&!WiE)"9S],!WiN-"9Sc2"U5/8"U,&6#71Y?#7(P<"UGJA#RLeE$46tB$OdCM$jd7J$NJi\6NI5i!WiE)"Tni1$3gY<$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$4?gK!"fJ:0`c7r!?qLF&HMtG!WU(<*rl9A"T\W)!<E3$z!!!!"!WrQ/"pYD?$4HmP!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W;.0\RE>10ZOeE%*6F"?A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ/"pYD?$4HmP!4<C=!W`?*"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIqUZ,$_k1K*]W@WKj'(*k`q-1Mcg)&ahL-n-W'2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MHp@n@XqZ#7L$j-M1!YGMH!'^J^eG-NC01u",nG`Ffa4e4cpM":c88PCn1>L,"M]>S:ok/CblnWoh&#FYmpsZ*f6h'8mIO]^cdki!c&P7/NgtMOeqa+M.%A^H91+Y[F`*5e<*0Mi!INs5)nE7bT"_o(ZnRPP2Nh[.g9G3_gNKo-lLr5u4W\?PoW5p3@jts8l?<$bImu"h-G_]Y9cn@#KZ+/=&hgW]6hUSBAOXXZQb5utFf-?0\bAC!hWk54??CH'+Xo;O,jZG?r;L%q4D\)X+`4lUfe,0a9]im!P8(?-k&mdiO\P%4N?n)n$Q%8b5Fp!n'):A!Ka'XdT$0Jnj:W*cqej&YZfjBR'Fe(>,CGj$GbqP,0%C8O#^@IG;jCJ**k\`QbG[BRlGD?)2bH'P!Mo.J7I.habPKfAp*E`N;/hl%*^`@[$cPM&TPC,dJ*Zp1[)*CitkYc-sl>I+ngHfO/M)V4C(nk#UJIB;1SYM_H:A!sdj,-^>D82D8Dl2B[R=?+S!,173r#XEH9g\0]*Zr/drfuTXdO0tuK)O\?6HlmA+5R1C$_NdeK?,m`.fH'T-XM&0?-thFr#p\uZgaIr8Zpk6)S!%tSk+OlB=:NoQP#<P2]:Wr2f="DrKb/,Hs9gg6Wro\]p?!I/9;=5l-Q5-Z-+3EN[-)A?ml.3+HLm^=5jbW]qG/T`EJmkoT+fW-h,o[rOd)oNn6P2=CTdF(LUlW7b[`':!8PYA<L,<_K!Qd4$>c/lfIC1APF]KP1DaBXi7%4.e$[]KU;Z<[db]32%;q>L"]b>JZ[uV==1hB9*0-'#9;<UJ:9A#k3q:d?OD68Hn^W!\u#+g/bYBLAZRMZD0h>MM%_$IUNI'E$j\(?NWGP4B3u0_qSMQI"n=4?iVB/9ID:Og%=j<7bA@^)R9b3iD:0%hP1do%p#`.@(VkB)$2ELUM*<9Vrk%0LCtK[W9<E)&G$2U_1Ft7L)CcLP2`<EVa0&A%[Y7.ZH'R9if!jdcZr'8(FbLN,5Qqj!5Qqj^kn4j[E2oZab]!RT-B\\/\V2Xfj]Ngj6R/@D<X4^P*C6NEHZ]A=<B7]^iTko40+?10fd<OX->571\j`2]`cCAdG81rWJW:1PC]=AIr!hV7'kr+(nHXkZ[FFl47[\$92t)PF@rNAdP!B&(al$d8WJeVjK9]&kMG6S-Uq)sd036duDVJI9FH,!&U:LOC<@p/JSfQC#Y;FKK?F%2Re)V+ugY6!ZZ<K?7(0+7)'=@8]k\Dn:.<lI(,!Wr,iWL1j>)SHGR+N%)B8=LT_/S.MS/gRl3N%hQ;c.V8'W3Q`G.!XMlL+:j/TbI53XR@&WT$,QBQmLC>2Hr(B/TVD9oN.T8J>?"EJ09*"l#0TalHI&S#^<a]_fm.i]oa^,D@!\!&Aso"6sZ5;O_]!9(CeE]'J*:O.qL]^aPq7!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!9X82Hrf`t_7p8jN4`^a_VJg+@><Jio$8ff66IN^iE5Y9_ObP^)u^1+i/PZ._i7WSn4hD",-?@27R,t#BRf^t+8R0RpMUDk=_W=&e+ESsdPrA(as;]Y:a2Wf(]Y&2q=ZHV`7_U5ic=r$.QD0fGZ/h[C86u`hcVI5h$dMe.ZPt3a!^@8p4Mj1a/pu^o>;/G>?t>d$gS2=!TO]]X;OT1;mhAc,928sSepAkmHsDh_7h>/nA^aPm7159;`$;e>J+sodOE!EP"BTu,Ba&Hj!1#e>5>B$$2%e=DnL"f)d(A#e00Z]fJ`p[;H+^QO9lrs4U!t2'u\a@:0j+3`C3kH3h4`KQV)8[<i4s.h<b+-e^_)73f1j*lHKbGrX't@dnnS'ZIZZ1X&rTKiEkk+:*RgWbb0T>h\eV.f<K]lpo!'=L)pVaa8RC"/Z5>@P&12aXr75u`&!-"e/X%"8HYFP^\B3GKp;T;"RRl)[76bF?A([#?^V!d+CG^V%L,FN%maIXm=#!7-AgZ1qYJZ*oR^iK0cWR!R07Rl(qS,5:Cg&4+[/XqAD4AID)@]qrr>3(QT;sO2gZ=trX(aFE9GF>F/p&%"PlHP*o`C_*^/GQrr<N$:](TX]t<5,Xf[Z$T+,"-gS@]LK4mS@JNtOs,iF!3:ZGa^q\eWZ>X,Sc`!2,pJPDZd&_[g.*_Mp!"]P;n!"M'tkJgQ_]I#EfU&Cf(ou>P\KNBInc/%u6?YB;#F]1r&Ij:cYQi%O>iI8JC6)8:f):\;WXs?tNfbulGN0B4BJdS]\!<#"2V>PB/d@kppn8*P-f<i`%`1HcV+Lec4$V8G/a^`*o)tVB8*UCh^i1j<g:[n*DeJcjlEuqVr8bNV0)CHhPkXm;EYc5BUJ,)%,&,uX^Iae;s8M2N07hBYm:P@!^pknUD<s]4TKgc.eNBJ8!es=eTm$jO)Umo&TTCDC>"b4oYeUR'<.eKoq5IAaf5!9jc*<t*_a&0-u8TA6d(FCnW^,Al5-m_1)#UFE2-`m)]@:c;551&s#3mou1Mb1Ai`=`>SrS!iqgll)/r"=T%5PFU:Q*$!<$qAh:0uPuLb`FR;Hh6p5[uB>%P9$"5)iTe$SgnIfO0VUDk)4F];Jk*iWF*,DocW:=H_-Yqch=R3#Jf.r0+M`_(V5X+/0\#,Au_RRal'e9!#(!8!BbF^MW$-Oi1k`$P3!>NiV'Mj7DF*nF%%<%oa479jstZ9#OS@`Ho^`Xh[[:Pi![:3C)3Tshii9F._a`X'+qcq!?'g'jE@^Wq"OYiplFE1_`Q0JlJD[kdNZAf0Js7(VjKkP_u,&%Qt*LRGB>3b?8iO;Q!>@X'.bJK(s8,lUp/:1k)\/;DUmLhb=&rdC/qT`QJF*=T>qJ%SeTYgB7$h<)H:eC2B)7F['=t#gOhOJL6Hd=L$'ZuaMiDmlne1jZtO<j#rdV3%79(S!*>J2DW6ltm3"-\m&B%qP]f%crr=%1I08C<r0Y:_ra6Ybrf4Ri^[P"Eq')9*rJ`W5!9lAKD=+ZGhhs7;A8A2OgCMTXJp'jT;i5GjX/)6[D1+p"8u,be7Yci(4q8+X2ak.)o^-&]U\cU#CRCr*Ym)r(=3O&'mdg+2WS<TH#Eh4L!;?0<jm^U8Y6F]a(`$3%i;6-b`rXD*X5KSbmB&#]J'(-c&,Ps[rr>WeW;cj74'QM#!0=l)lu-9'@@DG9Q73Vj\soJu&_mplH("VW\@rm+T`l9*35lT[[_1+l.<g3t;,+M+HC%/"'S!r16#VM3TK)!?\BjfNA,&(ST>BD(r%?hSn:T#E']p@89=,!V%KJIr#oFe:#UCLj+E]Hmg"]`=T098oDXj+N#=).JN"mkiN,aaNVu@"XU)d1Q[]t4ba)to)!TAKCTuZ'rj^2@b'u]o$'4A%(ls+O0nS4ft&uO[Q_j]l=GJ;e"-W2`l]A2a;B:J@BpV.\3+hrRZ22'ML:hJ4Te0RS=6g$\$?rc;fbIIKG389C4UQEtijWp-6p$.&!f-Mg2DuTeb&+M%H^8Lu2d^Q(&J)qrA+8+oKo[bC:U;]6-%HV_;@iOPBdONH8[5o13n;jR#rmdA8!!hKQQ[l4;-0b9F`R*/ko\lXjLkqnd&*NBBPd$(!_dGA.k]8uHTH=a3oIks-rr<RAddABM?^&]gm77i0j@^.?4iod@:6gV3FoMH`;##87!+/WRkkH[ArOBW'gpMY.qR$8&dHOu'G?YZ:Tu<1po$_Q:4lmC5Qa+2fT3K8oVtP%O[>LGj9Zm<nIQL3m&&U;t%fZOf(t=K-)F>b,[5<HnAcsSRStM@o#GN.(^'B%8n?9m%>uL:3)K"TAl$$nVMoAM'7KfKGUuOO@+S>E*rl`(IDr)6/!3fB$!9d-`62pofgn#1UGd?5P?Sh(-N)OrFNO"N'e)%bXUGC*blBr[pX^tBiRWTU>MGDQs#sp-!bBl1\[sa-mUq%.cT$?fCj0+19"6anhmtpB`m[!_E>K729WGjOoTB78)5j=f%5j=Fn81'5V'Y&k+,`3HY(s!pG^2X)PJre"jn99V]1'$^@bX)ub!\on"`-u10LX?&$j9oW#!+)r1!9bW@O"AQGGciO?0GA6T:lQ8328%rs/&&\[$]LRRj4_JPn1PZ.hu3cJVi(-h$q&s4<q#oHnk3W+'#tiOOc$DD,b/BbB9G!23`j&Ib[7X2XgGjMJ&GR%/^^DPk2\rU-nKqPh`*d*Jb`@X(M4Q8%"89\QW@'sM4BcnJt8-9c*OnDl7.s[Bgpb<^5r9o"VpfLH)S]!XEZC"ZaY+qh((u[QgRfa80.5akRDklNd`AN5N2?ek4k(Bl6WgYiCP8@Fn6N"pt2j1NQ&@8EX"NL!(c\,paA"rXM4liY3!,^Q7[C`'SSh`#!$aWgGg)I$KchP+8IYK"TJJRY)iS_Uh77X]L0V_%.c#.0!oUS_pMIm/k$4TeXTQPV"NUDHKbo\LGEc@7oAdQp>+/G-@!PZ_B'He;m'@ge]OX\NuJ?L/V>U)E1o`mai>7C>PP])D1"><>N4Cu"im?P)R\[jm(IaTOi8!o3s.4\0[D]q*Aa4:h>@Jc\$YoRi<ZQ&dPX3+Z#[+B:g'G\@tEF?,bF(\?6/nqg=o@!@/NR*RbB]`/%nKlm!t<Irr<:<m?,F(GcZB1@5+&W5M%,0pt;j#fgaKOaj"B2m3d@br/`j7,d47*m!mrg?Opb]N\*W63kQ$1@S*>\.7t+V\Jb>2g@]rPrWpo#*^@V:X_h90>:$jRaH3luNK'E/Y3%:8!Pumo`Gm!.`MK]Wm+LA)Xt?E2i0)AV*RHO#c.kt&8a(?0%$&P%HLid)1H54FT2$rj3.uAQ!+3a'\aL/Mr];'O``J0Hd_a0>$%"O)bt5s@W4-nlIIHA>o7Lbhl#U1srX([D'Y&:lpj&r4&7QlI8`G_sHBeWnl'#C3_9^k/_4MPAGAZ7GD[L4tIF[\))d-d8,Xu<3+]Gk4ntR3%A%d"lZP6SB?N@_iFElbHharg(0E;-?r`TtqXh6Q?o3O7_dj"elJrs7H/Kms4,>KB$4O^0!\@+VXSkjb,Y%jA[)!/-qb\_`TC=C/PUBs4aN,5NZm3LG0>$fCeOE4B^.rTcV4ceX$m1\E=J@7A!G`iH8]?C0Q!+W7=<A)+-QZC"I>`^b`,k)9R1O]K+dd_^.eSZs\Itmg-NLdE[jOGk')?BR58!/b8aZ(/#E]_m@Ib#:cpV4,&_eV?WFI!eWYXr;d""U@c+KGU\"EB'$9OH[\BpLR?HA(Su(@\];b2!XD&kVp"9mm4OO3[?'-H7^?.Tfq$iuUVlh!YCngtTJam'c;n[-&p">nQ&04T3".)>HS;[ltbZ]JlhTVTre.H`6X()0In^2]^*C"D!)4N/hW0&,uWJItiD.nO9X92.$l/)F;')@=n(/j,t^33!)DP-jd]FJd-M9afK9]pa@Y"l?=rW)rQaQX4b;`>GHXVEXm%l1kn`8_8]ZkDt]dtorS('eb"^k08AlQ\[9F_`m[Q.:G?At43VA]WD3XW-'!8SJBg.S!#(^9Ge>A=*(MQFW@Tm$)(o\]Wj_V&f'`7Y``8OO;SU<M$faasmfn.JnDo$@nSu($Y%9=jg"IQ_B5fVGOoPK),k7#HO:REP!5lji(&n8%hc9[V^ppDBr"MF0D-Oe08thC8DhG%M&\?Gpk?g\oeeV'?Heg:?i\o%i,Y$\7)[^C+DVgc$)"b#<`8`hP2rZrK%g.`M)P.O>\*fMO-TH24gK(c:?dR33P+,%sa3XbcnF>rMrrCG*eN`OU3p?PYrnP6tIO"Wnf>4qB*i#Oe?d>n.bA^?]UlgZP)3j5cM#_K\-^$!Grr@Xi=P8`Cpm4koZ2L?Q_\&MKhln7cF4V9Tig9A]Yd0&E^V`3(.nJ6:od!,+;urOjjpe#FHu<bHACo)ao?K4k_Xog>XtgZDV&RkV;-HSiZhW!ErH;Q2$?]?+2UA3JU5JoRl9'"Yh"Y=;mtmYDmA'/_R.o39AuN1:=i)s?Z$C5HjcAD/=<40"1QH]B<f-]\r-6Z^HX/R-rL1,UM='5'jde!k@1j:lh6Y3bF,lYGoZ\-@\X*Z`/*@X'*!S<GC6`9Gbp^GD>drg<P0p=u8t0k`:<*V/1ZD3KYDIRBf!48MKlVEMh+A%UEH9''N9>18Z7@DcQN[!-)9%"%i*BFEa6]5SD\;2qHlfrPm'TK[,Zbc4nsJJDca$+'NEBSiS=pf**=d/`m1f.5'ua\I@;#8d`ta>LEN@7j^3+-;)^sFk92-&Mmnf9-daqHGL%0fT:WNJ8g1*XYphOC/%oLd&[04"&BeAHiPmj_)8J)Rl)p'D>\K1VRp:g<?ip4qD_o&&VnD9"EX53#$NJ^t2Vcu"%<@qd<\4$RW/BU#'&?gJU\<d:YphXJ\\@L1mMLpJMN+:$Jh5$d1[sJ%B[_7sT]=lF<LUqWjOl.5j8^q-&>[$@bd*E:a.-hMH&&<g(/,Lf@"3/%lq!7G`=RcoVD_19&^6*:#DBUa1jfTWUb@C:dg`3I^"`oW]r<5W<"tq+:iph7CmVP'2D(Rp:_j=`V6JN5gp,k;-oC-[Ur+5BL8@@rRLMo%!@FpUa'pK.`W+_u'9!1oJ&2VdtlWN,SoFfo+!RRsG>WdHZ[9"6k#dh)G^4WUArN:S\pnQk._T9AOi;Wd'YH7D1Y9SX5"Cbc<,\9=a!Q;U\rpDl"c>d2#e>\brR&hqu9%]SOO!7s&me4+jg3\*Z\J69`RbaQ<i,@?lj#sSu[*(FYB=lts+L7"Qe88^*<4Gp/6\)Eqj:6-"c?aT7?eJ)fh\3Xgn[$.u+$Lfl8pq=(7bUhN[CLj]B6bL7D+>P&.S'5h)'i_*I0&;$2I.9=g2<$88rm\a_[E2K$<7.h1#%T#:G:Z(_H$)jo.5:TX?EBs3'o&eQH?S%1U[(kpNt\T.:"qqf_J=^g2Fsfg#)Lkf7#1DGN!trM"LXcAb%.!#p`?QZ:MlT@>o*,KmmIQk8eRepoXEYI!#/*i*4N^[bnEOX(hO2@nA!_QSYjGFaoZM8cd'E8\c5?O0!#rWph>e;oE,6\W#c]X3,<Zq&o\;M=Dl=\ZGL1^CYKnWCo^+J&?bjhBhYMm%aR\$L:Tuo/0P;p$d<AIUXUqcB(FKeU`r<*"i`;?=3R@C4@-!-Be9dPMm8#3`X1spXd"-W3Y(^!KK!J5fnj%&Z-7`P&l2qqLXUtC2f.\j01M%4aBq-3.!KFMro_fXP6Nn)`EuY=mB(peMQt`IIWYSHu!g#G%a&l[d_9&RSqcCI7YP.":G@2gSF_H6P)/=&'V\,1;C9,_]O\\hQu1%ME_UC)>-X^$=i8PgHoM78<G0W`,"s(goMG83:2kmJYJnQ_,r6`?&c]nXHLP&p:")8-180YkrAA"mH,cf1tQg2aa\-QNi(Km&)!.D=c-WuBPs5*A#Wf`&i88elW_-.cbb/NGQYjpmu"c#Us5gmlh=5CXKIc1Pu8bKhW`QL1s@kd&'LIC7Xa#J;S_dn17iDS0[)9#`6Nt$,&r8M>h:O!]!^!]5uW0ddW_tfn*I79*uT<-j4D4T:LEVAjfP?1d]Kq4p?`hum^[O?)_`5I;B$jc)='bei%GuJ!5j9<GgUmpHJ1ZhBb$rIlsNX@A;#R^2M8Z@gRS2ZNbdi..FR.e*A"Z/K2lL+6Fs=kQYfJqjaLP/]Cc\F\Phe^I/EePp]nff/GOqgrr>pca+j%?#bf`nNo@)lg/.nB@:3Ug@6k7`,ie!)9'j</I03aE0C8]=X6I>>dOoI@I-YD\er[8e'j8ng#b[B4ahZg9H37KI7<I/?>W$/^5A8[#ifpnGD%99%pXF)LI,8Lorl8=kpo/PsX'Z-WYMk/'7[KlQq%.:BY40VW-L?8e3Wjm=b@_[m%.XTUO2#,lLAJZCY-n90%/`]-nFPJWdTkG-aV>\RiZn8aPtt\`GI@\Uq?su^=2dtfn)4erY7o+>%:&1EIJ(AtCQhB$8Chqa!6h_nJ8b`DN8l95-G6G+KcB"9(b*j7q9cKSdXK<7CO<@?FL"J@m^6o=9W@oG>4t-krMG#FBcdOhddA[#.5&:ko15$K8tfgM<!"%JgZ9]Cc8kRbpF_7-dB*EhrK]SG!8f!5GJbN,8&4R&l^%D&pH%0./`[DMHBm8[$a;W1ei8bqaQQA063sc2kH/1.gb"H*ES/K8=u!q3^ESXsc;cI;S_KC:GAdE\IumR*i7i"u$M]84f>\mKr$(q7j"%kMp`98u-2s`d*7cgFL-Ve[bT0;+&-m]Lp$H+)f8b4`p^cBAL-HV>DrV:3gHM%,9[BQ\P6Q56->?"^``/lZ*9/ED7npMB.*Zg<cRa;ib+")V[o+YJP47;*V4F-!ddPF'Wu4N,Z/jdZ4skZ)rM?k_:PQ;BZhC5n#1O9/RGjNb<&0H]8;ND3c>q-KduiP7^M5ufhC4*N<RAAbU1ohV\!ebpTX\8k#+:iI!K!@D%E*-/[mOKp79heieYA*"mOiX_@\B^2\AgY9=1+e;QL=56e[*qBmdAcSHmR3ZoH/d9):8%\G)GS._tHo3`5;a(8.f!#d"3e1m7InJrrBB,m2+cC*U'+'DYur$pk%Mb8>`f(Q/a;M^2O-Ee[@NI</)CNj,=oQb)5i_Sem,qKu1]lGu:VrBu4R2eYC<fH98=qg(c)ba][?<aaY**3dc2IjkuVhL";m&^8k^#3MI/1/ZpC9,`<cIFD;WS7EZ?p!W(EWp`JG&SJUYQ@IS'l4@.sf:eaY^:ct]bR7UI"AiCibaN=V+Y=5BI4Z:2]dr%!j>1"rSDW#bW@$G55NIb,2*Phl>`jrDC':p-^>8rXA4C)]drKk89`]TT)`Mfh?^#*Vh.+>M>]<gYKqZ_:;g.+j^j42tu"j';o;6_3@Z7%*X!k=kRIK["PH2DICh@\1`;&6\GP?g-@Q+5e^=A$Li$NS=VBu)ola+<P8hsaEKJ_*tD>f!OeP1^kt>Bhg[.2_\Tn?ZWi8b]C*i7I>+n@RV5V`q`OFM>B%RNiBWeLhV=MDKia![9&<##6u/3$_SC;W'*39]$.WQ=!Do)AQa[;cW!YnUnS+Mb,O5QF>8`a\dH-g=GjT5MA'3*]3C'm7$O1`*+OC05e/o>FS!&HO[SL:jH,S=7[C?-53#@)<VmRYAs)]M^O@/-`VE7$._&b2!OCj7i;S=2F'h,h-)X:l1c6R%t_a[.s!_!C0]1_Vn/X7DnOml-Jrn)rr@\d&AC:+bZ\VPnETK9I_XBbC+XH!M!\eZYuO/J@n'U"pL=>Qnot2M&T3%WIb4QPnG`KDDZ1+%BJt0acf\V>>=tq/85m`VRRBsP=N1m\Oq1KA5/O&.6iJ7c,$B;6b.3L'?rLFEjat-E\WhBfk1stN)>b4f="OrTIr7INps[8%hgl``4rCu_<o6`aNo@)lg//0"[jkXD\thgYESt[o,/*GEJkMXik1UQnaTJOOj!:T*VkUoG#EdBLk.&WWADFFpQWdO46]kU'C@5c.Pah)c-gVH'Ii*D`_0Ys&]>Ji]A'_3U_]A@R(4D$o+^:*136j3K3'8*dg;h#.0_%*@hhJ_7LV,KkHZ*]#ip(l(%#G5Xi-`U9g`'7R>6>4Xi7GY>?;u/2#p'hZOo&:.3&nWh0)963Ssm'*6@G$jI"?q8BVLC]"&P_L-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ii[!U5nkC5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Tg$Z~>endstream

-endobj

-% 'F2': class PDFType1Font 

-4 0 obj

-% Font Helvetica-Bold

-<< /BaseFont /Helvetica-Bold

- /Encoding /WinAnsiEncoding

- /Name /F2

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER1': class PDFDictionary 

-5 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (mailto:compatibility@android.com) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 55

- 626.125

- 145.135

- 637.375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER2': class LinkAnnotation 

-6 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 564.9375

- 117.5275

- 576.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER3': class LinkAnnotation 

-7 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 55

- 456.5763

- 0 ]

- /Rect [ 70

- 553.6875

- 114.1825

- 564.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER4': class LinkAnnotation 

-8 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 55

- 613.3887

- 0 ]

- /Rect [ 70

- 542.4375

- 107.935

- 553.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER5': class LinkAnnotation 

-9 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 55

- 530.11

- 0 ]

- /Rect [ 85

- 529.1875

- 190.045

- 540.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER6': class LinkAnnotation 

-10 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 55

- 420.985

- 0 ]

- /Rect [ 85

- 517.9375

- 172.12

- 529.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER7': class LinkAnnotation 

-11 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 55

- 344.6775

- 0 ]

- /Rect [ 100

- 504.6875

- 161.6875

- 515.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER8': class LinkAnnotation 

-12 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 55

- 291.9275

- 0 ]

- /Rect [ 100

- 493.4375

- 178.3675

- 504.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER9': class LinkAnnotation 

-13 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 111 0 R

- /XYZ

- 55

- 742.865

- 0 ]

- /Rect [ 100

- 482.1875

- 184.6225

- 493.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER10': class LinkAnnotation 

-14 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 111 0 R

- /XYZ

- 55

- 678.865

- 0 ]

- /Rect [ 115

- 468.9375

- 221.725

- 480.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER11': class LinkAnnotation 

-15 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 111 0 R

- /XYZ

- 55

- 246.615

- 0 ]

- /Rect [ 115

- 457.6875

- 195.46

- 468.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER12': class LinkAnnotation 

-16 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 111 0 R

- /XYZ

- 55

- 160.115

- 0 ]

- /Rect [ 115

- 446.4375

- 206.7175

- 457.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER13': class LinkAnnotation 

-17 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 113 0 R

- /XYZ

- 55

- 722.115

- 0 ]

- /Rect [ 115

- 435.1875

- 200.47

- 446.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER14': class LinkAnnotation 

-18 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 113 0 R

- /XYZ

- 55

- 657.2975

- 0 ]

- /Rect [ 85

- 421.9375

- 180.0325

- 433.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER15': class LinkAnnotation 

-19 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 113 0 R

- /XYZ

- 55

- 306.9225

- 0 ]

- /Rect [ 85

- 410.6875

- 160.0225

- 421.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER16': class LinkAnnotation 

-20 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 113 0 R

- /XYZ

- 55

- 219.365

- 0 ]

- /Rect [ 100

- 397.4375

- 197.53

- 408.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER17': class LinkAnnotation 

-21 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 55

- 614.615

- 0 ]

- /Rect [ 100

- 386.1875

- 193.36

- 397.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER18': class LinkAnnotation 

-22 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 55

- 485.7975

- 0 ]

- /Rect [ 85

- 372.9375

- 194.2075

- 384.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER19': class LinkAnnotation 

-23 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 55

- 297.4225

- 0 ]

- /Rect [ 85

- 361.6875

- 157.5325

- 372.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER20': class LinkAnnotation 

-24 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 125 0 R

- /XYZ

- 55

- 548.2975

- 0 ]

- /Rect [ 85

- 350.4375

- 196.285

- 361.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER21': class LinkAnnotation 

-25 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 125 0 R

- /XYZ

- 55

- 450.4225

- 0 ]

- /Rect [ 85

- 339.1875

- 191.7025

- 350.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER22': class LinkAnnotation 

-26 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 125 0 R

- /XYZ

- 55

- 385.365

- 0 ]

- /Rect [ 100

- 325.9375

- 147.94

- 337.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER23': class LinkAnnotation 

-27 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 125 0 R

- /XYZ

- 55

- 266.865

- 0 ]

- /Rect [ 100

- 314.6875

- 161.695

- 325.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER24': class LinkAnnotation 

-28 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 125 0 R

- /XYZ

- 55

- 159.615

- 0 ]

- /Rect [ 100

- 303.4375

- 144.61

- 314.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER25': class LinkAnnotation 

-29 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 133 0 R

- /XYZ

- 55

- 645.115

- 0 ]

- /Rect [ 100

- 292.1875

- 143.3575

- 303.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER26': class LinkAnnotation 

-30 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 133 0 R

- /XYZ

- 55

- 592.365

- 0 ]

- /Rect [ 100

- 280.9375

- 174.1975

- 292.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER27': class LinkAnnotation 

-31 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 133 0 R

- /XYZ

- 55

- 418.1388

- 0 ]

- /Rect [ 70

- 267.6875

- 189.625

- 278.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER28': class LinkAnnotation 

-32 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 133 0 R

- /XYZ

- 55

- 200.2013

- 0 ]

- /Rect [ 70

- 256.4375

- 197.1325

- 267.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER29': class LinkAnnotation 

-33 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 134 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 245.1875

- 159.6025

- 256.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER30': class LinkAnnotation 

-34 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 134 0 R

- /XYZ

- 55

- 675.235

- 0 ]

- /Rect [ 85

- 231.9375

- 147.5275

- 243.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER31': class LinkAnnotation 

-35 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 55

- 698.7975

- 0 ]

- /Rect [ 85

- 220.6875

- 155.035

- 231.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER32': class LinkAnnotation 

-36 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 55

- 480.1725

- 0 ]

- /Rect [ 85

- 209.4375

- 147.1225

- 220.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER33': class LinkAnnotation 

-37 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 141 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 196.1875

- 174.1975

- 207.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER34': class LinkAnnotation 

-38 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 141 0 R

- /XYZ

- 55

- 571.3262

- 0 ]

- /Rect [ 70

- 184.9375

- 155.8525

- 196.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER35': class LinkAnnotation 

-39 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 141 0 R

- /XYZ

- 55

- 320.2975

- 0 ]

- /Rect [ 85

- 171.6875

- 124.18

- 182.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER36': class LinkAnnotation 

-40 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 146 0 R

- /XYZ

- 55

- 607.115

- 0 ]

- /Rect [ 100

- 158.4375

- 244.645

- 169.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER37': class LinkAnnotation 

-41 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 146 0 R

- /XYZ

- 55

- 511.115

- 0 ]

- /Rect [ 100

- 147.1875

- 171.685

- 158.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER38': class LinkAnnotation 

-42 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 146 0 R

- /XYZ

- 55

- 469.615

- 0 ]

- /Rect [ 100

- 135.9375

- 205.0525

- 147.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER39': class LinkAnnotation 

-43 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 146 0 R

- /XYZ

- 55

- 404.7975

- 0 ]

- /Rect [ 85

- 122.6875

- 131.695

- 133.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER40': class LinkAnnotation 

-44 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 146 0 R

- /XYZ

- 55

- 253.9225

- 0 ]

- /Rect [ 85

- 111.4375

- 171.7075

- 122.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER41': class LinkAnnotation 

-45 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 146 0 R

- /XYZ

- 55

- 165.2975

- 0 ]

- /Rect [ 85

- 100.1875

- 162.1225

- 111.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER42': class LinkAnnotation 

-46 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 148 0 R

- /XYZ

- 55

- 710.0475

- 0 ]

- /Rect [ 85

- 88.9375

- 161.29

- 100.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page1': class PDFPage 

-47 0 obj

-% Page dictionary

-<< /Annots [ 5 0 R

- 6 0 R

- 7 0 R

- 8 0 R

- 9 0 R

- 10 0 R

- 11 0 R

- 12 0 R

- 13 0 R

- 14 0 R

- 15 0 R

- 16 0 R

- 17 0 R

- 18 0 R

- 19 0 R

- 20 0 R

- 21 0 R

- 22 0 R

- 23 0 R

- 24 0 R

- 25 0 R

- 26 0 R

- 27 0 R

- 28 0 R

- 29 0 R

- 30 0 R

- 31 0 R

- 32 0 R

- 33 0 R

- 34 0 R

- 35 0 R

- 36 0 R

- 37 0 R

- 38 0 R

- 39 0 R

- 40 0 R

- 41 0 R

- 42 0 R

- 43 0 R

- 44 0 R

- 45 0 R

- 46 0 R ]

- /Contents 237 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ]

- /XObject << /FormXob.a31102908a592e8f94c7b4e032ffcc37 3 0 R >> >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER43': class LinkAnnotation 

-48 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 148 0 R

- /XYZ

- 55

- 583.6725

- 0 ]

- /Rect [ 85

- 730.6775

- 115.015

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER44': class LinkAnnotation 

-49 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 148 0 R

- /XYZ

- 55

- 419.5475

- 0 ]

- /Rect [ 85

- 719.4275

- 152.53

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER45': class LinkAnnotation 

-50 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 148 0 R

- /XYZ

- 55

- 310.4225

- 0 ]

- /Rect [ 85

- 708.1775

- 185.86

- 719.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER46': class LinkAnnotation 

-51 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 148 0 R

- /XYZ

- 55

- 169.2975

- 0 ]

- /Rect [ 85

- 696.9275

- 126.265

- 708.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER47': class LinkAnnotation 

-52 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 152 0 R

- /XYZ

- 55

- 388.5475

- 0 ]

- /Rect [ 85

- 685.6775

- 152.11

- 696.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER48': class LinkAnnotation 

-53 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 152 0 R

- /XYZ

- 55

- 322.6725

- 0 ]

- /Rect [ 85

- 674.4275

- 135.4375

- 685.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER49': class LinkAnnotation 

-54 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 152 0 R

- /XYZ

- 55

- 256.7975

- 0 ]

- /Rect [ 85

- 663.1775

- 119.605

- 674.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER50': class LinkAnnotation 

-55 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 152 0 R

- /XYZ

- 55

- 202.1725

- 0 ]

- /Rect [ 85

- 651.9275

- 138.7825

- 663.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER51': class LinkAnnotation 

-56 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 152 0 R

- /XYZ

- 55

- 104.2975

- 0 ]

- /Rect [ 85

- 640.6775

- 173.7925

- 651.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER52': class LinkAnnotation 

-57 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 154 0 R

- /XYZ

- 55

- 612.2975

- 0 ]

- /Rect [ 85

- 629.4275

- 195.0625

- 640.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER53': class LinkAnnotation 

-58 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 154 0 R

- /XYZ

- 55

- 343.1725

- 0 ]

- /Rect [ 85

- 618.1775

- 135.4525

- 629.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER54': class LinkAnnotation 

-59 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 154 0 R

- /XYZ

- 55

- 222.3888

- 0 ]

- /Rect [ 70

- 604.9275

- 166.2775

- 616.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER55': class LinkAnnotation 

-60 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 159 0 R

- /XYZ

- 55

- 632.8888

- 0 ]

- /Rect [ 70

- 593.6775

- 177.115

- 604.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER56': class LinkAnnotation 

-61 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 159 0 R

- /XYZ

- 55

- 538.36

- 0 ]

- /Rect [ 85

- 580.4275

- 144.6025

- 591.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER57': class LinkAnnotation 

-62 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 159 0 R

- /XYZ

- 55

- 461.235

- 0 ]

- /Rect [ 85

- 569.1775

- 190.465

- 580.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER58': class LinkAnnotation 

-63 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 159 0 R

- /XYZ

- 55

- 384.11

- 0 ]

- /Rect [ 85

- 557.9275

- 182.5225

- 569.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER59': class LinkAnnotation 

-64 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 159 0 R

- /XYZ

- 55

- 318.235

- 0 ]

- /Rect [ 85

- 546.6775

- 216.73

- 557.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER60': class LinkAnnotation 

-65 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 162 0 R

- /XYZ

- 55

- 591.1387

- 0 ]

- /Rect [ 70

- 533.4275

- 161.2825

- 544.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER61': class LinkAnnotation 

-66 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 162 0 R

- /XYZ

- 55

- 452.9513

- 0 ]

- /Rect [ 70

- 522.1775

- 148.375

- 533.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER62': class LinkAnnotation 

-67 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 162 0 R

- /XYZ

- 55

- 226.0138

- 0 ]

- /Rect [ 70

- 510.9275

- 119.605

- 522.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER63': class LinkAnnotation 

-68 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 163 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 499.6775

- 200.065

- 510.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page2': class PDFPage 

-69 0 obj

-% Page dictionary

-<< /Annots [ 48 0 R

- 49 0 R

- 50 0 R

- 51 0 R

- 52 0 R

- 53 0 R

- 54 0 R

- 55 0 R

- 56 0 R

- 57 0 R

- 58 0 R

- 59 0 R

- 60 0 R

- 61 0 R

- 62 0 R

- 63 0 R

- 64 0 R

- 65 0 R

- 66 0 R

- 67 0 R

- 68 0 R ]

- /Contents 238 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER64': class LinkAnnotation 

-70 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 417.365

- 0 ]

- /Rect [ 125.8675

- 663.865

- 170.05

- 675.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER65': class LinkAnnotation 

-71 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 404.115

- 0 ]

- /Rect [ 326.365

- 565.865

- 370.5475

- 577.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER66': class LinkAnnotation 

-72 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 390.865

- 0 ]

- /Rect [ 309.6925

- 522.615

- 353.875

- 533.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER67': class PDFDictionary 

-73 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.ietf.org/rfc/rfc2119.txt) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 189.625

- 405.1775

- 297.1675

- 416.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER68': class PDFDictionary 

-74 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/index.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 205.45

- 391.9275

- 369.6775

- 403.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER69': class PDFDictionary 

-75 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 167.965

- 378.6775

- 254.6725

- 389.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER70': class PDFDictionary 

-76 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/packages.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 184.2325

- 365.4275

- 363.4825

- 376.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER71': class PDFDictionary 

-77 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/Manifest.permission.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 172.9525

- 352.1775

- 413.8825

- 363.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER72': class PDFDictionary 

-78 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/os/Build.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 157.96

- 338.9275

- 358.885

- 350.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER73': class PDFDictionary 

-79 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/2.2/versions.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 186.715

- 325.6775

- 373.45

- 336.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER74': class PDFDictionary 

-80 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/webkit/WebView.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 171.7

- 312.4275

- 400.96

- 323.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER75': class PDFDictionary 

-81 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.whatwg.org/specs/web-apps/current-work/multipage/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 95.005

- 299.1775

- 307.1575

- 310.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER76': class PDFDictionary 

-82 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/ui_guidelines/widget_design.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 114.5275

- 272.6775

- 374.23

- 283.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER77': class PDFDictionary 

-83 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/ui/notifiers/notifications.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 114.94

- 259.4275

- 346.2925

- 270.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER78': class PDFDictionary 

-84 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://code.google.com/android/reference/available-resources.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 148.705

- 246.1775

- 368.8

- 257.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER79': class PDFDictionary 

-85 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#statusbarstructure) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 162.8875

- 232.9275

- 477.1975

- 244.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER80': class PDFDictionary 

-86 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/app/SearchManager.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 129.535

- 219.6775

- 371.7325

- 230.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER81': class PDFDictionary 

-87 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/widget/Toast.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 96.6025

- 206.4275

- 313.3675

- 217.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER82': class PDFDictionary 

-88 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/resources/articles/live-wallpapers.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 127.4425

- 193.1775

- 351.265

- 204.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER83': class PDFDictionary 

-89 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://code.google.com/p/apps-for-android) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 129.955

- 179.9275

- 269.1925

- 191.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER84': class PDFDictionary 

-90 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/developing/tools/index.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 245.845

- 166.6775

- 453.865

- 177.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER85': class PDFDictionary 

-91 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/fundamentals.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 164.1325

- 153.4275

- 364.645

- 164.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER86': class PDFDictionary 

-92 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/manifest/manifest-intro.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 117.8575

- 140.1775

- 349.2025

- 151.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER87': class PDFDictionary 

-93 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/developing/tools/monkey.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 138.7075

- 126.9275

- 355.06

- 138.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER88': class PDFDictionary 

-94 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/content/pm/PackageManager.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 179.965

- 113.6775

- 452.1775

- 124.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER89': class PDFDictionary 

-95 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/screens_support.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 167.8825

- 100.4275

- 389.23

- 111.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER90': class PDFDictionary 

-96 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/content/res/Configuration.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 184.9825

- 87.1775

- 443.02

- 98.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page3': class PDFPage 

-97 0 obj

-% Page dictionary

-<< /Annots [ 70 0 R

- 71 0 R

- 72 0 R

- 73 0 R

- 74 0 R

- 75 0 R

- 76 0 R

- 77 0 R

- 78 0 R

- 79 0 R

- 80 0 R

- 81 0 R

- 82 0 R

- 83 0 R

- 84 0 R

- 85 0 R

- 86 0 R

- 87 0 R

- 88 0 R

- 89 0 R

- 90 0 R

- 91 0 R

- 92 0 R

- 93 0 R

- 94 0 R

- 95 0 R

- 96 0 R ]

- /Contents 239 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER91': class PDFDictionary 

-98 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/util/DisplayMetrics.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 161.6125

- 730.6775

- 396.28

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER92': class PDFDictionary 

-99 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/Camera.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 161.2075

- 717.4275

- 395.47

- 728.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER93': class PDFDictionary 

-100 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/SensorEvent.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 157.0525

- 704.1775

- 407.5825

- 715.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER94': class PDFDictionary 

-101 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/security/security.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 220.3975

- 690.9275

- 429.6475

- 702.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER95': class PDFDictionary 

-102 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/bluetooth/package-summary.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 119.9575

- 677.6775

- 388.825

- 688.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER96': class LinkAnnotation 

-103 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 377.615

- 0 ]

- /Rect [ 460.615

- 462.365

- 504.7975

- 473.615 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER97': class LinkAnnotation 

-104 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 364.365

- 0 ]

- /Rect [ 470.995

- 311.74

- 515.1775

- 322.99 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F3': class PDFType1Font 

-105 0 obj

-% Font Courier

-<< /BaseFont /Courier

- /Encoding /WinAnsiEncoding

- /Name /F3

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER98': class LinkAnnotation 

-106 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 351.115

- 0 ]

- /Rect [ 336.2725

- 258.99

- 380.455

- 270.24 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F4': class PDFType1Font 

-107 0 obj

-% Font Times-Roman

-<< /BaseFont /Times-Roman

- /Encoding /WinAnsiEncoding

- /Name /F4

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER99': class LinkAnnotation 

-108 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 337.865

- 0 ]

- /Rect [ 350.19

- 182.99

- 394.3725

- 194.24 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page4': class PDFPage 

-109 0 obj

-% Page dictionary

-<< /Annots [ 98 0 R

- 99 0 R

- 100 0 R

- 101 0 R

- 102 0 R

- 103 0 R

- 104 0 R

- 106 0 R

- 108 0 R ]

- /Contents 240 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page5': class PDFPage 

-110 0 obj

-% Page dictionary

-<< /Contents 241 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page6': class PDFPage 

-111 0 obj

-% Page dictionary

-<< /Contents 242 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER100': class LinkAnnotation 

-112 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 324.615

- 0 ]

- /Rect [ 381.61

- 261.6775

- 425.7925

- 272.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page7': class PDFPage 

-113 0 obj

-% Page dictionary

-<< /Annots [ 112 0 R ]

- /Contents 243 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER101': class LinkAnnotation 

-114 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 311.365

- 0 ]

- /Rect [ 447.265

- 645.6775

- 491.4475

- 656.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER102': class LinkAnnotation 

-115 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 311.365

- 0 ]

- /Rect [ 160.4575

- 506.4275

- 204.64

- 517.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER103': class LinkAnnotation 

-116 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 390.865

- 0 ]

- /Rect [ 125.4475

- 429.3025

- 169.63

- 440.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page8': class PDFPage 

-117 0 obj

-% Page dictionary

-<< /Annots [ 114 0 R

- 115 0 R

- 116 0 R ]

- /Contents 244 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER104': class LinkAnnotation 

-118 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 298.115

- 0 ]

- /Rect [ 500.1475

- 503.0525

- 548.5

- 514.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER105': class LinkAnnotation 

-119 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 284.865

- 0 ]

- /Rect [ 515.1475

- 352.4275

- 553.075

- 363.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER106': class LinkAnnotation 

-120 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 284.865

- 0 ]

- /Rect [ 55

- 341.1775

- 63.34

- 352.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER107': class LinkAnnotation 

-121 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 271.615

- 0 ]

- /Rect [ 313.045

- 233.9275

- 361.3975

- 245.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER108': class LinkAnnotation 

-122 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 258.365

- 0 ]

- /Rect [ 448.06

- 201.9275

- 496.4125

- 213.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER109': class LinkAnnotation 

-123 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 245.115

- 0 ]

- /Rect [ 124.615

- 190.6775

- 172.9675

- 201.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER110': class LinkAnnotation 

-124 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 231.865

- 0 ]

- /Rect [ 132.535

- 126.6775

- 180.8875

- 137.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page9': class PDFPage 

-125 0 obj

-% Page dictionary

-<< /Annots [ 118 0 R

- 119 0 R

- 120 0 R

- 121 0 R

- 122 0 R

- 123 0 R

- 124 0 R ]

- /Contents 245 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER111': class LinkAnnotation 

-126 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 218.615

- 0 ]

- /Rect [ 217.9075

- 612.1775

- 266.26

- 623.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER112': class LinkAnnotation 

-127 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 205.365

- 0 ]

- /Rect [ 73.7575

- 548.1775

- 122.11

- 559.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER113': class LinkAnnotation 

-128 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 192.115

- 0 ]

- /Rect [ 188.2975

- 319.49

- 236.65

- 330.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER114': class LinkAnnotation 

-129 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 178.865

- 0 ]

- /Rect [ 499.5925

- 148.8025

- 547.945

- 160.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER115': class LinkAnnotation 

-130 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 165.615

- 0 ]

- /Rect [ 257.9875

- 128.0525

- 306.34

- 139.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER116': class LinkAnnotation 

-131 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 152.365

- 0 ]

- /Rect [ 373.0375

- 128.0525

- 421.39

- 139.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER117': class LinkAnnotation 

-132 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 298.115

- 0 ]

- /Rect [ 493.5025

- 128.0525

- 541.855

- 139.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page10': class PDFPage 

-133 0 obj

-% Page dictionary

-<< /Annots [ 126 0 R

- 127 0 R

- 128 0 R

- 129 0 R

- 130 0 R

- 131 0 R

- 132 0 R ]

- /Contents 246 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page11': class PDFPage 

-134 0 obj

-% Page dictionary

-<< /Contents 247 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page12': class PDFPage 

-135 0 obj

-% Page dictionary

-<< /Contents 248 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER118': class LinkAnnotation 

-136 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 178.865

- 0 ]

- /Rect [ 207.1

- 663.865

- 255.4525

- 675.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER119': class LinkAnnotation 

-137 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 178.865

- 0 ]

- /Rect [ 239.6275

- 628.115

- 287.98

- 639.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER120': class LinkAnnotation 

-138 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 139.115

- 0 ]

- /Rect [ 98.3425

- 592.365

- 146.695

- 603.615 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER121': class LinkAnnotation 

-139 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 125.865

- 0 ]

- /Rect [ 392.7925

- 329.6775

- 441.145

- 340.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER122': class LinkAnnotation 

-140 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 112.615

- 0 ]

- /Rect [ 332.6125

- 263.8025

- 380.965

- 275.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page13': class PDFPage 

-141 0 obj

-% Page dictionary

-<< /Annots [ 136 0 R

- 137 0 R

- 138 0 R

- 139 0 R

- 140 0 R ]

- /Contents 249 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER123': class LinkAnnotation 

-142 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 99.365

- 0 ]

- /Rect [ 273.535

- 719.4275

- 321.8875

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER124': class LinkAnnotation 

-143 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 742.865

- 0 ]

- /Rect [ 460.75

- 478.1775

- 509.1025

- 489.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER125': class LinkAnnotation 

-144 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 99.365

- 0 ]

- /Rect [ 259.42

- 263.3025

- 307.7725

- 274.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER126': class LinkAnnotation 

-145 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 99.365

- 0 ]

- /Rect [ 381.79

- 174.6775

- 430.1425

- 185.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page14': class PDFPage 

-146 0 obj

-% Page dictionary

-<< /Annots [ 142 0 R

- 143 0 R

- 144 0 R

- 145 0 R ]

- /Contents 250 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER127': class LinkAnnotation 

-147 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 69.925

- 99.365

- 0 ]

- /Rect [ 304.7875

- 617.5525

- 353.14

- 628.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page15': class PDFPage 

-148 0 obj

-% Page dictionary

-<< /Annots [ 147 0 R ]

- /Contents 251 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER128': class LinkAnnotation 

-149 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 425.56

- 574.4275

- 473.9125

- 585.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER129': class LinkAnnotation 

-150 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 716.365

- 0 ]

- /Rect [ 433.0675

- 332.0525

- 481.42

- 343.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER130': class LinkAnnotation 

-151 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 716.365

- 0 ]

- /Rect [ 397.6375

- 266.1775

- 445.99

- 277.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page16': class PDFPage 

-152 0 obj

-% Page dictionary

-<< /Annots [ 149 0 R

- 150 0 R

- 151 0 R ]

- /Contents 252 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER131': class LinkAnnotation 

-153 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 689.865

- 0 ]

- /Rect [ 180.895

- 286.6775

- 229.2475

- 297.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page17': class PDFPage 

-154 0 obj

-% Page dictionary

-<< /Annots [ 153 0 R ]

- /Contents 253 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER132': class LinkAnnotation 

-155 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 703.115

- 0 ]

- /Rect [ 164.2225

- 570.24

- 212.575

- 581.49 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER133': class LinkAnnotation 

-156 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 703.115

- 0 ]

- /Rect [ 465.5875

- 493.115

- 513.94

- 504.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER134': class LinkAnnotation 

-157 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 703.115

- 0 ]

- /Rect [ 345.55

- 393.49

- 393.9025

- 404.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER135': class LinkAnnotation 

-158 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 109 0 R

- /XYZ

- 69.925

- 703.115

- 0 ]

- /Rect [ 57.085

- 327.615

- 105.4375

- 338.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page18': class PDFPage 

-159 0 obj

-% Page dictionary

-<< /Annots [ 155 0 R

- 156 0 R

- 157 0 R

- 158 0 R ]

- /Contents 254 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER136': class LinkAnnotation 

-160 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 97 0 R

- /XYZ

- 66.25

- 404.115

- 0 ]

- /Rect [ 323.41

- 539.74

- 367.5925

- 550.99 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER137': class PDFDictionary 

-161 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (mailto:compatibility@android.com) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 193.8325

- 174.615

- 283.9675

- 185.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page19': class PDFPage 

-162 0 obj

-% Page dictionary

-<< /Annots [ 160 0 R

- 161 0 R ]

- /Contents 255 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page20': class PDFPage 

-163 0 obj

-% Page dictionary

-<< /Contents 256 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 236 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'R164': class PDFCatalog 

-164 0 obj

-% Document Root

-<< /Outlines 166 0 R

- /PageMode /UseNone

- /Pages 236 0 R

- /Type /Catalog >>

-endobj

-% 'R165': class PDFInfo 

-165 0 obj

-<< /Author ()

- /CreationDate (D:20100802143410+08'00')

- /Keywords ()

- /Producer (pisa HTML to PDF <http://www.htmltopdf.org>)

- /Subject ()

- /Title (Android 2.2 Compatibility Definition) >>

-endobj

-% 'R166': class PDFOutlines 

-166 0 obj

-<< /Count 11

- /First 167 0 R

- /Last 167 0 R

- /Type /Outlines >>

-endobj

-% 'Outline.0': class OutlineEntryObject 

-167 0 obj

-<< /Count -15

- /Dest [ 47 0 R

- /Fit ]

- /First 168 0 R

- /Last 230 0 R

- /Parent 166 0 R

- /Title (Android 2.2 Compatibility Definition) >>

-endobj

-% 'Outline.2.0': class OutlineEntryObject 

-168 0 obj

-<< /Dest [ 47 0 R

- /Fit ]

- /Next 169 0 R

- /Parent 167 0 R

- /Title (Table of Contents) >>

-endobj

-% 'Outline.2.1': class OutlineEntryObject 

-169 0 obj

-<< /Dest [ 97 0 R

- /Fit ]

- /Next 170 0 R

- /Parent 167 0 R

- /Prev 168 0 R

- /Title (1. Introduction) >>

-endobj

-% 'Outline.2.2': class OutlineEntryObject 

-170 0 obj

-<< /Dest [ 97 0 R

- /Fit ]

- /Next 171 0 R

- /Parent 167 0 R

- /Prev 169 0 R

- /Title (2. Resources) >>

-endobj

-% 'Outline.2.3': class OutlineEntryObject 

-171 0 obj

-<< /Count -8

- /Dest [ 109 0 R

- /Fit ]

- /First 172 0 R

- /Last 188 0 R

- /Next 194 0 R

- /Parent 167 0 R

- /Prev 170 0 R

- /Title (3. Software) >>

-endobj

-% 'Outline.3.0': class OutlineEntryObject 

-172 0 obj

-<< /Dest [ 109 0 R

- /Fit ]

- /Next 173 0 R

- /Parent 171 0 R

- /Title (3.1. Managed API Compatibility) >>

-endobj

-% 'Outline.3.1': class OutlineEntryObject 

-173 0 obj

-<< /Count -7

- /Dest [ 109 0 R

- /Fit ]

- /First 174 0 R

- /Last 180 0 R

- /Next 181 0 R

- /Parent 171 0 R

- /Prev 172 0 R

- /Title (3.2. Soft API Compatibility) >>

-endobj

-% 'Outline.4.0': class OutlineEntryObject 

-174 0 obj

-<< /Dest [ 109 0 R

- /Fit ]

- /Next 175 0 R

- /Parent 173 0 R

- /Title (3.2.1. Permissions) >>

-endobj

-% 'Outline.4.1': class OutlineEntryObject 

-175 0 obj

-<< /Dest [ 109 0 R

- /Fit ]

- /Next 176 0 R

- /Parent 173 0 R

- /Prev 174 0 R

- /Title (3.2.2. Build Parameters) >>

-endobj

-% 'Outline.4.2': class OutlineEntryObject 

-176 0 obj

-<< /Dest [ 111 0 R

- /Fit ]

- /Next 177 0 R

- /Parent 173 0 R

- /Prev 175 0 R

- /Title (3.2.3. Intent Compatibility) >>

-endobj

-% 'Outline.4.3': class OutlineEntryObject 

-177 0 obj

-<< /Dest [ 111 0 R

- /Fit ]

- /Next 178 0 R

- /Parent 173 0 R

- /Prev 176 0 R

- /Title (3.2.3.1. Core Application Intents) >>

-endobj

-% 'Outline.4.4': class OutlineEntryObject 

-178 0 obj

-<< /Dest [ 111 0 R

- /Fit ]

- /Next 179 0 R

- /Parent 173 0 R

- /Prev 177 0 R

- /Title (3.2.3.2. Intent Overrides) >>

-endobj

-% 'Outline.4.5': class OutlineEntryObject 

-179 0 obj

-<< /Dest [ 111 0 R

- /Fit ]

- /Next 180 0 R

- /Parent 173 0 R

- /Prev 178 0 R

- /Title (3.2.3.3. Intent Namespaces) >>

-endobj

-% 'Outline.4.6': class OutlineEntryObject 

-180 0 obj

-<< /Dest [ 113 0 R

- /Fit ]

- /Parent 173 0 R

- /Prev 179 0 R

- /Title (3.2.3.4. Broadcast Intents) >>

-endobj

-% 'Outline.3.2': class OutlineEntryObject 

-181 0 obj

-<< /Dest [ 113 0 R

- /Fit ]

- /Next 182 0 R

- /Parent 171 0 R

- /Prev 173 0 R

- /Title (3.3. Native API Compatibility) >>

-endobj

-% 'Outline.3.3': class OutlineEntryObject 

-182 0 obj

-<< /Count -2

- /Dest [ 113 0 R

- /Fit ]

- /First 183 0 R

- /Last 184 0 R

- /Next 185 0 R

- /Parent 171 0 R

- /Prev 181 0 R

- /Title (3.4. Web Compatibility) >>

-endobj

-% 'Outline.5.0': class OutlineEntryObject 

-183 0 obj

-<< /Dest [ 113 0 R

- /Fit ]

- /Next 184 0 R

- /Parent 182 0 R

- /Title (3.4.1. WebView Compatibility) >>

-endobj

-% 'Outline.5.1': class OutlineEntryObject 

-184 0 obj

-<< /Dest [ 117 0 R

- /Fit ]

- /Parent 182 0 R

- /Prev 183 0 R

- /Title (3.4.2. Browser Compatibility) >>

-endobj

-% 'Outline.3.4': class OutlineEntryObject 

-185 0 obj

-<< /Dest [ 117 0 R

- /Fit ]

- /Next 186 0 R

- /Parent 171 0 R

- /Prev 182 0 R

- /Title (3.5. API Behavioral Compatibility) >>

-endobj

-% 'Outline.3.5': class OutlineEntryObject 

-186 0 obj

-<< /Dest [ 117 0 R

- /Fit ]

- /Next 187 0 R

- /Parent 171 0 R

- /Prev 185 0 R

- /Title (3.6. API Namespaces) >>

-endobj

-% 'Outline.3.6': class OutlineEntryObject 

-187 0 obj

-<< /Dest [ 125 0 R

- /Fit ]

- /Next 188 0 R

- /Parent 171 0 R

- /Prev 186 0 R

- /Title (3.7. Virtual Machine Compatibility) >>

-endobj

-% 'Outline.3.7': class OutlineEntryObject 

-188 0 obj

-<< /Count -5

- /Dest [ 125 0 R

- /Fit ]

- /First 189 0 R

- /Last 193 0 R

- /Parent 171 0 R

- /Prev 187 0 R

- /Title (3.8. User Interface Compatibility) >>

-endobj

-% 'Outline.6.0': class OutlineEntryObject 

-189 0 obj

-<< /Dest [ 125 0 R

- /Fit ]

- /Next 190 0 R

- /Parent 188 0 R

- /Title (3.8.1. Widgets) >>

-endobj

-% 'Outline.6.1': class OutlineEntryObject 

-190 0 obj

-<< /Dest [ 125 0 R

- /Fit ]

- /Next 191 0 R

- /Parent 188 0 R

- /Prev 189 0 R

- /Title (3.8.2. Notifications) >>

-endobj

-% 'Outline.6.2': class OutlineEntryObject 

-191 0 obj

-<< /Dest [ 125 0 R

- /Fit ]

- /Next 192 0 R

- /Parent 188 0 R

- /Prev 190 0 R

- /Title (3.8.3. Search) >>

-endobj

-% 'Outline.6.3': class OutlineEntryObject 

-192 0 obj

-<< /Dest [ 133 0 R

- /Fit ]

- /Next 193 0 R

- /Parent 188 0 R

- /Prev 191 0 R

- /Title (3.8.4. Toasts) >>

-endobj

-% 'Outline.6.4': class OutlineEntryObject 

-193 0 obj

-<< /Dest [ 133 0 R

- /Fit ]

- /Parent 188 0 R

- /Prev 192 0 R

- /Title (3.8.5. Live Wallpapers) >>

-endobj

-% 'Outline.2.4': class OutlineEntryObject 

-194 0 obj

-<< /Dest [ 133 0 R

- /Fit ]

- /Next 195 0 R

- /Parent 167 0 R

- /Prev 171 0 R

- /Title (4. Reference Software Compatibility) >>

-endobj

-% 'Outline.2.5': class OutlineEntryObject 

-195 0 obj

-<< /Dest [ 133 0 R

- /Fit ]

- /Next 196 0 R

- /Parent 167 0 R

- /Prev 194 0 R

- /Title (5. Application Packaging Compatibility) >>

-endobj

-% 'Outline.2.6': class OutlineEntryObject 

-196 0 obj

-<< /Count -3

- /Dest [ 134 0 R

- /Fit ]

- /First 197 0 R

- /Last 199 0 R

- /Next 200 0 R

- /Parent 167 0 R

- /Prev 195 0 R

- /Title (6. Multimedia Compatibility) >>

-endobj

-% 'Outline.7.0': class OutlineEntryObject 

-197 0 obj

-<< /Dest [ 134 0 R

- /Fit ]

- /Next 198 0 R

- /Parent 196 0 R

- /Title (6.1. Media Codecs) >>

-endobj

-% 'Outline.7.1': class OutlineEntryObject 

-198 0 obj

-<< /Dest [ 135 0 R

- /Fit ]

- /Next 199 0 R

- /Parent 196 0 R

- /Prev 197 0 R

- /Title (6.2. Audio Recording) >>

-endobj

-% 'Outline.7.2': class OutlineEntryObject 

-199 0 obj

-<< /Dest [ 135 0 R

- /Fit ]

- /Parent 196 0 R

- /Prev 198 0 R

- /Title (6.3. Audio Latency) >>

-endobj

-% 'Outline.2.7': class OutlineEntryObject 

-200 0 obj

-<< /Dest [ 141 0 R

- /Fit ]

- /Next 201 0 R

- /Parent 167 0 R

- /Prev 196 0 R

- /Title (7. Developer Tool Compatibility) >>

-endobj

-% 'Outline.2.8': class OutlineEntryObject 

-201 0 obj

-<< /Count -16

- /Dest [ 141 0 R

- /Fit ]

- /First 202 0 R

- /Last 220 0 R

- /Next 221 0 R

- /Parent 167 0 R

- /Prev 200 0 R

- /Title (8. Hardware Compatibility) >>

-endobj

-% 'Outline.8.0': class OutlineEntryObject 

-202 0 obj

-<< /Count -3

- /Dest [ 141 0 R

- /Fit ]

- /First 203 0 R

- /Last 205 0 R

- /Next 206 0 R

- /Parent 201 0 R

- /Title (8.1. Display) >>

-endobj

-% 'Outline.9.0': class OutlineEntryObject 

-203 0 obj

-<< /Dest [ 146 0 R

- /Fit ]

- /Next 204 0 R

- /Parent 202 0 R

- /Title (8.1.2. Non-Standard Display Configurations) >>

-endobj

-% 'Outline.9.1': class OutlineEntryObject 

-204 0 obj

-<< /Dest [ 146 0 R

- /Fit ]

- /Next 205 0 R

- /Parent 202 0 R

- /Prev 203 0 R

- /Title (8.1.3. Display Metrics) >>

-endobj

-% 'Outline.9.2': class OutlineEntryObject 

-205 0 obj

-<< /Dest [ 146 0 R

- /Fit ]

- /Parent 202 0 R

- /Prev 204 0 R

- /Title (8.1.4. Declared Screen Support) >>

-endobj

-% 'Outline.8.1': class OutlineEntryObject 

-206 0 obj

-<< /Dest [ 146 0 R

- /Fit ]

- /Next 207 0 R

- /Parent 201 0 R

- /Prev 202 0 R

- /Title (8.2. Keyboard) >>

-endobj

-% 'Outline.8.2': class OutlineEntryObject 

-207 0 obj

-<< /Dest [ 146 0 R

- /Fit ]

- /Next 208 0 R

- /Parent 201 0 R

- /Prev 206 0 R

- /Title (8.3. Non-touch Navigation) >>

-endobj

-% 'Outline.8.3': class OutlineEntryObject 

-208 0 obj

-<< /Dest [ 146 0 R

- /Fit ]

- /Next 209 0 R

- /Parent 201 0 R

- /Prev 207 0 R

- /Title (8.4. Screen Orientation) >>

-endobj

-% 'Outline.8.4': class OutlineEntryObject 

-209 0 obj

-<< /Dest [ 148 0 R

- /Fit ]

- /Next 210 0 R

- /Parent 201 0 R

- /Prev 208 0 R

- /Title (8.5. Touchscreen input) >>

-endobj

-% 'Outline.8.5': class OutlineEntryObject 

-210 0 obj

-<< /Dest [ 148 0 R

- /Fit ]

- /Next 211 0 R

- /Parent 201 0 R

- /Prev 209 0 R

- /Title (8.6. USB) >>

-endobj

-% 'Outline.8.6': class OutlineEntryObject 

-211 0 obj

-<< /Dest [ 148 0 R

- /Fit ]

- /Next 212 0 R

- /Parent 201 0 R

- /Prev 210 0 R

- /Title (8.7. Navigation keys) >>

-endobj

-% 'Outline.8.7': class OutlineEntryObject 

-212 0 obj

-<< /Dest [ 148 0 R

- /Fit ]

- /Next 213 0 R

- /Parent 201 0 R

- /Prev 211 0 R

- /Title (8.8. Wireless Data Networking) >>

-endobj

-% 'Outline.8.8': class OutlineEntryObject 

-213 0 obj

-<< /Dest [ 148 0 R

- /Fit ]

- /Next 214 0 R

- /Parent 201 0 R

- /Prev 212 0 R

- /Title (8.9. Camera) >>

-endobj

-% 'Outline.8.9': class OutlineEntryObject 

-214 0 obj

-<< /Dest [ 152 0 R

- /Fit ]

- /Next 215 0 R

- /Parent 201 0 R

- /Prev 213 0 R

- /Title (8.10. Accelerometer) >>

-endobj

-% 'Outline.8.10': class OutlineEntryObject 

-215 0 obj

-<< /Dest [ 152 0 R

- /Fit ]

- /Next 216 0 R

- /Parent 201 0 R

- /Prev 214 0 R

- /Title (8.11. Compass) >>

-endobj

-% 'Outline.8.11': class OutlineEntryObject 

-216 0 obj

-<< /Dest [ 152 0 R

- /Fit ]

- /Next 217 0 R

- /Parent 201 0 R

- /Prev 215 0 R

- /Title (8.12. GPS) >>

-endobj

-% 'Outline.8.12': class OutlineEntryObject 

-217 0 obj

-<< /Dest [ 152 0 R

- /Fit ]

- /Next 218 0 R

- /Parent 201 0 R

- /Prev 216 0 R

- /Title (8.13. Telephony) >>

-endobj

-% 'Outline.8.13': class OutlineEntryObject 

-218 0 obj

-<< /Dest [ 152 0 R

- /Fit ]

- /Next 219 0 R

- /Parent 201 0 R

- /Prev 217 0 R

- /Title (8.14. Memory and Storage) >>

-endobj

-% 'Outline.8.14': class OutlineEntryObject 

-219 0 obj

-<< /Dest [ 154 0 R

- /Fit ]

- /Next 220 0 R

- /Parent 201 0 R

- /Prev 218 0 R

- /Title (8.15. Application Shared Storage) >>

-endobj

-% 'Outline.8.15': class OutlineEntryObject 

-220 0 obj

-<< /Dest [ 154 0 R

- /Fit ]

- /Parent 201 0 R

- /Prev 219 0 R

- /Title (8.16. Bluetooth) >>

-endobj

-% 'Outline.2.9': class OutlineEntryObject 

-221 0 obj

-<< /Dest [ 154 0 R

- /Fit ]

- /Next 222 0 R

- /Parent 167 0 R

- /Prev 201 0 R

- /Title (9. Performance Compatibility) >>

-endobj

-% 'Outline.2.10': class OutlineEntryObject 

-222 0 obj

-<< /Count -4

- /Dest [ 159 0 R

- /Fit ]

- /First 223 0 R

- /Last 226 0 R

- /Next 227 0 R

- /Parent 167 0 R

- /Prev 221 0 R

- /Title (10. Security Model Compatibility) >>

-endobj

-% 'Outline.10.0': class OutlineEntryObject 

-223 0 obj

-<< /Dest [ 159 0 R

- /Fit ]

- /Next 224 0 R

- /Parent 222 0 R

- /Title (10.1. Permissions) >>

-endobj

-% 'Outline.10.1': class OutlineEntryObject 

-224 0 obj

-<< /Dest [ 159 0 R

- /Fit ]

- /Next 225 0 R

- /Parent 222 0 R

- /Prev 223 0 R

- /Title (10.2. UID and Process Isolation) >>

-endobj

-% 'Outline.10.2': class OutlineEntryObject 

-225 0 obj

-<< /Dest [ 159 0 R

- /Fit ]

- /Next 226 0 R

- /Parent 222 0 R

- /Prev 224 0 R

- /Title (10.3. Filesystem Permissions) >>

-endobj

-% 'Outline.10.3': class OutlineEntryObject 

-226 0 obj

-<< /Dest [ 159 0 R

- /Fit ]

- /Parent 222 0 R

- /Prev 225 0 R

- /Title (10.4. Alternate Execution Environments) >>

-endobj

-% 'Outline.2.11': class OutlineEntryObject 

-227 0 obj

-<< /Dest [ 162 0 R

- /Fit ]

- /Next 228 0 R

- /Parent 167 0 R

- /Prev 222 0 R

- /Title (11. Compatibility Test Suite) >>

-endobj

-% 'Outline.2.12': class OutlineEntryObject 

-228 0 obj

-<< /Dest [ 162 0 R

- /Fit ]

- /Next 229 0 R

- /Parent 167 0 R

- /Prev 227 0 R

- /Title (12. Updatable Software) >>

-endobj

-% 'Outline.2.13': class OutlineEntryObject 

-229 0 obj

-<< /Dest [ 162 0 R

- /Fit ]

- /Next 230 0 R

- /Parent 167 0 R

- /Prev 228 0 R

- /Title (13. Contact Us) >>

-endobj

-% 'Outline.2.14': class OutlineEntryObject 

-230 0 obj

-<< /Count -5

- /Dest [ 163 0 R

- /Fit ]

- /First 231 0 R

- /Last 235 0 R

- /Parent 167 0 R

- /Prev 229 0 R

- /Title (Appendix A - Bluetooth Test Procedure) >>

-endobj

-% 'Outline.11.0': class OutlineEntryObject 

-231 0 obj

-<< /Dest [ 163 0 R

- /Fit ]

- /Next 232 0 R

- /Parent 230 0 R

- /Title (Setup and Installation) >>

-endobj

-% 'Outline.11.1': class OutlineEntryObject 

-232 0 obj

-<< /Dest [ 163 0 R

- /Fit ]

- /Next 233 0 R

- /Parent 230 0 R

- /Prev 231 0 R

- /Title (Test Bluetooth Control by Apps) >>

-endobj

-% 'Outline.11.2': class OutlineEntryObject 

-233 0 obj

-<< /Dest [ 163 0 R

- /Fit ]

- /Next 234 0 R

- /Parent 230 0 R

- /Prev 232 0 R

- /Title (Test Pairing and Communication) >>

-endobj

-% 'Outline.11.3': class OutlineEntryObject 

-234 0 obj

-<< /Dest [ 163 0 R

- /Fit ]

- /Next 235 0 R

- /Parent 230 0 R

- /Prev 233 0 R

- /Title (Test Pairing and Communication in the Reverse Direction) >>

-endobj

-% 'Outline.11.4': class OutlineEntryObject 

-235 0 obj

-<< /Dest [ 163 0 R

- /Fit ]

- /Parent 230 0 R

- /Prev 234 0 R

- /Title (Test Re-Launches) >>

-endobj

-% 'R236': class PDFPages 

-236 0 obj

-% page tree

-<< /Count 20

- /Kids [ 47 0 R

- 69 0 R

- 97 0 R

- 109 0 R

- 110 0 R

- 111 0 R

- 113 0 R

- 117 0 R

- 125 0 R

- 133 0 R

- 134 0 R

- 135 0 R

- 141 0 R

- 146 0 R

- 148 0 R

- 152 0 R

- 154 0 R

- 159 0 R

- 162 0 R

- 163 0 R ]

- /Type /Pages >>

-endobj

-% 'R237': class PDFStream 

-237 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 1796 >>

-stream

-Gatm<9lo&I&A<G1rrL0IdieGHa/r+lUmX9#'<=\8]tbm=USS5"U?p":c[qBl;R&e!c<0,cOB;Lpn*Sj5-mJ.Ng],5*TpIS-i\a/hU"LD_JH_KJTKd%d-XYUMh%#bQ0nrU52M:`<4f>o93$k(MM=+,7?rjjG.)f=5d;4Xf`UFc-pFE+CqB\`1k8*8!r<:IF6aL.SeN^LWYIfRNLRUm+*7K:_5O`/si]$8>na."-7'b,+`G=e*s4D+g32M;i,Z?I23h,<,8?[^oSB^4c_,GGngH@[]+ii$W#qkc_e'?#4d^-7JDskAc0;%tD4Q,d]^G<jOKYJ3/P!#s1b&PT&joE57p_fe2d6F[)B2&]k@H`t^Y#Jo69kBc3kZlG.D&QpM&V(@7bK(qi]iatL]5aJ"S=\7"P[GXjQtD1qR#oMiM[E`13XL2,!A&S/=5TNNgbe5%-7NDWP2FV*CDW7*DsIJ"Z`6@ZJ2M@nXkg*3EU1./]N`Y,;tOSl]BZ,GiGCZ"^KsaHA0s%W-Eq'OLa<!4>Q?>6C$.Kq`(+GF1%2X)GCQKm_,39!N9`sbbrQ\?#mhkk+JO9$!>UpZHjaHd*+WdP<=@pKVDO!FSLL?7bujGbK]tXH,fBE`HXJBPR#d/)#<To?P/c0q;sZ;L!;?@fL=%B^[Mr<3p"26ad?U7]GKT.emJm8Y$nRq@@ggD4M$T%lmq3uD?Lf.s/ItFt>p(9$mo6D)\jU1tDhgA1*^\E]0uRl`U]Q4;,nV:8"/]"[FQjW1FYTOMAK:K4#3$g&>c/!0J?d/J0#H<0isM/YC:?%c2=Q$GaNW]6Eau*^>q2b<]$YEDKXWB6>4cpp_"B,6&qU8&C`!!P$8W+E^D`"nR.`6>)j,dsSdZ9/;Ol03`03Ik$Ah4J.,Nf@MNb7QoPafiYH64:Cpg9:TtJZf&IQ=:mEtiNX.;'.Pk]O!HO@Cjd]?Mb;DPqN!3S>_b!N5"a#?!&)Bs,=_jUZ2AY>\YZoedDP^r"#arVk'&BskKg9!P>6Qr%.o_"ESOCohB55XjacmeH$!TY,sgR.nma&;\CJ=q9JqX1jiZBh#)cp0cXTUa%+PRh>bK0#/P:tPJ=f8'Za"kKu3_uTI==]A`&1E.4XMf<Bo\4qdGqF99ZlVr!8TLic9.ShK_T8dVEYfJn+gmD7eZWMt0hjuf6e(bpDHSU;Jj,WF<+^:Tnm8%0;7uR6\'.MVtT'qC(5jAg5W!qAt)Uh&b+9OC%Kqd>FKb4cF,K7U'`]]bs6VP&;;tVs<Wq"q(B"fk/PN2Vp5q?$l9FV,AT38+VP;>Ok>km%C79.l1XWHidVWl)F)mS@)O`H#::skt$<"BmPN<b5-$N34FVE.3e(PP'UcF)+Y,k:;e(G5ktZ?f6tV(2IG$WA^qB)pb6\#C:Pe>6#<QP%*pmJr!l,X:E$i1QGK!aSi#0nDdX7#r(?C=4/&[h1370q)'u:[58\Be3)SYc\-,`lI],p^76gD%Qja:%L?X5KKRi&B85m_3l:hU<l(4Wp.(.eWg:u!ZA=7<,O+\Ik"NSUtp,h',c3p\.;9mDm@;a3-efDo*e07DUtj\76(H\O6m5L'(*lKLqD]?rdH,m5"j=0ir=Z^%Ni^!lIO:b)HE+hQ<dJg*U2?12K$)AqcW\8%a]sMR;lC!(;f[SW.:?`\gj6$27hMC<n9,?J7^q?*jF7pV+:/l#=ep^S+Tl`:HNQV3BMl/k!.mZcurcGl#5/h3%tKn);8A[pP8@#2N?N,2fLO^2%0*;SaaOoJG^2P&'jCM#r\$^O+[,VS[GFuRkV.@e!'7cBaW\~>endstream

-endobj

-% 'R238': class PDFStream 

-238 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 946 >>

-stream

-Gat=)mn_[l&H.X=s5?.ZPNM\(3)2ZSp`ZGa?jYQMOID>p`$KDSrqF%71hdgaVJ9(!Q[:pRq7UDD:-Z,cGm//O_N.UuoH:gL$s3Mo0/uNN#ESSpf5qUTk:nCkZP?"*Np@OGgdb/UoAkF&`P.FE;(*Qh!0PZA>/.*dRHR7`qeKg5`VU#,?V%rblIY`T>eaOYh+WW2\!Gcd<Zcg`9b(q-knPEYMb$/<+_Me6&1JdUM<'g`>%C>(pP6Ni0Fh5NlO*cgcY4FfA-<bVk4'0adeIL;I:NI0IG9rfD&.*sMuZ5kp='*fc2sWpqToLI@,GT6Y`Obd14fpZhe2"+),X9R)M*33he74q18_-:2Kkh#mhMfC%k4Q?NQnHk[2Y=&S?4U'cp1[Rj36C4"10h>=NKDI3O3B:e,a?-Ch?9DQe>:lb=nUFGYlT7"Vice;`(LRD%"CPal$'bBAGZaoumR\1\dA<Wl\M/OY\u@F"5c)8f?/=JWNLfC7_h.rK%c0fi@$rl8(tF1\5s!0:`(DK*t]DAdMU'KuE1%Rjf_\T[)`lZH-+FPMBf1qV2EGKVNR]N7R-?)t8DQDL3X+dG;&d\W(&k(EHkZFOUJO%:(+4)2KC#U+6r4N)<^hl`O3.Vjf0:F1%`t.;k'L0['K/1Z1:q-7W@ZPQr"NWld'_pftohp6t:dRu>B2pTuqfYTV`IjZFH`\!P9HLeRZW9J/RG\f<%;$JP*QMRFgNZm-qh!l$`[[L0Z^FP[neH)jRgX:Zierj3fK>II"$T.!:B5:jp[lHCY9Gp*Ap'q`uO7AK0@e`ND;7]@'>rn`gnTFUOSH-TJ:MG<Nc%_<V8M)sB\n9Uku@0;(RRrtV<3&>2q26?IDG2=-.(55UI:UHnDHqLm(D5eZ*GNP=[GULAs.b,lh%G^;\$b<pMVo9#`_Y:mN<u\JfSM&bLoaY,4EpsTNLkcQ~>endstream

-endobj

-% 'R239': class PDFStream 

-239 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3247 >>

-stream

-GauHN>BA<(&q6a9s.ILu/=]>nqi*OBQa9Z-/kb=X&'HCo@r#\`Yq9J-)013)BuqEW4dj6[93_U/Htg"&YP!%IC^Z[#a3t"-)+&7RaEV>@b=8fAZ<Zajfa%08m.n!VqT!>gpKV7`3:PjohK]K7=dsIl0HJ@1d/*PoY\LQJ"ZZ-;1s:tl@CQa>eVF8"e<$R,;_HH*k9ZSqK4b/3U]7<C^2FM\giXsJI&mR"`#fi@0jR#TkE'7bgNS8'V[30.d!0+HbJD>9cS5g&pUMi#;T4ghr"1mb55J]@,NhWQS#r&C$'2-Gjq?&]I[<H#J`M]_P('T:8_#,0Jk2,+6D?J/)3p$>LmJE"d=R]5j)^Ma<31>I*p2abQtHSbC_#X[9Wlb.4=N9`&:fPVA)ING@*gp8n,*%OkKe/_QiI@.nZhC/Z4ni22Rb&3FM5k;K]/LW#Z=V.MYI6Y.!R?slea,RqR?P\;9*-7d^20ig`]_28sAYip.7L\^ea6N1NI\j8=lI^?DoP%klh.Z$=H,]p&<Rr4!Z*,5g!U>mu)iO=ABMuf&q6qD9Ig`htgeF9f7LJ<:HoHWOP>sH`<UkIh1JZp5\4u.+DT3"hL:lm"Y!U,3U5E[k+D4AOWVOQ^/F!Wp$1$!ZiNm4Mb#;_p=M,m!hDHMnf<eH,9%tgp7&Ef;,3si!ZLoOPjiLmjkG$LRVJS]+L'0hfhImhsmO'a6FuFaC'U<r1_:6]U0bK_PbqGB!pfRJK+Y=O"C3%ZkjDGC@m1l&9>u[T^A@?a8&8#VObPU(LDKsJj=[[gtE9;NQk"m55s_k#3#sSGu%e*OpVqmgR*HE^rTD#n'E_&,r5_U-/9*1<MIAe^M@=dW:RYQ\5Mf!h(f$V/:`jFVW.cuF2L&4NQ'L(Z#b)=+4,!hYk2=(!&rComXUCGDU:DA[JVbb[N:K;X!"-CRMc?-#>J6UneQ=7X[s(PF_MNIIE#k5*k8A?V!.-&\$PD(0+k`@/1#%>O?*LibNQsghNdW;5ck_Sd41,Z@OVJL1"]MU#jc=ugC=3,77t,ViZA?KdBsa;oVppOcr`Jt&aXi^!G8SS&*a9'\dW';'$VqtnIXchbKZEs8Z2k:10_M=-.>RTl3[3I!IF47l^NOt0I"e)(]+f7p['lclmTg;W'.O-B87K#(!7I3O'bqlQlF[]2,MsoD?E-h)5bkj2J:3j=26!7TS0!K(_@4g8N*5$Ki7:b?69G?<F9\n%7O97CV'?KV=#qCoEQ%-C!r$KA+WO.#_SG-#c1lU"Ji@COD6Ol%U#[#;58?H:b)*e<CZ8c">ek.fbj@(GM99i<;qTg4^Y(1J3XN<O<p8modpc5$HgNIq')DG?S8>[Su!^E5dg=d?:$_(FA_Vq*Yb_dI7Q'gZ;Lk7i)t80TpXnSF]ZBVWFR_7^,qU<93S,:#"Nh4,q2M7LR`>0;b]k]&njqfeAZU:#nrf]67d!*Y>Ra,Z0Y&tRR&em=61oV=Nsh\.[bH,irEN)((1mZ.Epe")gi[!IhoYi\.,r:V+n/7/VC^%mKl-iXn?U2!4S?hVqb(=#oLD:n4V*i!UYX2A\"8QV:%;+pH^Mc,ln<fRAd%.A5r^>[Tf(R%eBpCRO^'>qP-SabTu*K^!iJt#qUZ'h6DRq6L!l5e&apZgTJNCr]*i/+*[0iopUU/'baka[iAJ%[I"*6f>^k#3Sa!*&$#,@)n'Ig5&UfkoKh$qiYC10[[!)r/&PJmf9fFG^sIiRjW[`TPmK!kaRMNNrZioH_^KknKtAHh(;Lu]$fq9Z(.dPm,T6F\Wj>o!f+2:qa"Jd!o"uA(HE(F.BXrWNQ-@\Hcj)q->A$=\)+G]KFl`:?4(&BkJUM/*pS@3Z0HZ@X(ZB)$FbcZu6-GdiIQ1qqh=,75IX9m#mW9di;h@af%jAU=)^p%U[fqmkOSB%.\Mu:G?%4?kp-uuCJ0V6.^'@+&q7pnMq\(P;-A3_=7IXF;S$U+)P-Y=V't@qZ+39/r9L=Cs9SBAJVRHaLT]&QqCgc<*^St>(S<!_($uPN"g`[,&V!Z!SqSg=&ePE;U2qOX4!C0Y`3dJG?qaet<#P83s2Et<[$t`MDBf*7.'d;%u-inuG1s!^'(Oap$/qpV7rgM,NR)E@qr%BI.:n0l$F_^-l2N>`=@JJT>1K>'D"po6CCmr'6h1PR[4'-.lg[*r*n$+?j%K511WU"Y'cr_],Y=MLr,HaYS>[FOXH"1C3m]lm,meAi`%aA^V,]bW[%jU4EeK1,lQ4/<<$V>9i%Jl!JZ@ZE],DfJQVb#dr[_T(-4!6*Cm=05d8M8NtBqiii;#[iHk#KHg@6f6j.cIgj4&8kqg-K)V<A?KlDF_&&\gY:sA4bm6U9Ue%!d.tY*@-T$IFG+DL+S(h2YequJh?kRb@-occ9tiR%C`<%8`Y&k,Q_AKn^Z]68q,rD]*EEd/!:]"<g4H32?eB53GOME^^)@R<804H]donI_!E]e-nV'#NMI#*gE!DOLf&bWQ^f^-W[ZW^e4u=c8D7(S0m3UAFta@E,MHE:"pfRMjk>f6U[dSl1aUc#hc9fl+XLU&XuGel7Hj5*T8k'^g$Ylm:I:+(-RBJ:<@k26*lf2;ku>c:\5a#DloG#U"M)m)!bo9DUl8B:lZ4Itb#?J_.&;gU@Unn\ARq6.AX_S<fsS&&p:$U+&3C,54-(_!`ecZ3p$_,]FLjE<Z/[jK_I0\)1>Fqr2Kmn?$'C9cs83ja@(-huJI]76l4]p[a_4S.5tXtX'Fn$FGI;>USNoa(:;b(j-Og\'Gs*o*+^%T<I6k.TqCBO^d28A9$RJ=&$D+nFpc/h*hjc5R%/8(KAE'inDFT',n-"[-F8I_!Eh;uKZ-h/>M@brpU!k6?]L5>SM6ARnan4>koaE^>f^o+)0YZ=MU;UL/n&5)<=G3g4(Ch&Na7&e_?RAJd:5U!t:`gWAPn]Rd3;fmGY@h!;GsX@XkpaL2\5QrOHaoF:D&d`.S5^g9s3)i%YK^hb:!"itA(DK3&$D;r./a9@ChjqQL)]qbFcH@5'r_,UdJL60g#2Z8^!iUekg*X%DpBP0RC7GD(XT*TP[j%l0;*0+k684+"kYlorVs^.oiq%H1jVZKlJVmB^r1l/UW6EOcmq^b/u-LH:\FV6PM6_sM2?HqdGA)Ns6V68YB9L9H]lu\;=IJeR?)Z,*7E#Q>Z,n'G1a76(U]BDU)r6;?:&G5r%d8+[iOF@LR9d6VL<Vs[b0k9a09UR>FmM#Z78ZHhI(O6JRP<dp^jIPo4S(.k`(;@~>endstream

-endobj

-% 'R240': class PDFStream 

-240 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2935 >>

-stream

-Gau`U=``=W&q3VVrW?nAf!?Yg]ID*013U+343hAGmC[9/JKc6F1F/XoUceYNgC<WPAKCCTDsU(1*8QVBYJ4s?/ofgieUOJ#+n(b.p;&&X8![rM"uIIG?c^dgm@/%jf56h/!V&8jLTkDFmZOR(NmZML>q[IIDr6(E[o4!iGncEQ6!Tbn1rr1H0b%!VUOV>V\HmX0b<O)=mooU,qY+4kiO=5F@P9]Nc!_8:bmUnS;h&oK_MbA$%*c)<BLI@Ga4iO!ELhnT3$-HiS:b)NnH1c;]Gnr6c+kUbMU!cF7^0rWbNt1OOtr5QB=+gd:+s03k/mQZX!CKk:IL[djQ"rg<Gd5Sbqc_;\_&Z/gWc]GAs09aA7`nqc0,R)cA!P-VCM-p/5sa5"!QBV%ijVp_@qt;O6=I!n2N7\^KYq@M9PB#alq&B_.<,ld'VeE7blJ1&hW6Zri<tK4sDU#Fi%S@KH:Tcf$I&Yk(]-n8<O<'1L;CC,AN^Dm):/YjBq:V=Zmulo2ggoid>R:OSXlDcGTaCK)"G;o?K=Zgp"/O]XfKK?1OE*Jh+f/WCZ4Ha+`ifjr'Xg@LH-n;iU;7__].D]<>4^I-5=AU4=l5@A&"?IZGIpT@^.WU=t]QT0GLuF&oEI)<BbKaXs!^\gS3e13%S!kJh/%cZ8L-O+[3oV2sCD%F0)oh@m.@eV5LWQr]rI.8pB5K4I[H*Qq!n,tk9Yek*a%mXK"$$J\/*<:QnWDD(rHdA_0,o:2m!=k@4g6,Fm-C]Wad'i1$`<'kNbj]]_L_$0<GL6;m4r(XT5^;r]G(U-Q9U#]]Td,HlZ@-$,JiWks_,!Uup$VOM_a'?;gCL2$5'l6?._tbTWTVpqf\/AAiX^ii>",LnJ(dJ:?-ggD3WsIobJJ-m_'&8c%eODeZ_q^8LnBO1r=LosS\MI844BH&D`=CI3k1$JF'*TUp?K5"j&j)s8@7ah^Rfu>LkXBI\2Na8]+n,AQbTZUH7ls*dPWTlZV`=pbjZ>c8G^r!p^_#I:7,WYdR.;/J*cZUcL`O:XVrU=K/$)q7m/ofaUM&`8^h=iKJ'>$&Bn7<ddg@hbL(.%9.&Q$%,UH8XL;]l7rG\`ed>gPn,\/2VSV9[0!@0\lq*BQnIaF"/Wm_DKPfChcZ3&YjFg!8qi9i5UGAK-2[bDd0VEp&C.9U,#5]tIA/bi-R2@3PK.Pc<lp*&3N.(PTi92cd"'/\a06"\$L.?bka1(;)m!-$5,$(0:R*MqAFaj*;=/(`/,!,=I7NXH./?EtT,&RK9petnTTfDiQfC?7]"3]"T*9r<<=JV%j?1>1-Kn.FT%r"7k1_B>;n++i7@nY3jC6u?TVfF3o0;KCS<@E:j3m1$qrXM&8_DHH&;$$Csc.s)=Rbd!1nkf4u?MuKmrQV"pOInj(\g"Ft!$2Y+!*K<Qim^NrWL(ZK\UUud2lRgep%8V$n+2HcNW`eQ:aC^3>OBDUr7D[/OdK-M'i7A?m!>s4_CJs^g1,g-eR(F)@39Gg0!0MD,)BE!ZHedM^m:2]AG>eW*j##OoojIHg+W"+5C!]m&/-g#9:%0-))QcSa>AHFPN<?SWr+E3AqU0Ne',#Cc-E-qbT3[!a4;"^54BkX+9G;Kia.Ifd&lJ-jqdtnOEsT'pOqhlMS)UomdBu@i5j-5Y@b*Cu#CJ`jNKL+</s`?$MCf*AJ#-sc26DbiZBVPT*.cYu06,T5k!TS5hX1:dT\>OcT@>u%Yb/aFILr,/pA:(mlli^Z["h?tC'2AlqPL6[^u(?IB6#:&KcZ>Mis>hmHr0?b9goAnmE>7",m_aG=Q?ZT6bpn"^9X6.XsP08[f&YDoE^<j4AR4R"pdNRZUelI9"Kb04f,*]2.Y?HVq=XC"-Q'LiBXS[nVJU/mR$8HUM2qRnnF#&VYPPb177'<dEZGu//U)3_,A%%Ho--CjJ)*id:55WZOb(46Yp1C5f'oN$:\7_62!LZ\j8&p6b6BQ"R_JYdo>q[Tl(iSA%J2F1t=A7"A[M%XcSePCP+Yg`u`A!(/lLr97X\"US]m@53m,SE4<AhVi"IKTLb2@U1-.o3k2W/loHET$M?@B%o)<hA'i.@Q)XG"Z#!c[80KaSO2m_+qfG#nigu#d8?)>@cSP,PJ]<IR9ZEP-V"mF*H#p2@L2h-,([W`6(II_,%IJf9-*LXDQ5VXc1+qm%"n`k&Ym6^OgoK6cqr"sS\i4W&W-2IQTMp)$dQCCl'_7uHj:1QRAS,laKd)e0`O$Wc,DjZ_VR$Pa=7hGiH9lW&=',qZ5_]TRR-Qd\]-OSbjJ5\(=kQ(F29ut:ZHD]h"jMa$WbfI$r#WgrY39Y"@]G<2#\qjh]mY+OO)L%,DD,f%0kYl[\:N25[#WYGR!f5o=n162chd(5h<X*Z=qj4!1.P,"k>EfMQWdZQNB<4<L9G&%FBb38``]-<#;9c<M(b7MA>6hGIC]1KlR2PjlBePq2cl(2TC3kH`]e/*q0T7dd:bgtmZoqYTXTVd_9kn.E7\bQg&]gj=2qY=htd5X\`CV]XXbU,B>ShrbGe2FIHOS8,h"bhZES&`eslc9lbnB%Ma=5G<X\%C#W=]s5=sjg_/r0p==\j[V+sOrpuDAU-0t)D'TAn!FmtIh9IRS,18'LB&9LcD;@&cO#S5aUE1'Gj^%ZuZS^3stI'DI"TIZCs/m/:UPLfoZ4MOta(2B_$&t,B.Jk,fsIf'9f']G[Om/MtmL]5!)b_$sK:3Fj9:=+C>fiDiX(#=IR&6ClI=.^&"q=^J_AnGtBMheMpFt<6ef?UfC^!I^r&Jm>]H[GHDFt7EhrLO+h4>)!!8Zg6-c?aFF-O^e-m1N'%4#>[@S^a5hT+>ZVHK)G(>h@70pH6gT0AZBjO]*<f4lW:2k$r$e1>aIq@*hXMCSEn'46IU2Z?Q9m>&]buE:lJS=gRS9USg*ro%])UD:Y*`hiP<crWagtZ<.~>endstream

-endobj

-% 'R241': class PDFStream 

-241 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3185 >>

-stream

-Gb!SnlVH9V(B7^?s2,,u%r_]4+)sXB7SDrW<M1;ZPu^5_1A3!`efL_1Rl'lCh_Sbh4FZ$:E8(bs3-0Q33TloX(_*J6XmuF.+/*m/1qM8"VPDZ[Bk(_5<Zf_:p%HX3r_H2Gjr!?o1,XW\0Wq**/K7WcWhJZ(g:r%<;Dk.]WgljY[.9?V.6n+59]K),R7``oLDt>OStOWkB_?;Hr=AnrC\I6ffpHhJ3M5Rt=.P3+C.HlcUoE,e?#h6$24+mfFf&jKoXsN!-`UJ?R/PgFL_BuqUBFPA(V?96r&J-@0CE_C`U3Qar+:Di]):4?Z"0/<R`mI,C+@5FJCQm`=I_iJ1&<kYM4Q7O`lR!@'GL+`5g^>l#=#aW7]sMtY`DA/6PuQcL00R22B5&-fQPlLSOMZ8Oi7b5CJM:t0EaT.E/),946Be78W46Ecj9NHa<bL=q\D1"Z/o)K*YtL$60MO8JlZ*BVY8hn^0dSg]+oY1.)]aQ`=;qdEnp=+1KB7sVoZ?;>`eVh\K2EDU&\W]+Q*X,JhBoBfX\HPZ%9i*d'RsNGQ86SG)6=n#c%@L[C7G08aJZ.83f<Iim>\XG!McUn0!T(fg+=40F374R(Yp#2\oqA0YnpR'[g*Z\4#I/G_%F@+TXRt20M>.H&;Z$Lc7qX;`+>MLrA1e]Sh:C&2u(lNPqF/ChD,"^P`SX7Nn7gLZ>/)LD-LkIe*\#a-nc/opU8PGIb@)<e]8ChXTFpAubg"l<S=B%NQJRc"/R1.D3&TB?r>gk?1)[9p)-N\1WK2>sPC48=d^r8Al'=:`%P9Xng!;%$?52EL7W9=>N(_KsY<tUY!WYnT4uMo[hCZjlPm6/0C>`X781_I\J?]p6#_X/3hD!]OBNF^U)#?'IJ'7&bj&E*!PDfkNA&p`0LY-&_RLJm/ZOj^klpZGmi^VA2TVU)H725gthl4_-E!CokZ,eH1(tgB](na9;&LCZo@oS-'5;<5?J72ljJSbB:bq6Y3(3dhTlGWJh_VgIFnM/j23KZm;CpFB0DaBC'Snl0Y'%0ETHt`67.""<59)VCs;%unq=5X56kna0b<^"V=!"2-"ruB$]2b7e<oNY3\b6MS"SAkgCNo;Vrco]eS_Esl=3PXE(S`(QE_+2Cp])F<(1A*qG5hodmh2%2^[tE(jh$cgIm_u8@Q$c#i5N(p\EiLZ?Nck5bR-Y9)B6]j%6Nd4>5>7,2f,uo:XW?nF3aYNinAcT]:Mb*:q_OiFE(PT9a\&TAQi8%nZ(XT)$+jiT(%]ZX_g3rc*C4T@+OTJ=89$_R97+;[Qf9I^jkeiPnENiAl5o$&u]&XJ"m][;6qGr'O@p,CUJKmHjS$Y3;YVo)3Yk1(85I_%%q)IZ-4\#h/#($U2p@X\c,rE,b"HG;(7>RCU90@Y^R_5f1gP=U26!bDu?(BX(#-P[BeW/'Zu^gG#q=bQ<j,a5@9A*qQ?se1$"l7-/IfI%GoFcK->W-eZq])f9$&9WSfr:(`J&(oNlS-4ZuY")(0N')oe[PsDd#LUm[uBX!(gY!cU)5Q#\KhpE:`bEpf;_I9ihb`p4jeMcJU5U0uLfdW7N_'2.ERk.OlAGqs4N'9+-TDcn]Zl!s%d)Si@:Ut-Mq-Kk<2\`O8==4V[2'50O_+GmlE9iZ\m+ZBM5GlJ&G-%o]IRVcHk3j"I>@,7LA4n:\d!-#.\bs;Pq%ujRA@%:ZIR,8tSX:X^9A*<Im*[K,M=qcQ5_F3tNpjqK-MjcK$0dmUF6!2([;g832'6unX3J//?ghsLDAXslZlP0*/ni428?aHmhtXj]$()JrT#IEBQnT\;0=f3,B>G@,ZPn;/&M30#&*^X5E2b>X<QP$>]WGu76K7V"X_&&WR*Ur(ksfetiYqh%=UPN%"Zo2tF+e0]K0"^n(?a(]7p.r,,V@]G;Q`HE?lN$ZKeD,aJ-!S[h\&&^GgFU8b?!i0d]2lEB<+(=rEUs9oF+@C=li'KlC1m;n9sV]ign'F\2_Q^Q'Y:;[@o`A+'\!tGo_\<N$9q3d[M3?ginX9@`#9JY]IqtDb'@NUj,AoQQ&Mb_u9mqfNTnb&^h>UOEZq,L=l$P.jK:0:/0&AIGnKaDMDH_]tB>-:P4:8Lah)VVG3!+UdZuP/:I4r/>$PWS%n0/#/*)s?iL\R/hi$N6O.Jj?E/g.XtiS((AF\79\>jm?(8"Yig%dpl,JP:F9Fu_6ehkq$%r&N]7;kG?*_G,[NWZMQ#cSi41,/*o[A`2CtVF&`-Omrf5nl:CnN"HTQ(BC'F*r=T-^0php7XA&h:N?e:'*N$J+P+IK.A3gL[TcUW$4k\btL*0bCEG$@KQcYVBgeHpQ*8fK4eHp94&0?:Vc:3<'EgS?T1G.fWh(@):rU,s5?pr(P=So$Z;\pMAVaa.1"q(MOddO>/(95-APY!a`oQ!pHLf!>NP"aJ]?"^VspX:'.d^=[It+N@rh.e6rerOT8AfFk.7oA8?LEY>\m0#aIfc`2FEi!SQ@IpbH$]-O3Tsj=r-XZB(!r<$U(1%;3c`<=*g!'U[$!ee+HJL&E5q'%Ibm2A?7L^Hq@#Zt,4#W(IUU.\Xf$7Vf#dm'MMP8:[^n3bo'rPo4@u:8bu.&LrWPM,>d\n84QBLWX/I+p"\V7#X_dnZgK1C*YmC@4W%a.\Y.V!`OBa3hk*&Y^_<uU0;$UMW0.XZ9Xa**'I/7q=;VfJ4Y$SDN.hhArc#\.UPbg"te.hLY$A]H?l(iB^i]-j25h&nPc`pN"6`O\XtkkT'EZs@aLd%A,(!D?.+n0.ab?hVEnaZ7lae+:K8;P:>S83.6u=G&IKMp0:A7kf4cc1h5H=,1.$PeU+Jl9,$F)7UYp##A_&1M)sE6F^:<Y98l@0Q,sL:)!K_c/f3F2'Rq;j>Zk?_GZ\0r$]$]h%%D=kW#\`kD&]';nid,U7,E4aUh".%P1hnR3V-,$5)Ke.gN>\r?jVBM=AbY[NB5[4H8n5cFA3l?t(hBM0Z,/RgR[#sZNSjCI(hBM0Ysf*NV@pR'0C%YAGTrMiIAp&q?ul)--Y,e=2D4$D2_m+5Y0eMAgSB[7Z>gahd?FaVdAuf;8SY/911QMd%<T=C(n$-_!q4c2/Q][W9(_2T?>Cu"/R%r_@aoEu[-$"]F;qo1&`:W=RD$`*#'t`d<#Cj<OsEBW2,ZdM)RM2_>"'77,ac`ChrILaa=`N/2T_lXEXod2o+1QFE6A~>endstream

-endobj

-% 'R242': class PDFStream 

-242 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2279 >>

-stream

-Gb!;e=`<%S&:Q:Zs"NrcAd_*Ja_0<T2a+V%VJ-u&('X7q9=2r5,#sf3li$K<6QNlS3SP<(P,>\+A%oK5r5OLJr:/V#0EHDYKKn>gi!1qUKAZCV0ROD7LJOOiF2*/Y][MTXn9Q+FZhE10;nm_Bp!-`id"2#A-b-0`D:J1Rh$si,n9kgSj8-,mcg/rDBC88ci2$63%)9[KRG7\(qu'QEpp;JD051ANBnC29>$g-p4Er5*QPM2QOtnOW+r5?ALRdZsG5K!T=2s&<f-G:*H*',b*6:Z$&OC$=.0(3h$<T8&I)[=1b4'Xq)QG?JGm"2(9JjUb&k:[%3L@P01_ud3Aipo*K`T(Y2^IB0e7+)HC]5n!RO;tTc!t@*2;H8JH)WdQRcR_A;J.A#at-fsI6GNN@&g$N3+oV6<G*N:+;,BF(+cqD\U[.(XO./Z!@:;s_kl0][+4;<Y4E*#X_&d:^a,-o)'FSMRLk^<CT_C.\n!/LTbn.?`une+2's[sQEc6[D'i+f+er;?pnc]s5cD%Z2'KCWRgIk\N;kje^03MMd#;&`S%<7I_W?1V]j5[r/3TYJUACSgrVE8VPM/7qI(tEJ&((P1QVWUkS0__CY@NHFO+h],PZ]b.l_uTVM6Apa'24--@PfW)B1&!u/EXMM+oWi67\:CkA;DQR.<XBu,VpWt1hI+67UBI:.-\Pu^?/BF:2/X,n--]4-_\#Dj-k*>?nNu;5s?Xc#mTZ'-b1Y(Xn^1epX^kn:Gp17inuHs%IOckO$sl%/m8]W[^&7<W\+t3TM7Lon:h#/4!SlW)Ao6GMQh;Z&\&%/Q.B$u=LStk&:B"JDFGPK8@:&]-5i#4dKgkaVG(LJ=L/bIIk&<>'Z;C[3P\%rmS>r5.2^&SNn'X4f:'KK4(T;Z1Z_jX"_HJVKs<aC)umQ7U/$J3\c^H",V&l?#uH=bmu*AK^XmOIO\iYiQ0Y?F\mBAt$Q$&TDsO08#=f*nV,hZTFa]eSk3tkKoqKO]os+@a]*l$e$oQ85n59LA4U[9->VGU5d&].RG5qJ"@2?7?IA":!Z,Z(pKSd3&cu*fuJbk\O=AdYa41<o,`u:dm@l7`c2.nt?f#QOVZRgF0@,J:aL=67Meb6[=b2^Hup%1bUH1;eqP@'X[hOUTmVDmuT\p2@qI%08N<m&N#mdc!3I[(131]`p3.sL_Yi>kWBXNRq,<SD=ALqD$>f*)9(o(l\5]D9.ScHjds1i6K<A(ZHLq4!Sa?NXtH-Dkb_nePO;O#2i$d`&=Pd!k:/;19e)Tg$Weq6;9-CMka#EW)W/e`e,hcsEbH7\;]tYbM:1L*b^D=$c^,7.Pup[/7?6&2K3NLr50cTe]R:Wm)8f'j!t)FDf,_dp]LI5W$o*KI\s:?=#WaR'g+V1:uVo)D%693WDie"-4@^YQZ$oCh.L1[jaJ.ZC)rg:olY:d',RkNV^jmd.d"NPs:&-GLY1PMo/imFMV>t9+Ss7Wr1Z-A"c6<,!Sa7VJgH$UMo][=#\>+,=[&ZVb=_d4="fB)5'ghR)Oe=RX;"0SEDCCK,)s]XBHdRA,bg=?(":igEn@Od-MK+aNPFZ9!Tc6"3c.2Ac2_+koEq:V:REAA:P`HG&)#U)W#,](GIEY=0/!HF]D@]B+(M;PUo^5<*2dnC>5Ok9-5*)nn,i^#r(G]@"k,u!@eWV[I`"f3u:35Y.I"HBhU>U%i`915^2g]O)&\q6+mA2?n1OO,.<&P7pJNB@STV**@m[sa.[9'ONAC1^UYXLG\t^GR!WD3kEBI?m2A2WBiB_W.kfn&KE#9+lPn*b'u%Br>GX=8W(`t:AM;&[7DXqM>fUd,ZIlnDO5n..OO@%W5%?=MKaBNs'CH/$gbj;uoc(;'Mp,\>)@l2V82UU8CF&>Apr?PaY1;^`<8QtO`afC(VnRdanT'P.m@mmDW2F)MBVf:Ob+!o)C1:&;9%6:1AaEOWodFaQ7`$iQfL:C.>YM,4WuD17]9]Q?;mMcdKkn=8Woa&'dLD9/:1W5.9i0@A'thq7.VDg,:(_$\pN:69LV/*q:&[K]IbC@nJ>/JHohds5qn<$_S)4IEm<dYM8&MC>gqGg>je@X3Wh.?DH.T\aDM7*B;A89G0=>7daGeqiZf-n$\j@#6(W1Gu+.AJF0*]>GDm)?SEH.*_=LWYY(t:AC;h_9rE]LdF+A6jDrQ^1k0InhL'UpK"6"o1_'FZ@E[qpZ1:"!Nj`(Ee)kg$(S4^h7dlQYD]IVtFH>fG\`PUL#%ckJpp[a<2MBA&)!)#)&<bfP&4*'AZ?+4=7(`r~>endstream

-endobj

-% 'R243': class PDFStream 

-243 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2767 >>

-stream

-Gb!;eD0+IA&cSAir.k6tRE@Z1(9(@oTDY"n(YQN\jQg(::'Vsd$YPXL!Mg^sf68#R.8l=GfstARYnKbU!Bc9gG5#.dK,4H2pAZ6>3$,uRHOi4\``)@fX97K+S;lF?q;)$rq;^9@pce"fED5c2#Q%hINV-LmcgSaLgG_*m="`!8K3fA60mFbWgGhF"fOnJnZ=SOX/N!<N0`DO$J$Z3UCk$pf55`&'VXJ`C0:ME))OP:tP7s?VPlQ9p$'3T<apb'QdMYisbXEYP;M6`()Lg`T%M;KS1O^hsLq#1VJ4s>r!]roAp"1KiY*mr-r)*1`S+a7Xce>J<i)hKN#2H"nStmQ%c-?<9^"2U8f`&.1]\R&a*F5GXrAiKo')6hqaahk.)UK[3!cE'?'/5JlMEZm=<KkkL5j4H-6ZQ,iAti0`?.,)We.dKPqTjGHVO;EEhK(7Kh.tLs[@]mnOBNqb:/SU/EKl,[a`'I@nJq'm+p"B>a8kD7\/pV[+=t0AK"*<I$UhM-(1rTh#XX=?Bf4M*VZP)jU^0jLkeSj2"2Yf\'50Bl7`qOF7OsKo5=)6"N)8:-g7='`oM!S\eC,ISFZ[:Q@)JrbEoaIn]\6kJI`][da)t.c)-eAqKn,qjcJ^&+8f>`m\MMt-T`#SYn&*<VbR_1mnUV#NkU];9E_HBojj?EO6,403(I`S*B]mUHc_?=61:/[?jJ\.Y(n]^%<$Iek,p5/d^'A87]0ooA^FoEE,>5U-p6?UGRETe-P::+>9FD'&p*l*n4;&qtEluNMLbcn]ZM@bie?6)p*3C.BL0*Ad\@^;D-=hjcij]Vi8U1pm4I8<S!YD@(PU!W+`fHJL2g\p8/sOKY\Ne)6V^dSR4jA[c.=quQ>AtI"$GZGSJ)?e^4l6nF&HZgq\.r$a&kbi34F!W@j7Q^6,?3D(kX`0mfo"i9^^W@+r1LT,hX'WIG3A@o\G:V44%?PdT$CYOH+V,NYLMMJ)AH[6<-Gb'D_pkTqYD`=qOdQ7-9s,K#'8@:r7sD]blNhC'^a6>#2lsp9S1SE^N8%S[=NcM',gD?<g$4,pgJC$;&m7":`i\R^7'u@_lu_,@&<WF!Xn"G[USi?VtF#@pc]ne0g/Doh&-`9,='pb8/UAJZA8a0/(Mpt5X[q#.HNB\0l_W->a=eVjHnjoM^0!?kQds4ki:4dn?ar*qBX@<)0HVC2*AH9EleWo(!,/]o?[gjP^K<4/s7-S5?VD!/a9TB'BHOWa']i*n@@(>LeeCr<+<VeZ%QN"`"N8]HRNI,$9,Tk$11%QS!E_8r98I-kO$b=$H2<gJ.sM:BN1i2;=2YH)NpcoSdCGVL"-W3ROC[7+qmofo`;G7*,\VO-KG=USY7PK6&gNc-&N8fo7bPgk.dqA5K5e7!8>^3MI]K-K9:j[$iGaC1)NUR#sFRb>%\uR(#)iXAe?r:'uUlF_NB.SN$3pr;elt0>[Bds*1I+-bE6I562&NY)XdIg%*kbT8(0.%Tq"k4U+fKrkc679bprEZ2`Bp?dQ(5O"ueU;>;Q"Pe+l\]pd-Hi"X9o=NmFA;a+(*Qr:tUKZWMrBN(u==YSiPr54<?K.a?tXh2>J&FED>'-^S;@7P$&MW!NjRX0($jqfW"B_4>M41@-ua;92L]])E48B:l<Yd%DrK=u*`p#+S:RmSNOXC1FM.ITUa(&R&bo,#X<]$W^Q)IVKWo;STgQ--g37&D@'1kECu(#[kU!0Bi[1#+$eSY!hb5Zq#G`&rkFmdimQ0b1P5s8QfgDAjO*8Y"X?R4srXBXd?;nI\_#*]NnFoA`\`A((RbYbcj/F#t[Vkn*TXr1jM7"9i&UL<#/>%&a'9EVqKn\(>"e$IQ@<'.i@'Ej;*"jOoVhU4Vbaj4AQc)>\A,*;"/^^m^X9;krY&_<ot('YRUP)7.VT)]J.;&6&Y[jLKPW%rt(A1SmqN0^EZJ.c-IKg^.G!bUU9aq`LGa/GVQT&KGgC5Y=1/A?H)Yj-VGWhlHm*'"m4kN:M>Ys>rY!.g!'YA0.(luA[n)A89)D4IdB?^r6*r9L^D7;iCZ;bN^7s6_>JLs?7%O,;m.*QI+YA9<V'5B93%Kjg7!h4Z/pO;Lgtd'1fVJ))0$ZoXg4cAcnH#<E2TM)$;XMjW=m[;ID<!Y7g-+cZl64(koHt)f9^D2c:bEu<P&r)AJc4C$h8&6E=$k!9oSm=-h),'1$n<E>'-Lh]qKJ\g!Di+Z<Q0!Oo<NX9fgM);/J>`ZH2aNKE&nPPO0Q8NRjL0Y"(bk5@G.Cbn"qd[T(ln]P;Q&-#+;;Mh"`7^h&W'<ki,:ThnpL;H76@jGc7eR:5ZaWb-C+a\[2nP&,bb"kUF<frea8*t&7A^VL:YA=en8TifG2^^6)M&d!f34qX+2jmHd+?E;=o5E/e,iBQfki]2[5,ho^HCsPk+I<cIZRcc@4:Jer_7:#/dgXp<)c?%:$C)([3=J]*"0nE+[;AB5m1S=:kZIDU8k;#EF"U0=58;T.O/.%h',b7BscNk6RoOTMei/lqm9lB!'$F^F,qR&^l,gHB?Nf)rMh"86G'HF5lbWD2kH]/n9Vc]$tX1("BmbHn=p(e7C\@!C@#b/B8(fb?a+r"\/TP(pg55Zc'lPR+3"K&P=.m,:Y9N^M+!puGT<ARU-F?q8nn^@7`k,AaN#&NTh0%<r?7Jrh%>1dU"AWhIe#M8E:k5=><J\$)JIW]qBpPursY>1+4BDImPX4+BuG%\7s3ku-DfB:'#Rm"DP?(Gr[4`H(gBmcY<fgJDZpXhbr]RBBYX]H_m~>endstream

-endobj

-% 'R244': class PDFStream 

-244 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2605 >>

-stream

-Gb!Sm>Ar7c'7CCQs"Ft3:^VJ8MPMX870,Jn>CW7cVid.:W;EeC=4/G.PtT9I^[KB!8PuoI;iY'-JIPt2fq$<S1M9`H=SQInT0Wm)152&ZgL(P"3X=DN/kdqVD#4(_htl*1*qrnV%%-MB4'U<R33qjcbdSR=i5*\0B=OttCuhqMd"?$@[a";"Y"q.UbbHaArKT%/2gPMR%l!rgn,AgUrk&0i\(ept"8>[D(_]B_EsB*JEpfCgM[2MDf.Z'qaH]G_QS,W&17cNX^kC$Z/mipb_sBO@hm+00gM?F%9:OSA68g0;)^FgbdCZi8?^jN.m1'B`eE`Qqku,<S8#:`X%L)k'h0&2bg"XXEeS>SU.WUq.i:>]7$8\CE.io)V9)ia7S>SA\Md"NrnKc=W)7!5HP>XjnWto8bcS!M'-YK!F3un&$`RZ(dgOAGGmYUOI^V^/%EV8VlibT:kafee7/l"-o;3]r$LX%8K&>[E?,R$M7ku\1)R2#H8ItsDJ,_Ut$Mio_]?iO1ZP)HllTh+i36(-oG6lkn@/if8V1)K_+)Xs[[.MOBNM!iCTSHfMqCW$/5e`kc+dir-Pffc,ule>m4PBZ1+Vb\8Zo@$3_o:T<r:Mt>k7-<Xd?_0JT^_m[8!$a?<Z*?7)dYP_^L<Of=f!Pc1*SA=4a'qfqW;eJ^n"mOF]!=?dKaG1]JuD);:h>rhH(e_A&c[!"H/V'1$U3U.a<SkP)423B*\8g*=br;%6=2p*F0=Fs*IM?BD?!Y8[*/WGqClf))9`"gcn_btT+5Jh!Psin8oH"COd\LaWh*oKdY!-)=LA-sg4r4J7"du@r/\&V,fjOt<-N'sL/RPEKL@e(,Q#`2)&6g'nCm(iPY!-b#&3)td\M]I$jfs^U7fUP>(]@Z+oPdW/'51XV(-`n`s0A+CXsB8hKZQ&$4bHqK=eX5R*,[B:@e$HTe!=p35[SJ&<b#D]9/]6]i:R7oV]9!JW-p+`7WhSBolQGi^c*9@328%B\[FAS1qD`M9%DA-/H3G1RQRB86#l+4'&jRre$;"<>,G:_NP0@Zg*Z>"Npr6B!I()@6hor#smkVZ9X)?2[H(h&,7p]3QDjGUkQl'?L0RL.Srd+AKpJV=P_/_keK^DU0VbC'bXo;d?g.7aRYRQ.Pt<pk2B1Wo4$P4?8^9]phX4"'75L$@:@FM3nDPD"PR8#Q@/b_S\`c@I0Ws$Do2]V8-)/8"JmTrfVBTX<)V5:$G@m3"/$BtmOl)GnY6Gfh-Op@A$1S="T+C$RJp[-@lAEf=)N5K8%4]fC?N0PZP4>4%4F'lAJdVIisHqk?cB&*>?K';(@aX;#aI`Q@&kbpJD+lT#eRSTQ6\6ph&k(0kj9p$8g7Os\<Mi/YskbkQ29=].J<+@]2hkceMnM;WI`V@eoX^!6?1`,c_u7(l<8b:-U/,a*mQ/1@:qC>F,-O<*O+03o>eR2bE*=EW_QH#B=jLTN#[KaZ/dF'&u.XnTst2[3LrqHmO8k-17ATI=!bb#gLWaM\Y-!6gY2f7\QS$i+ohsfJ4R5F#ScS5<PW`1jpCSb'"1EqaHXd5E`Hg'A8/u-N6FYbMOI72<=niYaC;+bb4PU$"55XOl]%>gX/&1:3)h3GOhj46P(#Y[hH(]B?,\]n;3e1U"EH*si4+\g1MCEb0)s9]V:L/+pOdEDWW,$nc)n7MMpA7li:YV7!pntU;jfKOLsTVI'C$JQWEOK++e0oKX4KNP.*!Dm<3>n&p0U&N\:(r/@+;Qrd6W]O>QjACc5cE+5>#=s'J`K3K%(TI:e!S!ogBVH)J^VT-l=Ki76LY03>":=f8!j8+"P9B+3@$.rf'c6q1b&$&[:R;h,?(N2>)B5fY'N+37c#GdF%0QJop`6C:a]pfO6BlKV%uj>nPGF?;W[0Bq[hVMkr\5XZ;c#O=$fu8!$ejpO7\SNf"\2..^00@oqFE5mBR>Ynbk5Sg61tA"a*RQ*N]XBl[Tpg)T1U\;Y*OCduHkBY6Z$7oIp!^8VqiV&*<8MjQ]d]\cC#\N"=^#:1/mnMoZ7k?-7D`)KZZ+lQPSJ"4J0q#F?Efpn9>#Gg\BX6BcaB7ZE![YLg.Zt-5-6rdB_>`?(&]J#%gR$E@p$*$5pk8H2LFtQ``XgtaQXP)[?Q/E-;flZpNC$hLO!=G@qa`o"02`.Q&230I/.+)%=':o.1/9OA*\[fg&gA2E3Q`fs'iX0CmG%']%4VVt*R+!.'NK/id2D&qja4/E#ZZQK$-HA1]gC,kWmGAhTGLF?_QX`e2<6:T;?K/g*=qmm.L:+9"H^u:$TnA#GIB9V1DDoe>m]()RMYJ\:AKNU#m/-4B>4u%`k,/=ZZq#T>O(5mT=&kY.ii)<hrfH3ao!:NX42BIArO%q?&gdE+L[X)@+8BsE1X?BbgrI1[@8qGo[B7gW&H0HN\_Tbb\oU`59^g3J)>6/g+QO1C;dhlWW/h,J*o/5"Cq+d0TdEF'0,DM^%;@.Gm@%Q+0<j8Amj.G3l)V@NEMgY*oRf-[2"/YbLr'6X?l?N4?@oPe3<#\DQnlJY3*PW(m@B#(jqBII_0Vd27XgP9I$`mW;4WPBM)=B;=QE2&84"?IZ>#Ll4_BkofnGT;.>-g0rW,51?K2~>endstream

-endobj

-% 'R245': class PDFStream 

-245 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2902 >>

-stream

-Gau`UgN)&i&Uekgs.N(=CN!&U6%Tol09KbJf-u';?-0WVP_UD9,UWXIn-gEloC_A9_.>lg'Wa9`P3aBD\b)CUICab>_AIbhr]e[.?=1V=IL%*e_"AV_.#?gX"2)<rrp1$mL@t%="HuE]R,ORlo+93bk#no*:W(9_G0cf>WaWNe,$<-'E1K93#5B+gV]?SiN4'_tO4h=,MjJD]0=_"QGQ4(\^GI$]4u?j`:4nbMoIL8$JhU^K]U^^sP'6_t04*FeMZoS>G'R_JppfaNh1hiRr'oPB=G"\Q<+[m=V6TO[o@5_ro][8^P(:XJ:fOJp`T\H)YD'D?!U0em\9VM`GRMATS-j&."`6NP12@Ip4//oo-.@NSA?t!*r)d]=8_I#')fK&8rek[nbtAsZDC&Qeq7Qs:dW[H+iMC$:](]sR(_\C:\F_31A!i:/kn&_X_V$XtcTkW&44^qo9bj#!gF<=B+6U4g7)mr:&h!$F\ReU_rifCZ4G-=p>=l?re#L4J;Ija7-Ut->XKE!.37`opi-c(R7iBrnPLr_?H?+lKc;_mHc8brS.8h/6\WIuc#36tl[NPU4iFoIe)a)3LbJ0hJ\$GK#>bpOD7uT3oW3qLOW=Y:+XJunW+B*S>3^Zs]8UDgZW<cW`PL$hXD_9a8-p4P(Fb0E#-e!IKq!I<d$o&+5\?_sV(jH8oEJL<OIGmPFIM&,P5jra3@C7J1N*K"caFf;,a;m.Ffn`o3S&#QlLL+ZJ;WP)&_+DA&I;D=m]s5k7NRjRu#2dn4<b3`qVR,M%Ye/f_(aR$@&rjO5i6%$QpS6k^ZUnqr^R;DM[k$qJdXLA!EO`&^bN\Lao*rD3IZ86VO"1o6'6X,$ptT72+^Fe\c/@UGDT/IhFrYIm32<Yh-1Z(fjgn&EP1N\TPD;T,b.VkG0:k\J-J-^8UB*;,8%cBNkLGWc5(@eZGKQqk(7d]M%1:H.\3@2nDJGHPF.fKJes[SEQUW-T3?r?/^7dpPE71g"L_usAWC_tg4Z_ThN-U;:i%'?tX7@c]`,$2Qak'%gqe6<8KPK_0,QNckSQ<!o0]t/Q-9a#'c8%h^Q3]i+jECka%j\[3dtaCh-ZLL>dZ"hV^J#6X$>K#;?Xj;FOuK,V.ko>'b(reEO@D!iZ)m';hi[h%&l&76YYr%'`7F-eK@q]7e&p+eC^G!ud9!?5@U:@$X`DBQ1>F=B0USJ-cXAN!7J#X3^+[LBiaUl:0b9S.g)H6q282:/bQIWu11_b0paG.(_Pm=+DuO..UPhPP%^%58b?s*hJ!NG9c%7W946Jmd,C;4ON!bp6HO<hMX(MsLLS$,7<>=.H,,-3Un4'3tl5&7U.c[NCX-D]*c.g!A"h*-OP2[$h+lbKF1+hc_LCdXW#p`;_i?&K$Z^XYb764_iPSK55GL"un%OXe(S$Hi0mg6OZPUeL.)_(Bi&k8Cin?H*e-E>56.I3gVGFm^u$4D"Y7bLs^.O,lT8VGPl,JmR'P`SLG9;M*uf;/)-bd:fPQABU[bXIZF5.P$04`9.XD736FC(^ubWmeZ!m+,!rC78`B>YhfO@P/d`U*Mag^*8P,PK2,H2\M6a!1tk*^\:I[njEqTU*[QK,.aY3WpU@S<0WV9SWY@fGcf8%=!Q>)'mYjF[.C;1o(lDQ>O(ugTkF,.`$A2_l*Z(4Bh<F<E]IaHJm4c!j)+emr4^9q\4p9'p9u.Hjh<Hd7)[)k58B&+?$s("cC='G0t]Gm<0o!,d3lqe!W5qD)d1nRG"n^/UmLo0V3f:Z\7kKW1)TnL35lk?!'`()Q(,;mVG[*dE8&cEigPX--rAU;"U*Dc3G,1;+mV1n.?*Q/LS(GY/`V8L8roRR5US_f<<G1`-mWGl7H%'-CH<,cb:o3AB<%8k@<aG8JKIIU$CSesCUUdWOu\"9_3A5M$2>XIoVP*s1Y!M>*Rq!2GN$DOFS1uBK1MPsA;"O'gi^%<49dYWMotb?=?IL\*1FF7&9eFhG[O5-(T4IL*mM79\.W5`pZ1'YbT4,q@G=[\-+fSK-?;Kh%purZF%;/ebmP8Z1jMXI]F<`HS(e@Z9kRCO#J4i<QKK`9d;Gs5.aC,c7nh@"I`EG^\?F/g[3spA%joG,-'&d'V=_@mDsZgnhqHYPJrnEK.Vj;m@aQ]ZA;<3\7\J=-<Wsg\RTR_NFaXcWWE_J\DlO?kJL+\I=NWdaGN=^^o2AV![Z#&$ieK:WppCZ]"eVRO2nVsN,4lO$J%E7liRVH!1"\NoYU;5+pLr^4p2iD-VGtnNPO>,U6mI)]C7QslEl)6l3u(CYr6C:V]]2OBeLO>]/+:lTl\:(A;"eX&/q@^>\phZa3X$h5\kXVIpV3W,N'+@5\s;6Z,Kr9>D9;^n,,M@lXFqHd]Pp%P?=EW3SRQ(gSjP=E-FIJ2Pg5(S[a._1EYNK@=g&MFOV&E$;mjDjX4`h2U>.U>?/kPFN#_>0dp[!"6^^[t2.B?r)?u:*a*\!5^;+%t-!JAF%^87$*M0L5CJA=dSmp4AOAR7dAm_fA>Je#gpa.>JP^DKWVBU>W>!*]o<ts^r1Ac?T`>MU01lB`t?i0UZd^2I\C[Lq!qqg^BQh2?!;#4Mf<8Ut"HFEI`KIctQ>D2_(YW('RLklPbYP]V?LckQAC\0H6.k+.>&W^,'*;[\U5Pc/*q/kah0+J>To^QVeI`k!(:p!O@G]lX<j4`pFDjIYERmPZ+F8Jtb^";.MM'GX?:2XdP8bG]O9nV]=#iM8tV'0CnaVM?V_3)?_lsFXoFs'.ToW^<j@4;s(DQWLNL#50NoO&9j$Crgb`?ZKL;&27;^%JD@bspF`d^5R#/W;c31S3U#9!M4W2%T*cS.?`XAApe_leA>L2!<6Rl9PPPmrAK[@GOB/"05?'Zfn\dhVW*(%,_>2\&1L1Ij.qOq6U)$olUe;~>endstream

-endobj

-% 'R246': class PDFStream 

-246 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2747 >>

-stream

-Gb!;egN)%.&q*PUrh7Lgj(ugWOeQa":Yn&mP8\(tM3ZfK>0d:=Jelo_^_!.QrV^mA,Xk>69OFZ/;Rr/!5bQNfFS>h"_[ukCpAZNCpr<Gbr21'S!/h!XcjO9%$1AY5?[]>3rG)*eKHTc]@sk3'm_bH"[s?H]a:H:pH2S(_op^Z4hJ=s%70^Kp@5lJ-.o*c4/NL1fMAnPJLMpSj5?Rj.0)qF>qmCnJD;Uf(FPboFa#nN=*s_a\^Yil>E=c9Enr-5ZN)3EiLG)^:&2Hl$QidFBjA!c%TNA5Q1&fsC_m?\/^g>8g&Zq_U]YHH70+s!Q7P&2qP_2T$i%.#I,/^,9bmi9B"X1-<kP3-7W;?2"1g]Rnj0mKt?re8m5J>\D^^RG(<?$biR\qXuKr2Bg?IC#JU%b\-cFd!>ei#Dfa%;_!'VI>s=IuE7E_F0#BfLMQTB3..gWnSb$]F&*O0FJ<W(^EqDm3Aa$,Q[[V'mWMnKq7/Q8XIt@l"j@&)JZVebq!BQ8jLTBGcf$N>]@ij<VUe3\2^k7&*m7b][C=M0Zt\eA.6NfNP3TY($3AjmiJ&-\Gp&o9=*#_j?YINGVqW#g!BrHl\Q?S_\T^JnQfh_Wd7.W"U<Qh"1JW"N^Cg0H*?>W$7WT1\V$(*l,'<[>T2?Kn0p?qG+*0TLWJn"[T)\/r`_Ki%U"T,i@Uo0eh($PK>E/W2_7=^E^CEJWOYibM1fD$C:4A.W,K7\F"&#X$Rq`7$6RgD';qWfkgHrn-%4,9")PZ*[>UcKcVcZdmj)?Bftk-(YAKYkLZm_pliL_&!:Tj&oK\HLC=5>DmF.MiTg4a4)]m#iU%6nLD.;G'+;kR.7P?_:eV`)f5BEH6Sj,P>*Xg'Rm1W`h!Dd_^M-38?E(eL@ZY5i-!1N.'U[aHCr7tYM8L)*n1A/cZ3XQaS4;cr$c*Llj=4-aY`\J[P0nnlRBa39JVU%#fg-+LQa[\r/*-FsgoSfP6Aq\5,_S0M8m_/Qj*2K*n,HK^N]jldCC^BaA=><S4T4Xdq2`j5*Lb8-*HkRHR3M0IP&rPQ7X_)L\VpnB@W3m:r!ee2Y^kJ#\';HXk`I?"=c\\DQF>;3MM+LS.-7R'W"5U%Q7FFJ=<fL3AI?W0aduF,=tFO#B/At\J=,a0_uWuK(,@<oB?^EsAgjkC'.%@TM%h07]<PPM%%:XpZ*B+R`Q9-pVr5.C)p<@nNnVtj%4LP"QL,#<;qrr[*[FL:s'B#$hFEc$fIrTiJsC1_V$3_Og^dF$e;R[!QjS5tP(\rcPE`l8m(a/=BcP9J,]^,;Imd;U:u#.i.LIW803<sFUd$`Fi8TaJD)j/GB\2j[G`D;=#81RIZ#e_%%4S=NMH-odeQ\%N-19>ZOSh>Cidg8j_=VJmR4PHL*]1<fc`lbF1a%'$mJH:K0>t`(V;rD4[36`&MtN*];R._1\Zn=ENG5j,Zp-_;)VE"3j[]cE42LFE>dks`>/_nr%pWl+#;/B\P6Z'b`uLB0c^3R:6S^O7+1SW8hi*c[&l#<8[V_A.$HcsA`!2?jb1M,#Ud8O[m80T9f#7u+O+usUc`+io-o2#FCMc@9WqA6hTEC'Ve(m?mIB*hD?F!eQk6,c]N\uUiW3_soPnt@n\s#9$`.R!oe[Z2'7.65R<#9Tr'k0a,FfB=^Xa?N^dGE(@l%L.V*''WoeUt6.am^,\XRc/<a2JW8HG_J+@9oEE5C9&i8&K:$5=?\\iAd8e/EYfBk,BV[5Oo)l%Nm0?5P#$<<2+`Bn<dT$rt\6[]#[I:rcV(lhTUI0&_)Ft"H.Cc-6]]#Y8%Pl/hg=^<YULL,%X$SiSe(6\I.1"Z(Lm]3?3@_amhOO^!YF1k-X#XPP96j?MdYK1<?Q/4mCbRe!k8Y)O2a-QoV?GX&GeDrDsfM?GGanK4+6mmXJ@]>[gthi0)bcnLQ>$G`D`>-?KCfB]K><%0)/#Nh'SPB>-=X2-@]o<6$TSi.slqD%H9(Cd7/bWag'pFs*.K]6]9gM=6^KT=K(U][nSQ>-:ZSR\B/InqWa9O$=^gEQcVa;2:6bj^1YX<*(I;h'LR.Jm+@?j\Vq-G?6&J*^f"sG7T"Pl23i95;UErA'rG*1:9_ib##sXlnQiC-ujG8N/Z5#Ph*Gf)-CMl[Sq`ao$3Ys.MF9"cbNpNqkHg?GoR39a@Pi[E=_?Hg;h<LfMge'L1a4-UFJc()dP)BW)m?@+dHV/gY5ei&lNB-QCliESlQ#IdHpb4K'0\Si0i$>b5O[<I_Rc0"-Y$(YD<>i:3U;U:V9t<4k14$]u0>*VS#=nY[ic]k4RuLqb:Od=@hWtUlmg7XabN`-h@T2!aeR6O7D;DgDG<Id4Mu(R"(QVpVXdni8AU9fEfCA)pa/FfEgYk2\5@Y)c%7Jh62V-bE=Fc"D(k':HXs#Sj4Jt\jOtd_kk&(_=FjRGM\;?L+`=%$>m(IT1T_.$'mKU@4jO>A`ce?133T/G;urm*XpH0jO[f%bq#+cA)A5Z],'^QM:**eo;F`m1mrT`q8(Dh1\l84FG>N+eG&"nhUimY!e'Nb*PhMhK]u=X^DXVfkJCP[&4?Zi0h?oT4sYcH[ZVi.r,D"Ns6tHd',N3*Md,8(iK9#n;,SB9Ye(`O7E1;`p/$pPJIU?p"h.??)FIj#[JR=(=4N>Lp,b`4G?`T<j6^DL-\8fIUReEaZIp8-+EVpQG:2c^DX62S\J-H5D$nRoI3"%,_0KNu:$KCA*W(JDgh%m.T2kB9]cV6dpQ%`M]RKO'-8H+L~>endstream

-endobj

-% 'R247': class PDFStream 

-247 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 4322 >>

-stream

-Gb!;g?$DdJ(4Dg_k!/&a^!dP.JFVAg^H8o=1QA<]LVAieVbFq:(oNSpl`Z>%5^XSDC%1\1B2,Z)hF@fb9B&;u`28#)pA^V@OCq4,p<"P=99sAQGa:jcn&W]6YJ5Hts#ChMpPA-=F.[2NjUO:n7%#pAB9);A+2@eAUH3NdF"7ZHZHS-b=;7Y&TuOY)6^9S,>MPATa*C";J!9!/=S70Js1XDD5J#OlS\S^B+UQQ]B!rL,H5S`GjT`%O:MO;AiOhe+--j_dW3+8FMd5Vt1<JNU&s;@&[Z/Gj3_>P+*_Eo5D_M]I4aIPses8-sa3eSE(\(dO'9a]rVK!Ai8t'_5fo_1WYEi_4:Xf1F,#OelX?"&ebI9Qk?icG89tF]NA@LH6o:dMr]]]R1a]J#WNi_6r9p&]$/(%*>f5[8ZGY4^TMHmjjnE7D",`C]GP[A.7Hr!DE7=Gp=G0/m4h!UA+S0j_-$:Itr9>B;rd..:(:Menr_Q_qO[P_Dk2@1qf-+rd&-?5tY.Ykg]l_d;@(b2V7+DZcSL$i(+.;`e_LL.`!jICC;^'<FH(7cH\1%a<CmBdUbG-jKcjUWd+<g@K'"kt5-a$h/>j*\0_nmp8_OEH[u9Him9gNZ)gnpNgMj0Hc+Nc.O<8,0nel%n<\*c(S>D9[07\B?^hBQJ%]18^r_Q"1OUoX"tr3mV_C!"*n<m.B/]+gRjfK=5k7D<QggdC5L'RsS&O[,lIRl``pnNnA:0c-8GaNXH[[pQUaRX4(obPkTi+?W=_>S*X\]25f_M6]5$miFPdX430.-?=_:hTqUM\7`C7-.a>Bh@+sqIrCtCLN`LAGN`O<nl?5>^%#kVQSlQL2e4:hIE7V\13jH7#W/Xgu_iL_&.A.Eimh;XhSIA)hV`-[u;q,D.i\\B--r_q8k34?JG5=[2d!:3=KUY=#,4#*3=!!nOfS\ocl_VtR@%h\[E+$@iOKD\@rIG^4mJH.<[U"o`NYF;AM!*)8(0%LafEjkYGC::HB<qTW4kK,^;R;$tBGYUL=T\ct;;:GcPf7qYE9>H>P'XZinPJH2jnetMnp1lej>EDY%[U67-)p#6laa*7cWt5I1qLWN#F="nr*C[`I.f\#ZQ?f)WLNA;<F035WL%`b,3Yl>^m2aR)foCe3^8*hhE=)M\%FO:(C*KjR#Qn(AG"Pg/BiLr1.^Wl&)6ha1VLtpMgU_\?'Y%STjCDfDXn6@2!MSF00,ifloNhhl]-AK/CPoY=J6N8j>n_]6'p=Hfl(Yj?;3D19tjnOGAuBqW$6P-!/j'?89Y@$O-j5\KQ%ggL#:bbf4^]#K"7!O$nq;;h4i1`p?_J6-2DRjc#1!tT!Zf>ipu3s;\-*KlTMA.Xiu^;4L*!)>[2s6&DUS,d169\Q-,ibk0"F%8RrSh*d:'p38ZYJ:MG-!%S`&aqjVJTeQd-N%*dpt6Y)uQQW0MHo,;k$n2O(nG_`l<$br4MS$-cUZ6BhDiP;^YWdcDBa/jJtFKU):]7lr$ro2u&qe'NSG(?qVgI_%lnRNorG^"%GTD,\PdY#?>U:QZ6QIPVK8k8'ZM><TcJ6$NhLdkmlp.[06*]c.W1)q4]B4X&t9qRO#^i1+H:L8^^Eca[^X4]pa!Qpu9"]f$_"6:E73^)66i1[:aIDUIEN#sE$*^J15re&7P)jjnk4=%IqbF-cA3CHVS_rhRK)3,g-5n>LfnKql3`\9NG\b:O2<fZ#\_L5c?>p2C]p6"5!d+ahtW(<ZK[!@a+LY=299BtG25Va6`#BDN5-^u!6/mEgkHVe$e?bA68=q`8o334IP`b\1+oDaa30so-GnpVP,hsd5eBjT<%G]uS?`Pi=Y^Gr@9$Ecf]?bBkGMu5VuL)qqTaAqi3[K_V"F'IcGGgcoD-(C1hj)V\XGP6%Pq'l-D4E$fg5k*hY:@jb5Hgb_I3ha[?eq;`/\+Mj.2_?!?a\$jho1ufD9!"!N"-6s;dp:gK(JkiX=f.@b.0',6KJaU>Go=FO\VI2N"#S-fc"7j6f3\n,15nEPhNCZ[ELgc,;m5>PWREVlCSoCsE3;3][Lkmr!!WMZhqf7iHPT<Q*9QhfKpehdccFJ`PNQH>CY.cNk7R1L_G`X2#H.'[!VQ[cc!j/SR2So7H_<<C23K:(V<@/jl[n*GkO]eafD2>20RA19GIk>iqA51Rd(=s$*8(G_1>c]k/b[2s]ue'0Qoi<3)5%,bAq1M%T)hQ7N<XetJ(h0`8UL+(bEoEWAt=bl14./i,h[tkBB!a1UL!fP[`E@pfQVS<\NN@)%ML4f\QEfT05PE!kC[K8qU]Xm)-QhZ8XZ][#>*%]jN#bBQ*lZ%-1:6t@d8ljpL_nJj9_7!gW,IPjlsn91%Y"AUr0kcKN#W?G]mN(UMK^bb\$,(o.dTCdBl^2kG-.sg@+s,UMJdWjAW@AoliLp+atMbiG]`fiG]TbiG]IY_g<&I2t;nZpr(9j8*<_X2R/\A.$>0hRZCpFM2f^aI*YL;8K)A.'<^2IKp1uA"_W0on&2)!b4)gkoEcDLCd+:''(:5(LV5Hhd&&;;h7=+7&#ZjI_]S&L-NbfEjGJA2eN=m)o!S*f:i"SU<o>%BrEhF"%[*".a>p+uWlE=M;X1G!G`FEP*A[G[<ZJoI3U-P?nMMT2'&(])]E#Y^bD:(`eT"3a3+UKI]3P[nH^r@>\d4/[q$r#]iX;]_$9K(dmSt%rlDi^;oI>IuklO1N%8AJdGJU>CM]%QV4[n!ikY])1rnZLo-L:kF9SSLA"@nbW(%DeGp#7\YK+O:jadT4^r\:0S5fR@HU(S_S;q8iON786V\-t]'Jg>-O/:dplCsf0cHneSql#n2h<)_"C'eg2u6J.^2@te,4:$D7d<$C:jL8D0_&s"at#Z3H9PuWor9uEX(?Mf^c"b>lj[9c7oeek9JLap#E0nEM<Qqei?G_ZVTSCNXaCL]WiaX.orfNHWI%Hl60d-Fnn,NB]YdBO,n&%ETG<.^oU)^M(i)H>7*^VOriCMgVpB8B;6e.70`/#u"?gZCAHW$It7BsEbY.POOD&QR)6`U&TU0qC_^C2$n"$^6_@,f%J&*:BR;b("*4\Z?7PJJhad\5o?h2817m'*q^6QFM5]Ta8pH!`l6GY24i7#gNPS<i@=IhW1gFY-;&%4m]Lpe7Kf0A>G\L0KCm*Z%:h(bBL?Dm)B,[LCf^nknsp<$#GW13l06#(D[\:*5clMV.V2--EoLbklaZ*6s*.,.ZLV"Q,.L1I3=]8<cX/Z/V^#Wjk`>cR[P=E>r2$A0tq%oCbcocn[o%&&/:Be7RJo%\%i]0U9_[M.)tioQpOVK()RK<g>.`tTYH9)D=MI27TqeQX[`/l>#=lZi<WR$H<m`(&>G>4.ViE8fk/.4[(MIa,biF.=A6/IE@rj-@lfIFZ4%M4D2"KQbP7H",-(!^`Pek+dLCL+6#F&W4X8c6):MrO7Vj2Sdmpeqm)EO?It=X'8^Be,8B1?>$CtShR0\_mf`"42'.c9[@5/YS?RU#JV.Uu'->&N42rKspo%%kdWLV?=19QaQ$3PDl"*^jn+@IOG<:7Rh19/,DSO?Gf#E-^&!lK*m;<8iM-DLnVdn)rmHa&m);d-cH=&bhKX.@pq(g2C,(2T]B8&*L/3sWCOLX`Mj;?_`PC6i`a[`duOPqsaSqO4VldA)8]pnnFNWj!G'E>aG."A.1#b4oTZ\fhr\@@0foA<EgOIl3o=PHc![klaWpM>I!;(qMF>Rph[ZY[l.k9sC"P<>s\D=,+k7[S+2PIo?b,!V@VY#X;A"8(*&sf2_qjf/,%DD30"X'G.!RBI_1J!J)[B7+KX`G!Q02;a?/=TrG,F"@R&LX+l!VMV3AaF%/4d!O4tGi^j\Ce8S-W$GF0G.L8o%/03JQ+b<m,R'*=N=9j`jj9ieH2,2+T=A0i=(oF?J3YoSA@TJV5"'uj2jD+h-*-_N&f/,%TL"_k1?#p;X;)L2<J$>$M'c<f`G\[7d0nCi/9\8d`rkW%F=(%DuiMld.`Pe8jlZul'+[6O@C]V<cd#e'6N#sRR@`9CbDCBjr)bM'6n2`^]$E[4?94Nc"8q8jB<bs_mO<X$ZiYu_g7E(A`U(Xo2?8!/Q@tSMGMBic+Yc[_IdJ3\Z<)ZX>JZ+?@n^i]=pXZ"+MBW?r]72rs\-6VAcN=9G2W&i(2i>_^X5[FoWLP!'SnRnmf<IqJ5/scT\/@a\Z)=k0KdpgIDM6D6lj9b/To,:kRp\&eHg9m"W1rG4"rIe,g>.p$TYEu.0c.uD^p-D?**$18R8:H7YfGE:<qlPp(uX'QTB#3c+,^4`)rYjCh</9fJ7g*SNiW&(/C%AD$GP$!HuC_7op>[Z02eX2~>endstream

-endobj

-% 'R248': class PDFStream 

-248 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2420 >>

-stream

-Gb"/(gMYb*&:H4YIi&;j+Ph0>e+[sVH:856*d@?)0=4,Oge+;5;Kf`\^GDZ2bHV^2D7W8q,">s51-%I<B'.=)5o9Qgq]D[8:T!XN"U!>.koA=u(r5c$4J1KFpVjgJq=nn/]j<B6ichi61H8gn[:%eWZec6op[@(@XPRV19L_C:VSH;a[rHiME?#C$bHC`k$TMb3#;H)]VSBb15If=3lHP*Ber74(>-+8Tqql9/g$].D2HIOl<e-1?`IIZ;cOp8+VNq9-,n+>,66_BmPD`8_AI()+2950!nYM=NUa!,Lk"8"@n?JgKKS!#h+uB<o@sX.SQ+88Y/.LO\D'q-\2%Qet70g[rCKq,hZ,Fs'DT=K`d>I7E/XZlu0jMn4%Aq3fV/9d@\SfQ2&79EcI)7@WWm]C1o43+b]!O(38]6de"ig*a_JR]s=.-=F8"GQ=aYZfK\[dtT1N<'Yh5AlNC3+(!=>"&kC=B2HncTL2pHX#0%MX2"Ag101=@QaPZ]/N2n:%_%$;PFOC,G>^ltT"pTK=-P-BfJ@Y\l-Y*IIL=K#tNu:TrbUP<bn9(Vo&TOpXC1;!CM_MtTX67mXn4'OJe%FrE'cK'Rp,+p3k/4ASR7d1HQiK5_LTcL-H@qUJZ.OUG@7-qHcPH/MH^%p;)!DfQ8IhnL@*,(G[V\jF8NkJ/ef,9a21"IG7,e+K/E\:;%i\]ROu(^(@Z:ieDF#agI90;[+Z;1$sK0Gn*?NVs`uET0oK\]4?k)oq,X4EcIA<VnrC^"+s@^/`TX]LG?R*11M1.06^AJ=PXi`$D[[$IBY;%r!Go7G!>99Z@<NH#)qq>Zd78WBs^+bd!kaXB*Hf@5FFD*m-"B()s8DAc.f)Lp+)%,Y]^RX03.e'3I3U#o4/26tqQM^f"iE@$.3F,-l.s+f90OkX&cjPbInoPGFCQh1>1SLcMf&q[bpTi"m,3f'U>tIjmep]'aE^`5b63KC:#D^+dVZ0<hg@bXa7Nd]OMt1]m+[R*]+2k&B$CbeU.Y;dZ\.63C8#Ohge_g&'Ca&*T$Cs5C<.is9ELP/tGZ2eS?hLNJg2"rj+pB737_7c><sfsQE];giNpn#N+">OL?4IFB=D6a<dM#tbW/8Ko=?5F2jHJ;N"5!Yl=t5YW@K.,W)tIHMA?2a*d/fS$CMTDq0]:%q'?4'KYiah!M/1=Re7<@4m-L]6B&-5pGmlX?)M<JHnYZ`HT08EFSRHmGPPX;S8"/kHWXis&HN,j33d6ZM;O@+%98!tKJpQ\i!K$V!3/mHngW*pq+L<@eg2<:@QK:k_W63qb]Do`hA)/6srKjM=!"iW%P'2o)l%j48LUdN%T49I?!SSrq0]c6`*>LO!;9m;kEr`&8o;GXbn?<V+j57k)*t:If=eSP>0Dd@lT?FNQ[L-BjE=Vk&n^=HOPW_$h>fT"Tm@GU8Q,#ZA&^]AR(4E7*SDSq!SOj<SAkIF>-sFJ^tQ-!4Gh>>W!\.sEP\[FZ[/<OT\BJY`lu04-\0+;Mc]47;eKGAQ_uCBVTpgbGe+Ro.4o3'=aZI'^Tmp+=mu8B)JA6M&9f6JfD+7dKgd%/[m@d3SCc-L!Cn'fAC+"1t>/%K%r%!H2f6NMU<UBuM<-6.MQIj)C>&b+L%._V18?a/ntk=\^poMM8&L_Ur&<W:D&Map(At6G(9"NkoTR>77l4\o0hO<flU`r>.6\2Us;]n:kR(f+Ms0e[0VN.RQr1RMp2[;r@#h.Kr6q1,4_6Am-*[,UZWi!lTI=69Kl6.peiIQ^"Ytqs3(=pF*W%[)gC<!mEN'[<sTgn-C<q($,8@T$7*H`<b)o[-)^a1AnE;Xqs:)+YRr?9!k(b[dQug(m7+9r]1Bd&s;Kbg%K;HU/7jV#\c11h\&B4+]Lsi-Y4/$FPA[l<?Q.5$@X&$2HHVkr\:/gAOM`s8p$hNO]kV+/]k2c3>rg_hN>M#"#J1`ilDiA\NAhB9W+760XJ<p(+B[!ZlH=0<TiOd0*XtP(t;]V4b(i8X51V<&tU!+V*YpZ#(8"]6/SD!o6k9IFn-^+b[t-:\_s*bai`YOnWSUZZ1POZAQThX0Y,?]0[]Ebe'Q+b0X9m#OtY`B720J'g>8Y&Es/Sf]Oej"j71hCmPau'QeGF!#/=:bQS+KuoXP:_`mRN%JVO0bIra0gb$cg3Br=Z=rBmo7Dg4f%g_gaSnU63#[F`lqUu.kn!`gI6Q+7I6hS7fbl&b&Xf.Qokf:Hn7k5Ya1"'fFIih\+;hr<#=Hi5%c#sT;_:0dgp=?#'ucjq;M@!;FVNa.dV[j]\ZbK1eE>UQN,VD6L?!D-D?S1)AE=e`8m##bK[VFg.ul*<C-`uZ8`nb>:-fOTB#N-Ca&\Q$HX/q`,,i\DQ[4aOWWY[":02\J&c`9qLmfj>0d:F8")bO3(3W;YN1f7`tOK_[!_0Z3j9rrJ0S1L0~>endstream

-endobj

-% 'R249': class PDFStream 

-249 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3929 >>

-stream

-Gb!;f8U&t"&\e-*rs.>Race^/Xi[0(-An/.:2ERe*24FGDFi"aQSusO7eu_V!k<d*"[L,QG\fU*LT$2dmjh@gZH3/sg\gM_6HIJ3jMs2;YoRk+:MeAJaNXt\kF:),^@FL3-16,uENHq\S^);G>hJ^*.p0<ij-/ZXYJ@0o3!ua+l'%TifX:t,?lqN9QB*X7r-/-*c><4[Eq:flq'1+`RK*(ds5W]Z1kE?I\@7<F^n&+,QE+=[[UV<j2\89WXCW5J@6)8L/[X5g/?m21HX_!'@l_*AZC(P=96R\$m\2Zj?REYX`k2^HiCbh\A,1e6D-J6Y&9G3j,YE5793>@a^faj&O2"rWOCGuZAU-ki/L-VH-I8F2_)iECQY0+AL2BJGG3#g0rb@S]*Eu&.d@/)FbB^dCZ**X11U>ur.sH3=:=>OUnf3qLTCfJQqNg;>B<RLHG@A#`GZ&igR'%c+UC1_DFqF/i0J7&eK^g^6?b]3im5pV.SBtI8\>opU((8=W6*PVMPA?.@(&QY'/+'Cdhq*%dme.1Pk<.H\0QMO6QtFYnT`q-Z]A"EPm*b3jOalmk_BGBD_MW0%_\SdFU7*suins\6q0qS$#XCX)LMl,`_WV5E^JEIu!!KmTepB56!jS53NM;=4E2`#06WoSKjSI]iJ,+$e^]W%">X#P$]R'[cpN.LDkN$O,3KUQcVhC4]_=@uFL<L>OV?pIFBc7]m.5Olio9<eM!HHhQYdEreY?&e\0Jf:fcWWA\hgr0#=KCquJA.cJ;tO1gnRIkSAX8NqQ?1tU^trmjid3pK`\@I17KFK&#MGGtY#3!oJF!j:c^U<j+a][?)jW>AW7aKI=]4jdncEb']O`N3)**12,RrF9og*_XlXLVhk=+YgHSQa;i*3Vr=kZ766tGgmbOseu*Ir[ub0%/Y/*Y/!=*aue4NRg6!h=LG01Na$SE#,AV<`@:`>1C.\0^l0:"XNQ5JkF:)j8Q<cin/Hd3tko+;&R7[u6q!&=/ta!ZmBWh>XDZF_#ga^K%0J>3$^K2pW0JK]@A@%mY)%K/_BI%@5@l?E`Ko<59!0/B,%,G+gMpRtD_oGsU"A'W`^2!/363`ZjYU-PLM2'[ArD2g_*lpX-lB(E3aI9=0W]+G,hTdLpq+2ie,N^Hld?[LF>%9+"[<>9t$l'haJ=_<%Th=>TNL.!W"^lp8SB"McN&N&M1kNf(.#!S#-CW`s@Tfs(N=:Bp[CA7)^K<Vb$4Woo)eo[%THrI'/+NCggAJte>[ZD2[_XnOQpgPk&PB.7Z&8-uKAn1]VC_=J-(3$b&Y[bO@JjoUOT8/lg!1OKHGNW<B1g9[M[';!Q#Spfrh8d>m@k#g]Q/:oO?Ej\LTAIuR9+L'ea!JEZ1@Yfq?*&O(2Jn7$N:1Fd;nMf-3OMNb(aUXsKXe%6#ps>X+4=?M.r9uE<%?I@B\Y;*(Y@Ca8q\=t)/O1JUq@A9fBRTaG!(HBZ5<60Mi6->6*=gq%mi_dWCeLBEXB9T`g-WA:aJ[][[_p6\M@=5D'\3<saH&eoCa$.]q-)Fcb@DcQ'39"W9pMNEnOY1c6UcHunK,dFbi^OU0M,5Qih42j8`(s*g<"BQ5]J+Cqo]d"WRmPLpOmUq8YV_U/<.<&SKtK=2;d$##Q.r4YV&NCZGT<^BIYDW"]I]YZ">H0UTDTB]PN/#qmqi/T!j6[UG$j[?m82YZe[N4?]`Su&NK"L#bP_n"[6gMKCd4uYB\\IoVp];1(qV2qt5:Af5ZkoTKIY40'pplShD\!Rag/4C"ZhiKMN]Ir8Ng@f@UNfaDT;ALg3**%r/(XKW9i6V>0d`7/;l8`mY/n?G@1#9.oP0i_@tUh4>(8r,B*rq3K8jZQm[ng:(_HAI]a,OGTETeR_L*a;0bn"`FJPF_U4UlP!PgdKfK.VXSfd2p"X+9o`fQi)liY)e\899@\aj_Y9@)f]Uujcr*S(91p=X";&.#ODU,\W7]'gJ*_0fV(+G^W1>'8Q?IJLFrfID/bOj5o5P(LKVk;p\Hcc\W#d:YT^mB,*an3GbRhg1W'<,Y5+6\_3DGDIiRgFtI+cCOQA^c2*T^+QTj:A]RE5_n5^QhKBKM3pm<E98cM)&-<4n<*#1XfC;)eXJLk.B^`F8HTP@4"m_8ni_[+G#`*+&pYWRU0"Kl!qjld"^!FT.B"\8M9"\P9gq3j@B8+%VFfb4Gm!>\WruP#'%O6B\G.6NCF9DZg:T&un/5X?sS.W#E6.!Zq#qD`j[<s5N03hqMmOIQX]Z+I'?=*Thr,/l^Nnos/SNc5@UV2_R7ipKF:GQmK1j7N7`pDU1L8^Tk;_pJhE2#PMsG^15R.[PSKA&KOi\Z<$`n42fNY.aU</,Po1\it!\h.(9YB^X/3p5_;<.>gRm,f3QW1e*H3^N4dEArD#"6:Gc7]-b9ZZ$>R4qFa.L03=d\IXhZ`Lqj>l^rl<bd'C*mVPiF?SfKMr)Y+lk6`UA(-AM)"-R+)PH,4-qT>phIhNJKVg=<Fh]!tHpcb;6.=8"Fb!,b-/1;\I@gPd`=ki@I:*0L[)jI3TBM'&)5^0JR(r/9.)_csKu%aU?!*@iEW*Q738U$-I<0,9"i?'G-AT0JoN_/>4(M_cbtSUS6ig2UY))<JDch,q/0;Y9MpV6$]0W=ZB3SXMkcai@LZC6,HdaqT(SB4u(uh47rL0gNKBI,WpKCg0h*$Gl!4__cHF%&\428h"(r0_:-GI"S#5/e@XpQCVVsNl2Qjc2f:hh3Ht%M9IY2VJ3r-L@bf'-&fml!iD(HF&UZZc9SRX&`kJ>qmdq*Zo'Q&]R3$?(jN%[ZEP>k.H2>$7d/63$'3`Abe&Q"S='dGZ"odfc#ho=QTUR;[;teHLQ0FDi:K0M"npJ?EQ?cpqBAu$nl*/PYImNP<K!Qd&$HV1UnHWVZWb;6T)=VS)\Xa:]iDop?59?#/Y=Ts84[c9g\?o@U*_k:)^8MOQOB/9%42O.qTn1t&j)n6Um/(V[nY`-K'?_dV/M"1idZT=<\`5b`k#"EJ=6XqI,nm\9f3Oiu7g3U4V;DlO9[s&)B45Bo'r5u;IRdWu0oC(<I21HHoS;t>'PK[g-DV_JW^m1`$QXLeIOIMg3t\F`_nLUX99_&*8Wlp)kU>ZD7DfY98Ko'R3Z@kEd;XbRP)+jXNeT`W1`W3X,be_DUS1I4%7_><3Nt9_)l5gk0f:-QG<ls85\Zo:YK8@b#[o(^Q%%B[Y@a'J"Y*(VC)\/sI7e5K5rD5%_b*EdT2HSf:e_SMYgUqGVj)o\<0K^,XE6;k.AbuoK/Em7L3]O.BYM8/V#N'G+pfYLFQ><iV$J727%hs=qu5-I;S#+>8O@9hUS(C3%6pd<M.g#UB]rAe_\&n?+rXKC)Z#]HE.hthLk_1TL-DFj*,2Y>^re?LPQIH&.<E"L_O`uo<QSopB[g$aGoG9@ANspq9Gg0;cWB=16MaZK[#,3^YL9MJoH?G5()8r=V--CS6[R64.X8["Z]`aln>+`/PW"tc3$!Ap^8!#C%M*.9k@=(bbQMO5c%iFo&aAf#p+ShRm%@=k0WNM-9g`sV(s:AZj#X<l1^qF,Tj58dY1$!;6Z:`ub1/$&3j$mggr?IUUJ'/U^t6Mf,OT1S6:4&:]t#$3BnV^!*-2cO?:HfhY)b"ONa"kJVnId(d;#J!^c5m<Kq7qoED3PJdfJQp9b_d)Hc@eR7SF&W;`7M*C$ueWoGTG)OA=K!6DL@.a5cB8pn!S/DLg`0;65`BZr.74Nk#I#0;BHEJWFf8Na!0@g1"b_WteQ#FNUDh_A6ocHEE\UU/NthQ*j_`dVIso&=p*UY,K=nP[5l<L?OlH.5]1n"*g><WkVh2&%g`%HIBKF=2P:a1`ZqH_m5tHG7'BU7SmtW+YVDh!'"^",o9Ju69kctUS^k.0r6#rFFZ8a$7-Ke)F?[o>be/c;,h=%3"fS0am3%."g[)\]D~>endstream

-endobj

-% 'R250': class PDFStream 

-250 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2421 >>

-stream

-Gb!SnCN%rc'`D>\s+/7X\jO\F00cmR5e"2>co"7-%n3bi""hnY(VN.-EP5_oHV$hqj2@6h(Mea.JPAuUH1'Y%k>H:j%t5Ms2bXMQGs\+;G)51Aac&2CouZ9=nnN4=j@9/1[X6pGf;4*"mb)8t8Csipkb.*!DEsM#:LI/"IaETTqZ3*1`,R21L@Oej!ug)BHhp7X8]U@nOicKknst7-Hi8:iI<^6c2?V!pD.h>mB_m/Pp$>7B>\?S00-G].#=DTs6JR$^%e4&Z'U/'X`Af+-3%\2&P2D.Y'9V?1:O$'I6=d&>@4!:%H'UoDSWb6B=is;o,K56J<Nn;h14i9c9[$.DmpX]3QBSe-N$i/Yl\dmBgEk0%=m4TDN#Ao&g/TO]:Pf_aE9L5og0o7J@h1`dX^LuXIJ*DOY?F3sjrcGl;0Yh:o;43IqFblrp5XID*V-+G1'ljm5B)mQ1?@_P\:/kNi:7ZjA#9sr&aR\,pP7$KJNbPsj"0/BZM^0P/A,S9Y/l1qp'FC2N2o8GA?6nN7ae@\+p*/1CkXhqKINY<*2A(IAOPWB'Jg=6kbU\P,*JdD:<CN[KLV8AMVV5L/k@cN(HNtN/<7%_FJr[Sd85O-,)&$bs4-l2!VAmo!IOmI#!sP&XG5uU$_8e\0[TF.8aVLqM8^9K.(q24(+s[M$ePuUHI)j^d';(TM]nb?:^,mVA2-K-98m)nB<7%"]-GW8*f2X4-Wcl)1g?j0j#i0=EK4O<GfDDoe:EI^YcO`iYF`-4Mq?#2[Z*p3U*gAm<\.E([AIo/F4:<-/465ZJ[";p]LIH)i;:DX;^%&Zlm4pL+T<?H#.,*MP##.5k_t3a-;bk3OF%Ja%+kCV!4rg6`A,H"GmdkC>7Z7l2qhaB^0+ujWQ4,4$8ROe;A9Kj*uiXV5p/$C!F@"n56IR`:'?GYFQ!9SQC*Fd7QDacXl8-J((<^2Z=<5[>!iX`.Cm[Nm^P"u087PY[NZYs5daoli!8Z:@uHT>or-Iln93N04B41u-`hhLgqnld6D;'oC5dFo9a$"KcbjZn+b:2%,d<]UGc(Um@.)O_=_@4Ce'!t7P'W9YLM71*i%@=+[-U1&#)"0RN%Y;2btTBO:/*]@9F:l1&C\nW3M(D]dfOoLZ!D$6lsaQL!(KYng*f_>n<t.0lbmC;CKQXN7n#2_[O*>ffe'9[dea2u':<lMfL.r4[m\c+C\)*7&s(abO8s$G@lSUq2n[?ADJ5fl,t@Y#lDe>F*>iTF=5Z.#*,$YC2jLU,[\,,Y/<7\gmGM8h%!D6%0]:B\":Ann@Ls<;Y.8$"[WJIcj\kgX`):W3!8kX7l%Hrp(^MHM2q:8WDK."3$Lf4bJ3c-sl\"+=4O.sf7N_fCXom1u+77;"-VuLXetVi'(K,qRe]JuDHd(.F25T3Z1:JkbrP5=+ceVT!Sfia?1/M&=&C4PrQX&JZ8&A8*9ah;@G=?82ikao`/4</`H;3m4f7!V0Fl*5D#hi@-a)]'f`<AiO14!cZjftfAg/#%6CsS4WB!`B!1-T-I]'q)jK`LLS<<&?Kpo:>e+0PEhe1D]q:N`d-RF\"="4%<^`3_(1-*RIAf%.t8EtX\)=Qd(qVXA$!V(IMI,"n'*N>4XrCoe.)llpQ.66X%Hp=9MK;;/FdhFWQ`8a\"a>0#J=!/Yk(hk@a!mgk3.#mY45dD,mr:Jh`U;/OrEW<tQM%:;gcYTrOJ(O3=ER[U/'U@r44T'Pa4iSun_Yf@8_>Xj*nU.DfOd_%+:C^S7m3_@&OOOCNK]]tm/b4)&/\#BA>R55.`f4J%,fU/BZa0!$4e>m[$,-FJG9*BrsVQs>V?(GcS)"\HN&\nCdYRf+O<eJlo3FC2uC`n#[,HUrgUo\,r,\#%uTj9lL7k2UJE#Jd(q&J*u0K3)U//K:3()2N3m(L+Bm#ctd0.dYn"*-oJ4rO0>nU0l+-@V`Zf`bu7s5a_2Xc/;^(sS3i3q)B%<SS#f#ApoQXcZ>Ilh5_k]?N8^JP-6#*B*Wt=iGHM*C*X_4G_q/<P5;!)hfRH<e5bI$P0f\]%.?NfR!./e^7;2E:s1M=!&c]0!I0Sgb(_I&CkG*A,Du^f],S"A5#+,5#c&pmp<;(0jh[9C:/rU=+6e:V&mSn\rTmAZ:#D2B@8h+BcS=Zjjd3sbsncYln*p%iUp1)l_p;Z85g4c*fgh>W7)jff*B8h[IW*:0Y=#ZY^<>/mo?DUS42I,lp__mc/@P6=_YIXUQ/EH@tM.;bo?*BlR.i1.*QNkr_A>cf=##'BQ%&DF_^JSeu*TOjK3_A@k3.EQ*Nf2Ya=W4kr1?A;BF%G(YW*Q/X!qn"R<oj'c"$eWbn4m:bo"nYW\"6_+RD.Xp"6d%?QKm^%&J-8fq5(WNQ'MG[#UR;][uF!hiIR`o2,:]X_^QO!GX!bkfTMY/6Zu4o#o+l077~>endstream

-endobj

-% 'R251': class PDFStream 

-251 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2286 >>

-stream

-Gb!SmgN)%,&:MkuraF^LFC\K!,ua6$*BBHXS=>aT3cuMe&sCV'!!@aLr:f"N8Vr<FS+\gUh6Fs48R*$DGL'S45Tg"-s$+U+:8W""/:\jrko>9U)o2)'S5(.jqVj_*4a]5>0P'\bkNpt7?pA>mZ+(kZi=OS$+5s69Att`Q%Yla_+UAoK`q=&dQjmcQ^AftsfF*F0@/;fUJ+_R2pRa+`O8%O('*f-8.a@\j$]\=#FHC;i<\b7&c9>"#?pp]J"1Ju+BOaHi@)]HM^g%h.2t`qqZ&k4F=?4_tiYQf:Wue@/6A^s]n>-hD5D>B`IMu:ed5#9i<Xsm@,:n2AeQa_!j6*`A3Xo&8c*W`MCGqKeaS5pC#krL(pjDQ.8IqWtNVaPPIeV9rCS9P'q/@%Qk^'oIX?R[EN^fB*mBcR9XoLXrUUWcQCuB2@4CUY^;dC_CRi!:_86(nW]9pKuhr)PCB4V2go-+in"0MO(]7eRfdIu0_GdUX*BoY`qNC_rTY]h/,Ynr@p])(44@6:(:)uc#(cq;,kFk$BViSZ'Mr--J9r'tmO+hdau]\j)G+7GjqTpJC;0CFKd^OMGgI>>&p&X[>'&'l=^;@j=u=A5.j@N7ZuEX7`QE!P,Z),.1<[O\J/9;`Mal8a)<&"Z57PeA$HZ(A5RA.S\3[jnXrZOaq<dNFJB+<59j<J(.&;Tpq-EiBfhWS9b?PcgPMU:H3!91H[5+VHf%abGCORKoru0qbin$qKi?jbCm8[i\t<_3TdVjLi^B$RG1?'E\:`LKDdjj>2P%6;,h#5o%HJau4;5!Z(>^EtV&f1]1!%?@FkmImO].AFOSZdTti\m$u&m)aS7qb<Jt_-?e&^*!7#B"d4hMU)lA+;X!RsQB;d1&!u!2=<l#L[<9PNgnaRMrtrg44+fFV_YdbK7P9!l;(mmIXB`PtOm)q8O:kZIm!Oju,Wg*V3C=%<$7809aF`sXPO<s\L?sJsh\CqZ/igBVD+GV[fER;G![)j51;-.-o+kE^,/RCdRjr[XE<uh#>LscWo[tPu*S<1lqcrBebe$B65o`'ZSEhS%>2`8LbJ\(T1fdmBb^&3H^1dgZYVNlq/q`p755R_<Y^8s@0NjYjai]iGFf!XfL<+aa^5Pl!Au28ICirb8g8->=(/-hV;T;AeBR."fqTObSZ:#YXTo_n,,&"3m[(4;?DF^=-o^ESmgZt.C2Yg5+,p:r*,F4^%`=b_CQH4TgVX,u\f;hLQ#3PJ,dRD&,]1Pf-JsiR:"%UUqcF;V]MK7Q:]a['TqRH/?3XTf*lL$+%MAa(c/%MU_q(+/0kCc\h@#*>=Q`F-DTmnm)fO5S+R%eb1kT#$<9W4+84`Guj1$6X$#>5H[@"!ms;GQeaM$$K9<SO8bh!e8qEX#TXG*NHur3N:m,g4aS.kWV5TN9n.[m<bHJ;/eE$(T5=68E#$:7P2J6)Wm7OYq<=%djIPkr4OPk!!Pe<4B;6Oj[LI6Cr0Veka![@]J8C)nAR6r*o?SXV$m@/;//B+h<!6J068&og$$?[Frb!Aa0,'rn3`If\-]Y\IG781fE8U-Fau)OY8BM!\Z[nq(>p)da"i@WirjR,9qI-(0VD?5Ii_,78oroSfoqEd4=HK_H%[XE._Pm1L2mcRSO:ER>f^bH5,V5I*cq;Z.+Y%-d-DT<"):E%;!LA&]]^D-Y\7Cj=tiuh?^UAjtdoXG@@8amZ$ZFX:b,.FSFLkZLB3\\"h*W3Ts?nQMVLo:rt/W=`)I.@+%F\XO;GiaQU4Sf)?\#Jm6AF`-,M&fd6f7AIW(_s(Wn:JJAL%h#b7p9oQpQ=&(hY3NYi<8nWGnKrkEK7;;,d!\^?<7f$$B5!G2hP+@W*TD%3^jPB@7*Idk^rqL=@7f<nYoV*Odm[EPSm\K)/]i95:p[39[!h'38I1bF"R?SRJOR&-DdTohp?HQfh'.#!c=07=:gAI=,GU+S5k9p(!p>Gc-beFI/3^,X&QNFP0mcGH6X(8G8^>J/1bO/12nL`T5h:qfEb'l8e=0<!$6*@kcqDnZECtDj[I!14R2Dk3r3]&(p4If;+MFL\JT2LDu?:Kar[P'3^#VcW%ptY>K8^6#hF%N\2/j3C1c`l?A"nmT<VNg88kk0bJ;k=B7]?:uFp_MqG[(LQBN?b'7Z]A[mn+c`(pq3C?O^9c8He7U4^/\87^JnjTht1=!V6eT+&nQWRc%_<iH<=P]P''R<7tZTRi,6:3>%3#Wg_>"to_r***UILJa]VjBG7n@f<GId^6#%\<d?(.5<u.4\GEDH7^0RpeD7p.7+8l;QW!(*~>endstream

-endobj

-% 'R252': class PDFStream 

-252 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2729 >>

-stream

-Gb!;eD/\/g')l41s+/fUk8nHB-,7O8qijaBG&bdMY2)/j2N*0Qka5RGF@ds]pXe:2.EPKK(HG2+35c(B]aTZPcTLe-j,lP'GkQ?K&G!"bq=2lXSknKAiXP.6bWh2uo@L1[fT2@`4rP'kVniYqWEo6hcRZ0GTKhrD&UAd&$ESR8633X97qA2&c_GFum,Ns(*T<00qkNRN`uDc:o0:=omrnN!mH7.4jl`Pu"TInH41fp>/3QF'b4YMckhLGL?sQ.7G&PgrXQ;pTc@.&ip;"dJI-"4D.DngmWQ<hPRnIeRiEm$i,9Du'YK_sG,s96.kjAnmUnUAVpjkETK/='i;h?jukh(7H-lr9?#ijKqj)GcI(hXF.N%AJ9=-WWi,\G$;3D6kk`GJo9n(O9).u@E7-<D:%F)l[b-OW[Y@E@J$`*b0N:SaeBBG#=N/CIbA*s@'UB5tRliFc7Y)jZ4i:-'o&_&,t)iqGbYXrro@lkM.TSH5H@[:CHLOt;U'f%)Ra?H47#7_fCFLO[:XKo%aAVecrtWNH2Yr1ZaNm8`JgO-bJC:n>c?B=%?)Y&5lKIQI?c^WGr2Ja<C!$Es3:G&uJeM&E),+u9d0J0o%a>6Kg4p]C?E3u20#_*^T3[58kNB*Nek9gT0&<(s*B6k\jadb'XtLllk=&VMdtItI`6+uVTH'"ri--R?'7Q8tn^Ym\kr83gTOW2R1;b&")oeg/]]`k?_u-bZc.qOEFZhAZXUO^9\Wm"e3`0i*%/nr;B*-ndW+aZ,TI(lnh*Se=q8\>JUU([.IM0f+@"ZeM,E5MC&4DpLl/P^:[<,**dRU'BdsQTH0UTGJl/-ZtmK#Hf1-0imLEjsUUhC2S&_>tUA9F4UH:hn?;]PZEn6ZBON)]/5K(64\pD(&I7li`pmMqYa3r>FVmLCEdAPGiXLm^&iFRh*@@&>.7#lBJQD3jDrVFK4fC8s&^laV00E@WG*s:><f#'i!VH&,sB5P@sFCWM+98TFeGc;-<;mRcJqf0VRf=TdO(:\5?@CA3gi^DE0+4=%0,^=Z=[9-Oo\C"kA$DCA=4lk6XeHe?bZN#mm0#AAV>3pQD>Wmk/b_4f,VsSb&Ea_U@l<Q>bN+1S`"Rg;TP"I,2Q-uFM>%"kdk=VW#%S:q3#<oGo$%@pP.^o"R9n(o'Z1OPRN.-*K>n?U!qBl\2aQj!oNOinle_!/MPdpNOKSB3/cf`3WRnMMC'ecGNPPiI-QpK`P8*dL085Qr+>!S]YelAiEBhCjH'^5..90gIRaG@fL,M:+G&qjQpdI/RBJ;CWN=6aZcpKgb=[\rOKI2&J?BMi;Z\LM<_,1<,hf[+(oq:b^rAYZ!F*UmJTBIDjO>g0ZEHU@^ucrsgtTG6QS`IG#?uj:]3dQi@bG&(i\>qeQ&Xi2=45sV>IP9]H#!s%a4$>>IHK-".*'5K^$Q@Z'bBDS.fOP>[ZW*#P-]*2FH^o+TRt,5ZUh>-U?&b/Nhn/=WW^`sDhlhP#kAc3/=b/7?rg1q#&1,kU<_>*WJmV--"eP,bJe.V"1W`gPa_DP3%ML?\i&DUoi_!qWef[NMdk]Y-0I#e&YO[_]Aud6ES,7#K?lHW+FJ/:7EBSej%fEA&ip^CAb;)URh<kKN[n!U5`9p4/,R0=D1-]Wr6]@CL^qA&bQcQ]\e2acjU>-m02Sla+k3[+>89id\/.&sC5kn*eqi"\q$Afi0_PI,b.'Ve/")hI%%nAX/na7YHpf,n98i14:2Q_Cg?;Rl"C!QRQ^K62\UjOTb/O:/Ui7X7[#>']&.;\B4]r5?@^R9b2n(3\<8EqM"(<2qLTlTK.?<7nfg:L(adg/a<O!j'`XV`*@fkVR.7\SIdqQ$lSU@]Oj`n^XMQeM_[^_@RFknc?4Y0`DH,kfQf?eggP_DNCY\c<T!3G*b#B]l>)k(V*[OKQ$BT0cSWr-RF>E?VcF,gBF[]mF4U9pIj%W)ll2Y@_');;>pTO]GJ.gQ?,*'9?jgVXdPD6?5P(@]sc;oX)aM!F.:\`D.?"SUb`(J)_UP&Thq;Z'07<2&KjP"V^Ue7')`-W&1BUQ`ScHlh[-0V1rVK];Z=0F]"sN3*gf.=T)d<Do5]Gab.V+UB5;D%bV#k`;]eG[0#uIs%#?U&?_@32XS[VM!]u?XBrTIEreJ2lQ7%9nOJh5XDAN@R/*0!pIN(3eV=f@tEeD-mkX56I&)Lo);GGNdJi)]S6h!`$M73E=4B5F.s\S.]B^eK!k:<>+nXZ;!_&H<G_p?C=07Ve#l-Q@3TU7%@2)'!<;uTYV9c$$gg7F:Ck`^0*P/_79G/QWP)s)rfMhl(<@KlF?HKFF"m"1l1D/KB';/1#*[nXJ?4b1`A6<N75lGJOnda`#kRj(-@.*pqNSY)S[J3n5GCZ.8&+6_D[@`Z)2AhWX:@WDc/.?*r,>LsU4J-eq%,I#*rlO*PXkN*&&dsVQ&75_79h$7Ol0c&-D</Dm\/hX$#cFg0,W*O,Zt5b5EP4Mk-@^.n,1:9mnT)@D3'^W!Z*^W'Y1>DLi+@fSBd3sL_P+j`W""WW?S+0Lh9lM7Ncj+_QMS2+U\aSZ-'<#BeqkRGuT%\DK^^BFFJ4P[e4Mgl#n&!Q!,mAB*9uEqi2!m_'``<^S1K$h4-TJbdWMV?8nBJ8"J7qlP%9,YCGoRZ/8[C1QM(1Q=T.-/=FjVQi'qCknOd'"WeFdF7Ug1B@*+7*=ma3h"4Ku32GVm-W4e$oba[\rLn^bPLm#;#A[!QrV~>endstream

-endobj

-% 'R253': class PDFStream 

-253 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2810 >>

-stream

-Gb!#]gN)%.&q*PUrh4+6f%H3(Oh1"N*'9S4-=`+5bfnXMCC27/#nmkH!)g,rlaIfU.I(B3:1dG0?&;87dXCt6T*?9%)o"c7Dk$l69]>+!&Ae^MEsTBD(T-ZZCARk]BD3&T_g>[FU0u?c3IB(>3"O2F_4]TjUE46C5JpL=C84'Km.XnV65Tq%)V:l-#=4EZCqFVlJ?s4a!iCIao^?\p?eiujo#!,9edTDjd+"N]$k#Qk(cJVbP-7<u6)6$Q;m%mA$*>bks"KkXP-$aK$m]IDK2M:?!q[I1SnbS8[Uqk3RH0HDaHdf0EML#HV@ps%2g3/L*l&KI\=%6R)=F;N-&J:3BI6[4@`8tRZ\0\MAf4D.rK<RZ_[M<&V^nmr645]4QbY-hQ3c:rVRP@+<WfJ97&u"FV)-1m_G/:j^KFf6AOal$JXGd/Ud#:&_gmER[Z?6ml?o][Nl5V`9H1Fu[J7tRE=mbTAW.hm^hGf&*!@p%G=jsB?IGM+Bk?*<XI.+WbfVo2AlN2[ju`[nYh)##T(6k3oj6-!5qi"6,CKh1_a!>$3:&6$R9oJ#,c?8Mq=4=!]?A*r7)Sm8j]%DM%W\:1FI*s9BMLC[4PW<-e"42q5:U`G7^J_0`k>AcLukiTM^?*m7i-SU8Z%aHCW=aFmbEFo.$<YkFkFJlcZ1#;7`5QW"F$p[UIA)NmCp6,/M+K9(30df`B#BQh0(71V/^i_.D9Er3l@d?%lacED&oiOHS39(PjT1`\Bdi>O_rp<6W5N,:71rmMY)Y:TH?=a,@SseFo0)8EOfcgK@.Ij^E3jh"neWG&*i3t#+1<&?EGJmMu]GW$kT4k%ru`DqdC%"D"(L5ksNuucf[hQlV0&.l%654b^)]=(pl&E/MP/(MAnsN!m!VWrl^oF[qPC:)#g.Z0r#Y\k$jI:],Qka%p_tRY,JGGW5d%a0!c>kT_"+_N%2nBhu+,%>Q;m_gnNSg9/tn4aE$uLW;I-Z"8=oY)4SR3j[VAl7*.#ZQ<`U-:pJ4X$k)i!m5CML$n4`@5/H%<[.tJK]>EPYB@7_0.kO`O4M]e#i&_6!=%I:XM;;"&j.'HIjKu5!UAV+&8VO##'`<.OG'`i%eaLtfgRlOTrg6B_DoZe!:8iY"`<R7_^JBPh)4p1n`$Znc@l=Ch.IqIg7-=+C)+Oa0927,VHBp:Z$:V!5gH7OqhKKO%n\;`*<aoA"j#N$-N\1nJ-olV@cmSm0<R!+J$'.YL/l?RCA1Fi%X0g)IdrCR/QeSf#WR*k@"d;h_l[W.!VFpXIUqGFYj,9Is*sT0TTCrT\G<4Umr`d*%>U0AS<\1U;V9]C,+S87k<#,!>V?@Am9J001EOdPCPZuq_7a,feM?1`9Z#poU0cl"8=KSP$j]PmWMs>TfT!M_qFd8B7]cKsXNr>7!g5MrS6155:O0o=%gd?;'T\h"/Dd<GpUs-+&EX\dJMu$q;lUNo+9:@&Fr/MBGed2^Gh-H@9+#<p@^NB)Q.oC5(;2[g.I!Z4S=t>B%WrdmgSeEn^7X19ce`<8^50;"M/_qFISHZFj'UDXcB^(sVf>[Wnk@%22P'WA$@U:kX[/7A;h50ICgspf-6NAjuo@_[=6_^,nZirNZcm=@d3Dp_q'DCSZqXG!GDa(i!\.1p?;!HMNCJc)t\/OLC0aHZn<a&"1q?@+X#9R;0c^/PLbOXbue-LP9.sd[!Gp6;[\2VA2as*j^0$I-dO&Ei#IJA(&AVpYq\eg.6<%#QG9GQMgUVPC6j%=b+r"K[4(mgU"BZBH0$BL<_s,HK6NJis.$BMFr+6*[Nk,Xb*RBL%@[YoRYFB4__I"I`-nF6!C%R=.=04`?aNJ9@"0'\M3jBfog]7';KR0%aM$qEGd#<7786urUh+R0GOcQl3P-XinnFM@J4Ztllr&:@kqNYTamHYlUOT`0*:)0>]Oeb/h6k;.j%>?biio+j>d.sNp/V.l.:Iobs;cglRt_;7U6o+k-ifJg4bhs-bVlp$QeC@&mpE66]?5O<4(Z_&K.Y4EQ%QT)%hf^Z/SYARN_I<"q,$[<ElXuT_F[$;6Q<`+XZdt[#7NhV!lQ&>N/4J;<7X1aFL.E@Y?,Sq?UM/LO.Ip@\b2,XE.VHB<F2WR%g7>FfHC(uffO*L^il4%*acraP?fA:!8B!j+QVR`^!&42lN=A+m4Cr>d&k`Ngi@H"+njDSMi\\s)`U$Z0%EJ;X8ML(X?-.IO"Mp^)`=bVW'QpnQ-jm'R<]ui+ND^MU+12MA9>imJ6kD@$f;"\WJ%+0*sGLX"g;1+>iTh<6DN17-u*/-\foC)o4L:Pe$p.*020++G&V^R"hTO4mO^,b(\`$g-TDHnh[;;*6bF+_)%d/2N4oSX!'Xa%t-KuRL@;KJJsW*KeK;IUcK=&HS7PA3\Cp<KH2%d>T*JPpTq=JC``W[6bHbt7N\SN+Y-a9H+T<lA%]VgZ7Tq-.;ZY&=^i/at])^B/,c/C1>c<9u%krKY:.UkU\+]a(TA!(j.=BCY&<LhM:g>]]&T92e@Xnp2!6iMQ;0;k=j=4.*8`.8`RW<VN1e\krP\e?7.7-\!cAjr_j9'm5+:H(lk-m^ViY283q>^[=Ou^[7;-47ic4o6/KXYOIX@mVVj+Hcb-$HcbK=KC9g-c!1S\iO:VET%MMgiHC%_QY(Da3hpV+-YAUTI=KnV#_&NHs2==$oJM0:s/E%C]/J/D[>RaXkdA%AB@fd*[r5FZ-m$g8p?BtSa[./=?V^-$h".Il?LAI"LCJF#;=3DkHb9&-oj)a9;[dZ\d?;Y3C`gt/GAEL_pNPAO5CqWRM`ul&3N\%/B*^VLp-2MgcX-~>endstream

-endobj

-% 'R254': class PDFStream 

-254 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2804 >>

-stream

-Gb!;e=``=e&q5%is$OQ'P*-rX4L/0qV-%o8>q9n=HFL?6q_/),ikthO`W27qn'aFP@fV*)W&UrfU`uKm]>*Ujl[]9nrd+Ds:'&(9_"eo[4<G=hn3SLU`ERT#Gkp?_rq!/K;$ao)9I$(VC%pQ0X4s/D)gHf7pFfn3Wa<$Ze<s#T=JXl#%X-n/[,]YmBM2G,k'(e(c+\bJDm9";DuYapqc#fXd[+PY9PSS4-1nY/DaNquXc.1t;U5bbdY.>^.AAoZ6`NQ7<4UXt&eVH:a:-q215jbg&1N)q59&%M8$Yg$"*!^oEhC/(eFC0`&hhfU<\d8-]u]Vl[IPhECKVuW8@0GG$7GSB=GmRpS>S8-(+[4f:nWus;-G#)MIHE7-0D"&UWMAQP7QMlWb!EkL@I#9NBH:jF*Xs6rZ*7h.0P66i!$9QWhTQM-FChFM88fWc2#WWNK(aGBE5oQ<Vq]-jlrg6`ZK$t-IHK,Jm^bHJ71)qpt3R1*N'R)!TWCtQU*#j3E'LLcHVUIp-KNGdCi7*-mZ_dh'BYKfodp9K[A'l?a2@8JAm5pMW,3m9MQVQ6n?QQK#lrID!%2R$RjXtNZ1Vf"j;gI9-!M'AE<o0EZ$+uVg;u=ocdW&;Cl7oifEH/h+_Fi$k9^Wa]<eBIpJZJbE`^G,QX=HauLulL+dsChSbg&&Ykt^8T$qR#dTE4;Lt*6Nq9M3f5^&qqg=^\;$IJT1+(3BHd+>hK`i;e2p8;UQGY<;=`[if%f,Z0EdhX"dCC\.QJbUl+4'L5bHP^%S:I^KSs'2Wd;EZ(W7OB;P\!C!?^CSPH,s7GM%#C!nq=8[@9iX:(^<)SO:VAaNISio-M0*JrqET\O:6I89WsnJ!3Y08JK&?`gebK/\)$)liq4QQ8@SJ=HSp%lAuF+Ib^,g\98ZhHHJMWFJYe,__e>*giR!NQa/1eSp1_(<aI_4$?oU!<]3@/:hX(:uHP\T5KgW2ZG3,U9\*F(1pF^k2f4O:jZ9(4OKnb62)32,K*INWCVLH!5Y-YDOcp+-C'SfaFb.G?lenNW>m`nrDi%h[jPM"@u/9D*^.m1.`n8uL%V]*)(AA28jpl7S4aV;`K2c)3XJ]pWAlql3t<dq1R2`r^6iX".VaV/oQHiaEGX[o[5>jOnQUX4'ohCbGW;l*ZYAfScX49Kfqpcc.`1M7bkm&3@+&U8%JC#DIV7[.RcC:rV3&L6<Z)O9lpW7'\uqjU%/#Rj[l;lXhpEKF!#ohe0/jZa&%OE%,q3LCA?R>D>N+]`Okn3huenN7OYf`^=\k:<.q%#%p.\C=teL#9k].g>t'"-'mfaKJjj1.Or[$N@^&1J7YMR9>BVjBJ4s%;+mOD6:8L:ViaIbsph@"`hI*1&5.Y)M&W!<bG%[Ob+U65mYT<5X+_;'Y,A#W:t<]W#l]PVH*XYk';MX/^?fa\]SK`#@l/N'=5V@Y0L1,$R0ijN#$6P?t,=\Vj\0\!@L9f8XC4>NY8pRDU+$X84%u%l%E$+Md(6l78oc;]\>4^Y8%sI9#ra6pa-*-V!H9C'M`8H?#OnWl+D%K6YpLE2AY+iA^;5LUOsbFPOP6$HQ4r^?+!U7%N@n4*$4RPJa3GKpt$>bm5SS`ae0T5n;?72XYGj"Y$hf4bVKYAW"*I]G?[o`!SMuhhH^&d/)O\WP?g?),>rHAW@/,5nLQt$NXq+[=:V'p8o/S,W\;uCJ&jMA\E><kI9Wu;VW>qq]e/s.-'jJMi!NSH]s7rIbWtNB$Q2UJ_@gi>[3lUs6783aSR+LH(\nQR7l>Bb2AIiL.;=CiBRtfhoUru).m;Y9r&K(,";</agai`X_-F`ldXLmY4Nai#']O3b+,jj[<<CsZ"e)a*B6tbeN/F^)6(*R*-&;5_GW8X@,KAsdDk,(RA:hW=F$P0"0J54_Q0FlD\%5..BS"\[7]FbfY:_n;c&B6iR<a.MJO@iGP=MQM*F377THZ%!j)-pZAm_]r2TJ$8`Z2ETjA4`#3r+&+-ZJ"'^ln[/Gu=F>>SQsge)^jJESQuL/!4Tif^C<2Pt0Z]+6tC,5pdH7-up^J4i_:US,AJOa.I]c/F\B(>Yq$7aQ[%rT^Fj[][!r0QPlJ[hN%O'E5FU*VX4lu;bX4RSs<65d[.&jd`d@bY-m\OSl/EN;\E_6[#,hF=2d>!=1ZmMigRtWhEA=!B[n[b/mabnBhTd`FH<>4+iIj50k`/L"$aqTUcnN&)DK.sjp63Q"<Be9XoJ%b65+3Hk<e^!anKNkF7J%o>3/(N7\IF*A/9;K^jUlfMLlpY_H7I9cP2rc+^,P^Nk%Ib5tJ7Eg2ab=h5;s<3P36]"LjEr[/uh"^>&g.%jISnIZF]MX6S,F/EC36+nK=6rrZeBA;JcAcE`&MX9kYU`:-h32p0k<!S!$`f`@D+-WQX@'l?(8QN)lCn[ul1DhUQKLGU`jH7PB]U?)5H:s44V2r/_1N'X#B>FELGlRtoCPI@8L!r$AWbUptYhXs*e[8s<k"s65pV2KZL)I4.[S/#Vl#C`W$_Eh90kRmFsa\W%ckp'RBk)MO[*'Yf%*H,bad,r!sl\FrK/*5$Gi4rJ+C[u,PJUK^e2a@<>rp=9F2+/goC1i-Bk'\@u)h)8X8Zr48HJ_()QhkZqPG,dJfHKMS5;-L/_`-UAG,'\Uo/2(m/>=UnkXH216*b9lC<^eZQdnCoWIumAqMUDY`t?F%:E'"eTK\(u+36O@$E\$a!-\2bBQ%&n6$$@5CoBN+N1"d7Bo!_2B<<eml<QOb`qF/%5K%q:<CAI_]CdieYc]KrKBg6&0@;gWAP1rcGH"B.0>)]&413AgD?~>endstream

-endobj

-% 'R255': class PDFStream 

-255 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2377 >>

-stream

-Gb!#\>BAOW'7J2#rW=KC:.JnblJAGM8M?LR=/V<GSPIW=L]f"L,estar9<,5/3m*t/DG8"R7o`"6]f+Ofs>=8&[ESZK^S:gBC*5Fqtc)0Kb7Oc/0"n)[X--2?Tio4ao-ncl]X&]U0omq2b21]Fr<3aK%Y)W7MBtBr#'YegOj+SHob]:S:tC%AaE2?c@Q?C3HTbn%D)l^0A5Um>CGUns2FqaC4?!?e='MsI`.cJ2KXscO=BSmpF]^`%qd\2)VK8i8afeX8$=Zu9#[o?AYlKPKjk"n=g$E'f.30W9#Y"X/+%Mq2C2FJ^i[]L_Z*+ON5r1WL0;df<\VEkZI]&r(9oJb@1'+LWA_,bZ!O^dQ'>J3Z_GNObcTC;":kK\0?SLiVMcf5i]_75M]`H.+_C_p_Zk3FE!NlmHLCM0,[Df8=*mu4E[NZJ_599dYZ?H+.ta2G?^+aKpFk>l=Jbcj2RM6>H1C$>Io*&liTC;\"`FHKHt4ZgFT1ed:gX)qQq8$*<<<l2ngNja'fhI<h[&s&9>jTFGVLj,OUG_@LqpX.4ri4naGm2%JIar%4\MTUf\3X<e2_C$U.2260qm7HGNT%W)Wc,fZd'K:+9'CADd`V/Y=HEs7/`A.\#iJGcrclNPdOf;#A4--+R?GsLleBEN&Lb<9>OB?VFc!Y2j_ND"<GAF]j'rq&?s]N>:+?Q,[RrWl+Fou&;_'iS:;6[dh**534^U0$QX`/Q*C]nM:`rU:))rqA]QH%i=g+]/"VZ^&(ls3Q3/IM*)OL4HQ*AslY7t5'N3n#a!hOS-'(h!"EC`+R*!sJ+BKHbV0<jh!qsWHI^?^a4'?;er*kKeoLdTenEEJ:>I.dFn?pK9Q,<=o!<tPc8sFsT2g.Aq8.YK`*Q;hFZ8Q=>QdQe7V82n[1f1!N]9R@>!8a8Up4OE:7"t5f71.6[%EHr:?"o1JBKDT-r\&jPmGfrE@c8`.Ho\A,@DH46]R]Yb^cbm.+L8*0+mP+-4<+RCC",)JrSk"F5(BG31n=m3OH##]1aH"@L:;cV!cPNn1:DS1#)pH-g..fCT2W'WdgPSgH:[B!E'c%f=tSXHA:HSW]FD7FY;O(WjAEPM&,qd_*LE2;MFO#gK<>TDD!@/\?)^&E(la>]<_Fog4dCn;b\Uif&F#-Km4Cj-CXl;IJ6aIX,e(SArSW]bMpeik:Y.OD?TWgYPSYcZ7,>\UWD$sK4P3X@6(3tgg/;VF'V'iLWl3pIPc8&%I"WiTNk)-)AA4A!WdY:ch5;N=P\d0U%2QZ+G\Pq+iF'A[[Op(P'=)R>R0N8e2lV.cE\n1oI0pX1%HKE(/.m"nLN9Pg(f>B8IUZM)pe?_)8e_P_V]gVX4k_4FqaS4pY?^U$<uXL1aM6(MoF=h#TWSAg"Cdi#isZAug0l"<3_k=Z!]6.U';7DI<G!NYKJ;bgB`cdALAVUNi)COBWXYLA>QO/UO;UY'Oq/M?QIX!!ZDt&r::rZJ9:I6U3!s7!NTq0Z&Oi<\Q3"s!O`9Vk=k5M*[W42H#G]VrjZXBb\q*7:P)FS.Pr(L@\J.KP@ilP8+\Q8<D>Wc@h^20kW/%RU.<>@e.^nY-?=\((?EgHFUk*o-.<0Xt]+!u0\kSBB=>W`r.6^`kr!<KCTtUAOcs@llF()O=JNPEfR/4o*L*jTte<bLmX]p2be;!Z#"Osn6q"gdar.&U*M\+3c+1D+!WQm8IgT<^(GtQ=9objqT#!k34hKN9`Wl0U0q?&fGc$ic4^Xu25CWOgJJ@ag)L=Y\@'tSrahl9BA`;&:_V^XYr"H_%MC+D;`>%>54O&.fcN-\h^68)BV%4B8U)??!*JAuJmhtd8,Z`StZ^O+KQNo;7.Ucs:=E*R`J*7,fl1lQC-[,sph%UC2R\g"3Ic4pLmFicR<W!OKSmOUi6d:6;XbL[rGHO!i#K<hNqVCDo^NGbD_o[/rC^TPn*ZR1sWJGlRO3/jD.@F0Jo]^7*W[GFt.\o=ZnD2#&iQ=qAD@l-ZH.Tuca&OhW9On%hRBcQ$W9`bu>8NLa^g6H^18bZI10qP-<Vs:NUVnNp5*?)8l_]'F@C*)o8)b^g]46V,k`>4YY.dH0='j7&8Bnl<jUq7R3/(e).f^7)MEo0F,?$F*5'I/Zsl1("rb)o@MWScU*>hGRYS:YsF;=638hU07$e'4C><YmVD%pbuPXtIEU4Q.nigeJ+>I&J/ni)a1+oi%<9E%uW[E;nHmaq7AE#X*.:1&Xh:b^sj7L8R,fLSK,K+5qK)_]+'9O.pp(R*Ib=:8e!(V's+Eb!db^*HYi=ETJg!GQn&]R#=M,%-U4JqNcJ+#'bGLXh-S>c?LeecJ>n#b"AR'Kkm$N0pS[j\+VM4o&o&<1!OiAB.?=jI#'QEq6Rg95[?'p~>endstream

-endobj

-% 'R256': class PDFStream 

-256 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2070 >>

-stream

-Gb!;f?$"^Z'RfFDs21D?1t_m_[]p9i9=!r,B:A3XkW\)sfE0RTQ7L(Nr;40jbVohTCM5a_)'[b^e^;pXk=TcgK-/_CNAH*c!W;cM"kSCC#i)T3Ku$9(2gG;dL\\O3j$=JDc\V^NB<BsC[Q?-`U5n\g!DHk8_H,J]8!27.!uPS,\dhbNqmshh$$;LSo+>IlpGs*Ep^Vp@9_Vo<pW*3PQVD6>2fq`3:Dec@q42EUhm1>r*&$q/CK00tHVn@?#HmOZ<nAn7/..gnlmH%))m7VP.aHQI##m)I/9jjP;U?eM?ai-+,H'kZL3!%7[Ggm$a01-b?p`h@B*D.KaASmIFpPQ';\W=TVe&1@`'iTl2'E<9r]gVqM.A@1JdQmfkJ0Si9AqX%"D8$gI=M4[k%4d`bKkZ"n:=@a^>&dH%F^SG-@sCG3feQPPrXas_\*<m'p!VI6`R#Jk)dpp(/rlfL;o<;k6e7t<2Smg'\Z:q(sW+c;!)*kU<I\ENrdKN]'F?.X%"'KH7nHCP3+6b[Am,4=cq,@bH)!XbAP&M%Y1@<6U@M)".k_pakMY[%qsX:5e:HB\TJ!j=2oh$[:M2V;l@?:F@5ANa'3$,!B/0@l+m*`CCr9aaMkZl[0&soi;lgjF8nf#a4g0\?fZ(G97^J[ZeoJUF!2skXa=8q,S58KZtE,/HsY^]#KI4BrglQb)j(jXqAP_))NRphhmlTp/CS4uL>:cn'6^*u2dm"iFLU!Vgf=M-q++3d+uUuTRXjDOjfPl@LTBJ'jd:0[loVB)1gWsD\*S&UG*3V/4:WB'"XV8!mW1S:/%";njAO\56s_YbJW(s5Kot;]JU)HT6Y`L7;G4W=BojJ=&NDR0/-o_/H#g@*Q01lj<c-4LquT2=XG*]t7"s-0,$&`E(/hW<_R"q`T,E/22R&&F@YUqs5WV0E9P=$D0F0^7&FPJCSY-qqHJ=Rqj$`hqY_UM=>dl\o%fVcoZ7tG@SP)E"oWZFF][5p0Z*Q/WEh+N`l,k^')V$pF\;(;Yi(Z]/BgqsjNEn1_?dO5?oJ%sF9CqiH6IjW@UY$L&bA.fqb!1%l<^faCrb_'%F1"jaQ>XIPfA.Bu`BPq*RpkcRW,1(?rOq0l&W/:=GU`;^5q8SikmT6nOS),mm@I(d1eSQ*8X[V_%9`JIoX8-g@HiO!:RECELm%r'hKS_6]ba9Ts&-[&1TMF;+U"$<YlIc29R$8()USU=F;3"-AOC8_n[U)4Nm].\,irMLNUauqpRV]WFtH=KP=/]G2%q=Dd*fc)H8Pr/4W6PBIb3df/ZH-o$d?31H'T5>\tDqup#jp;rSKKHhIt$91QH5H0Y7mb6`_-PCP(XeN-'8Mb'=&26hBm:iW.nO#gO5)JNl:e`"Iu9KTre7YdoEO"@TR]$XBd!M>jF&nbm.iSm>hkG8g_^Q6HlX8!A&70h]ZfP[lmHPEL0rJ6kV:YRq,M@K"?F"cXtn7#'h[<71gUe0,]mmr_FHI6jVf?Dh&V*?.^7Qqsca!`MYMP/[\H;5tDX5OaV4Ko9io%tG3Yf#bugC_Xa)\QP"E5.B=s0RhT)jYEt[^f4BDOjl?T';Va6YK$:S#o(:)5Otl3DFWO[Ms9>FLm7C\cuDjX2h)2aiH;i_jXWia&mNf]"A6Q&qPVMANhRf-UAH[A`:LGC4=#o=p:"D+P5(:d_X$upA%eXqLdt$T9gr<Lp`>PJ./I2CNt==1WN(-P_3-5^cbse'erBU@19J(eq3ACh!S$"nEkB$6ANn@.4reHdSD`T,_<J7iAqSu6iKc>,[qbfshIU\sq[`^G7GjQmOs)<+lH6nq4Qo/aN)hkZVA"\lBdANu)j=;uR[XM97We',@5P0Q$Z7\3hK%JW5/Yo0('I@S4<_6jY>h?VF$s?u`^snSj2:?Z`(Y*?+tmfYe(QA]CP(!12W`q)/uQk'rcCJJ\CAbX`MbYMr[^q_1M&18LlCGa$8GfOUS#N6j.%e>7d@gt.V*"OVW_&3B6&$:IWodU@Bn0lTN00uk(ZlkptAhh*;sA1(b?\,#Of$T<cI@d)X)q<$HA/o5m>Dl%*^&<H+i2dDhQ`GrWBM$(6n~>endstream

-endobj

-xref

-0 257

-0000000000 65535 f

-0000000113 00000 n

-0000000249 00000 n

-0000000455 00000 n

-0000012239 00000 n

-0000012426 00000 n

-0000012668 00000 n

-0000012897 00000 n

-0000013126 00000 n

-0000013355 00000 n

-0000013582 00000 n

-0000013810 00000 n

-0000014042 00000 n

-0000014274 00000 n

-0000014506 00000 n

-0000014737 00000 n

-0000014967 00000 n

-0000015199 00000 n

-0000015429 00000 n

-0000015661 00000 n

-0000015893 00000 n

-0000016123 00000 n

-0000016353 00000 n

-0000016585 00000 n

-0000016817 00000 n

-0000017048 00000 n

-0000017280 00000 n

-0000017510 00000 n

-0000017741 00000 n

-0000017971 00000 n

-0000018203 00000 n

-0000018435 00000 n

-0000018666 00000 n

-0000018898 00000 n

-0000019130 00000 n

-0000019361 00000 n

-0000019592 00000 n

-0000019824 00000 n

-0000020056 00000 n

-0000020288 00000 n

-0000020518 00000 n

-0000020749 00000 n

-0000020980 00000 n

-0000021212 00000 n

-0000021443 00000 n

-0000021675 00000 n

-0000021907 00000 n

-0000022120 00000 n

-0000022858 00000 n

-0000023089 00000 n

-0000023319 00000 n

-0000023549 00000 n

-0000023780 00000 n

-0000024010 00000 n

-0000024242 00000 n

-0000024473 00000 n

-0000024705 00000 n

-0000024937 00000 n

-0000025169 00000 n

-0000025401 00000 n

-0000025633 00000 n

-0000025864 00000 n

-0000026094 00000 n

-0000026324 00000 n

-0000026554 00000 n

-0000026783 00000 n

-0000027015 00000 n

-0000027246 00000 n

-0000027477 00000 n

-0000027692 00000 n

-0000028181 00000 n

-0000028416 00000 n

-0000028652 00000 n

-0000028887 00000 n

-0000029141 00000 n

-0000029409 00000 n

-0000029654 00000 n

-0000029926 00000 n

-0000030217 00000 n

-0000030494 00000 n

-0000030768 00000 n

-0000031049 00000 n

-0000031327 00000 n

-0000031622 00000 n

-0000031913 00000 n

-0000032194 00000 n

-0000032508 00000 n

-0000032796 00000 n

-0000033079 00000 n

-0000033366 00000 n

-0000033626 00000 n

-0000033906 00000 n

-0000034184 00000 n

-0000034474 00000 n

-0000034755 00000 n

-0000035051 00000 n

-0000035334 00000 n

-0000035612 00000 n

-0000036154 00000 n

-0000036443 00000 n

-0000036728 00000 n

-0000037021 00000 n

-0000037306 00000 n

-0000037604 00000 n

-0000037841 00000 n

-0000038062 00000 n

-0000038239 00000 n

-0000038460 00000 n

-0000038645 00000 n

-0000038863 00000 n

-0000039236 00000 n

-0000039509 00000 n

-0000039799 00000 n

-0000040021 00000 n

-0000040333 00000 n

-0000040573 00000 n

-0000040812 00000 n

-0000041034 00000 n

-0000041366 00000 n

-0000041605 00000 n

-0000041846 00000 n

-0000042079 00000 n

-0000042320 00000 n

-0000042560 00000 n

-0000042801 00000 n

-0000043025 00000 n

-0000043397 00000 n

-0000043637 00000 n

-0000043876 00000 n

-0000044112 00000 n

-0000044353 00000 n

-0000044593 00000 n

-0000044833 00000 n

-0000045058 00000 n

-0000045414 00000 n

-0000045688 00000 n

-0000045978 00000 n

-0000046215 00000 n

-0000046453 00000 n

-0000046691 00000 n

-0000046932 00000 n

-0000047157 00000 n

-0000047509 00000 n

-0000047749 00000 n

-0000047990 00000 n

-0000048229 00000 n

-0000048452 00000 n

-0000048794 00000 n

-0000049017 00000 n

-0000049329 00000 n

-0000049570 00000 n

-0000049811 00000 n

-0000050036 00000 n

-0000050368 00000 n

-0000050594 00000 n

-0000050906 00000 n

-0000051144 00000 n

-0000051383 00000 n

-0000051620 00000 n

-0000051843 00000 n

-0000052185 00000 n

-0000052419 00000 n

-0000052656 00000 n

-0000052962 00000 n

-0000053237 00000 n

-0000053379 00000 n

-0000053623 00000 n

-0000053752 00000 n

-0000053958 00000 n

-0000054115 00000 n

-0000054286 00000 n

-0000054454 00000 n

-0000054667 00000 n

-0000054838 00000 n

-0000055067 00000 n

-0000055226 00000 n

-0000055406 00000 n

-0000055590 00000 n

-0000055780 00000 n

-0000055962 00000 n

-0000056145 00000 n

-0000056312 00000 n

-0000056498 00000 n

-0000056722 00000 n

-0000056891 00000 n

-0000057060 00000 n

-0000057250 00000 n

-0000057426 00000 n

-0000057617 00000 n

-0000057836 00000 n

-0000057991 00000 n

-0000058168 00000 n

-0000058338 00000 n

-0000058508 00000 n

-0000058671 00000 n

-0000058863 00000 n

-0000059058 00000 n

-0000059287 00000 n

-0000059445 00000 n

-0000059622 00000 n

-0000059781 00000 n

-0000059969 00000 n

-0000060197 00000 n

-0000060395 00000 n

-0000060578 00000 n

-0000060757 00000 n

-0000060928 00000 n

-0000061098 00000 n

-0000061280 00000 n

-0000061460 00000 n

-0000061639 00000 n

-0000061804 00000 n

-0000061981 00000 n

-0000062167 00000 n

-0000062335 00000 n

-0000062512 00000 n

-0000062683 00000 n

-0000062850 00000 n

-0000063023 00000 n

-0000063205 00000 n

-0000063395 00000 n

-0000063551 00000 n

-0000063737 00000 n

-0000063972 00000 n

-0000064131 00000 n

-0000064320 00000 n

-0000064506 00000 n

-0000064686 00000 n

-0000064872 00000 n

-0000065052 00000 n

-0000065224 00000 n

-0000065448 00000 n

-0000065612 00000 n

-0000065800 00000 n

-0000065988 00000 n

-0000066201 00000 n

-0000066341 00000 n

-0000066640 00000 n

-0000068581 00000 n

-0000069671 00000 n

-0000073063 00000 n

-0000076143 00000 n

-0000079473 00000 n

-0000081897 00000 n

-0000084809 00000 n

-0000087559 00000 n

-0000090606 00000 n

-0000093498 00000 n

-0000097965 00000 n

-0000100530 00000 n

-0000104604 00000 n

-0000107170 00000 n

-0000109601 00000 n

-0000112475 00000 n

-0000115430 00000 n

-0000118379 00000 n

-0000120901 00000 n

-trailer

-<< /ID 

- % ReportLab generated PDF document -- digest (http://www.reportlab.com) 

- [(\022>\213\334V\233\247\366\264\322\211\021\001\252\337\213) (\022>\213\334V\233\247\366\264\322\211\021\001\252\337\213)] 

-

- /Info 165 0 R

- /Root 164 0 R

- /Size 257 >>

-startxref

-123088

-%%EOF

diff --git a/pdk/docs/compatibility/android-2.3-cdd.pdf b/pdk/docs/compatibility/android-2.3-cdd.pdf
deleted file mode 100644
index eb77a7d..0000000
--- a/pdk/docs/compatibility/android-2.3-cdd.pdf
+++ /dev/null
@@ -1,5223 +0,0 @@
-%PDF-1.4

-%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com

-% 'BasicFonts': class PDFDictionary 

-1 0 obj

-% The standard fonts dictionary

-<< /F1 2 0 R

- /F2 4 0 R

- /F3 131 0 R

- /F4 133 0 R

- /F5 145 0 R >>

-endobj

-% 'F1': class PDFType1Font 

-2 0 obj

-% Font Helvetica

-<< /BaseFont /Helvetica

- /Encoding /WinAnsiEncoding

- /Name /F1

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'FormXob.c4c4c9f90f2c427799b277ddd57a9a5b': class PDFImageXObject 

-3 0 obj

-<< /BitsPerComponent 8

- /ColorSpace /DeviceRGB

- /Filter [ /ASCII85Decode

- /DCTDecode ]

- /Height 49

- /Length 11548

- /Subtype /Image

- /Type /XObject

- /Width 369 >>

-stream

-s4IA0!"_al8O`[\!<<*#!!*'"s5F.Y8OGjP:f:(Y8PDPQ!<E0#"70H8E,5RU!!$kRFE18L66KB5=s+('!!3-/!"JuF!'"CsF)XEA:eUihzzzzzzp=93Ezdk,!IE,5LSzzzzzzzzzzz!"O$O=]te*!A"3N!#0'J=]te*!C-Vb!#/mE=]te*!E9%!!#0X!E-)'[!GDH5!#/pV@:T?<!IOkI!%`.i;F:Ea!N5tu!"NX@;F:Ea!Or+0!"NI;;F:Ea!QY6@!"O0^B64+R!S@AP!&/;$Bl3nN!XJc+!'"M#F(51M!^H_c!+]V]@r22G!i,er!;^PLDe&hJ"/#Vo!%;>rEc_9]"3:HB!$kZL=s*eFzS#-/c9N;&m!jGd0=s*eFz2.HUdTBcIW)6m:H=s*eFz--ZDi'@d'_[`)?O=s*eFzo@O$D!!!!"('ntn1GSq1!!!!"$b$*9"d]2go2bnl#:TWQrR_)LqmZV*rMBPp"53_T_"M8\EcqE_z!!*,F!!$MOEcqE_z!!*,F!!$MOEcqE_z!!*,F!!%1PB64+Rz!!*'"d<#?g!!!!"zd<#?g!!!!"zd<#?g!!!!"!!$nIBl3nNz!&+BQW.4jJ;ZHdt1dD$@W^$Oa-C4]4'&*Bd:d>!\<'UEb1G]"41G]"41G`QQF(51Mz!")7n+A>Tf0K(cgzzzzzzzzzzzzzzzzzzz!!$kPF^kCOz!"o83!"<aS:/:ii!"o83!9eBD:fIDp!"o83!9eKI;agZd!"o83!9e$/7S*R[!"o83!9ds%6q[L[!"o83!9e`B6V[U]!"o83!9e$87T'3d!"o83!9e0+8l,Kf!"o83!9e!3<Drkt!"o83!9eB<:eUih!"o83!9eBD6;dd`!"o83!9e!878j0d!"o83!9e`B<*'&"!"o83!9eHG;H3\s!"o83!9e3:92Y`i!"o83!9ds)6q%(U!"o83!9e<::.tWf!"o83!9e-=8Q5Zi!"o83!9aDR!)NY<!)*Ah!&FU/!&ag7!!$kQDe&hJz,4GR4-BJ3-!!'kS8:U[?zzz!!%+PG]Woc!!#B)E-ZJ<B4uB06#^dZALnrqDIY:M+>PW)3<9*<!'ittBk@>F9hbU;!!!!)!!.jh!!E9%!!*'"!#bh;!!!!#TE5)r!!!!"!!!%>TE>/s!!!!"!!!!Rzs4[N@!!30%!<E3&!<E3&!WiE)"9S],!WiN-"9Sc2"U5/8"U,&6#71Y?#7(P<"UGJA#RLeE$46tB$OdCM$jd7J$NJi\6NI5i!WiE)"Tni1$3gY<$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$4?gK!"fJ:0`c7r!?qLF&HMtG!WU(<*rl9A"T\W)!<E3$z!!!!"!WrQ/"pYD?$4HmP!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W;.0\RE>10ZOeE%*6F"?A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ/"pYD?$4HmP!4<C=!W`?*"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIqUZ,$_k1K*]W@WKj'(*k`q-1Mcg)&ahL-n-W'2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MHp@n@XqZ#7L$j-M1!YGMH!'^J^eG-NC01u",nG`Ffa4e4cpM":c88PCn1>L,"M]>S:ok/CblnWoh&#FYmpsZ*f6h'8mIO]^cdki!c&P7/NgtMOeqa+M.%A^H91+Y[F`*5e<*0Mi!INs5)nE7bT"_o(ZnRPP2Nh[.g9G3_gNKo-lLr5u4W\?PoW5p3@jts8l?<$bImu"h-G_]Y9cn@#KZ+/=&hgW]6hUSBAOXXZQb5utFf-?0\bAC!hWk54??CH'+Xo;O,jZG?r;L%q4D\)X+`4lUfe,0a9]im!P8(?-k&mdiO\P%4N?n)n$Q%8b5Fp!n'):A!Ka'XdT$0Jnj:W*cqej&YZfjBR'Fe(>,CGj$GbqP,0%C8O#^@IG;jCJ**k\`QbG[BRlGD?)2bH'P!Mo.J7I.habPKfAp*E`N;/hl%*^`@[$cPM&TPC,dJ*Zp1[)*CitkYc-sl>I+ngHfO/M)V4C(nk#UJIB;1SYM_H:A!sdj,-^>D82D8Dl2B[R=?+S!,173r#XEH9g\0]*Zr/drfuTXdO0tuK)O\?6HlmA+5R1C$_NdeK?,m`.fH'T-XM&0?-thFr#p\uZgaIr8Zpk6)S!%tSk+OlB=:NoQP#<P2]:Wr2f="DrKb/,Hs9gg6Wro\]p?!I/9;=5l-Q5-Z-+3EN[-)A?ml.3+HLm^=5jbW]qG/T`EJmkoT+fW-h,o[rOd)oNn6P2=CTdF(LUlW7b[`':!8PYA<L,<_K!Qd4$>c/lfIC1APF]KP1DaBXi7%4.e$[]KU;Z<[db]32%;q>L"]b>JZ[uV==1hB9*0-'#9;<UJ:9A#k3q:d?OD68Hn^W!\u#+g/bYBLAZRMZD0h>MM%_$IUNI'E$j\(?NWGP4B3u0_qSMQI"n=4?iVB/9ID:Og%=j<7bA@^)R9b3iD:0%hP1do%p#`.@(VkB)$2ELUM*<9Vrk%0LCtK[W9<E)&G$2U_1Ft7L)CcLP2`<EVa0&A%[Y7.ZH'R9if!jdcZr'8(FbLN,5Qqj!5Qqj^kn4j[E2oZab]!RT-B\\/\V2Xfj]Ngj6R/@D<X4^P*C6NEHZ]A=<B7]^iTko40+?10fd<OX->571\j`2]`cCAdG81rWJW:1PC]=AIr!hV7'kr+(nHXkZ[FFl47[\$92t)PF@rNAdP!B&(al$d8WJeVjK9]&kMG6S-Uq)sd036duDVJI9FH,!&U:LOC<@p/JSfQC#Y;FKK?F%2Re)V+ugY6!ZZ<K?7(0+7)'=@8]k\Dn:.<lI(,!Wr,iWL1j>)SHGR+N%)B8=LT_/S.MS/gRl3N%hQ;c.V8'W3Q`G.!XMlL+:j/TbI53XR@&WT$,QBQmLC>2Hr(B/TVD9oN.T8J>?"EJ09*"l#0TalHI&S#^<a]_fm.i]oa^,D@!\!&Aso"6sZ5;O_]!9(CeE]'J*:O.qL]^aPq7!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!9X82Hrf`t_7p8jN4`^a_VJg+@><Jio$8ff66IN^iE5Y9_ObP^)u^1+i/PZ._i7WSn4hD",-?@27R,t#BRf^t+8R0RpMUDk=_W=&e+ESsdPrA(as;]Y:a2Wf(]Y&2q=ZHV`7_U5ic=r$.QD0fGZ/h[C86u`hcVI5h$dMe.ZPt3a!^@8p4Mj1a/pu^o>;/G>?t>d$gS2=!TO]]X;OT1;mhAc,928sSepAkmHsDh_7h>/nA^aPm7159;`$;e>J+sodOE!EP"BTu,Ba&Hj!1#e>5>B$$2%e=DnL"f)d(A#e00Z]fJ`p[;H+^QO9lrs4U!t2'u\a@:0j+3`C3kH3h4`KQV)8[<i4s.h<b+-e^_)73f1j*lHKbGrX't@dnnS'ZIZZ1X&rTKiEkk+:*RgWbb0T>h\eV.f<K]lpo!'=L)pVaa8RC"/Z5>@P&12aXr75u`&!-"e/X%"8HYFP^\B3GKp;T;"RRl)[76bF?A([#?^V!d+CG^V%L,FN%maIXm=#!7-AgZ1qYJZ*oR^iK0cWR!R07Rl(qS,5:Cg&4+[/XqAD4AID)@]qrr>3(QT;sO2gZ=trX(aFE9GF>F/p&%"PlHP*o`C_*^/GQrr<N$:](TX]t<5,Xf[Z$T+,"-gS@]LK4mS@JNtOs,iF!3:ZGa^q\eWZ>X,Sc`!2,pJPDZd&_[g.*_Mp!"]P;n!"M'tkJgQ_]I#EfU&Cf(ou>P\KNBInc/%u6?YB;#F]1r&Ij:cYQi%O>iI8JC6)8:f):\;WXs?tNfbulGN0B4BJdS]\!<#"2V>PB/d@kppn8*P-f<i`%`1HcV+Lec4$V8G/a^`*o)tVB8*UCh^i1j<g:[n*DeJcjlEuqVr8bNV0)CHhPkXm;EYc5BUJ,)%,&,uX^Iae;s8M2N07hBYm:P@!^pknUD<s]4TKgc.eNBJ8!es=eTm$jO)Umo&TTCDC>"b4oYeUR'<.eKoq5IAaf5!9jc*<t*_a&0-u8TA6d(FCnW^,Al5-m_1)#UFE2-`m)]@:c;551&s#3mou1Mb1Ai`=`>SrS!iqgll)/r"=T%5PFU:Q*$!<$qAh:0uPuLb`FR;Hh6p5[uB>%P9$"5)iTe$SgnIfO0VUDk)4F];Jk*iWF*,DocW:=H_-Yqch=R3#Jf.r0+M`_(V5X+/0\#,Au_RRal'e9!#(!8!BbF^MW$-Oi1k`$P3!>NiV'Mj7DF*nF%%<%oa479jstZ9#OS@`Ho^`Xh[[:Pi![:3C)3Tshii9F._a`X'+qcq!?'g'jE@^Wq"OYiplFE1_`Q0JlJD[kdNZAf0Js7(VjKkP_u,&%Qt*LRGB>3b?8iO;Q!>@X'.bJK(s8,lUp/:1k)\/;DUmLhb=&rdC/qT`QJF*=T>qJ%SeTYgB7$h<)H:eC2B)7F['=t#gOhOJL6Hd=L$'ZuaMiDmlne1jZtO<j#rdV3%79(S!*>J2DW6ltm3"-\m&B%qP]f%crr=%1I08C<r0Y:_ra6Ybrf4Ri^[P"Eq')9*rJ`W5!9lAKD=+ZGhhs7;A8A2OgCMTXJp'jT;i5GjX/)6[D1+p"8u,be7Yci(4q8+X2ak.)o^-&]U\cU#CRCr*Ym)r(=3O&'mdg+2WS<TH#Eh4L!;?0<jm^U8Y6F]a(`$3%i;6-b`rXD*X5KSbmB&#]J'(-c&,Ps[rr>WeW;cj74'QM#!0=l)lu-9'@@DG9Q73Vj\soJu&_mplH("VW\@rm+T`l9*35lT[[_1+l.<g3t;,+M+HC%/"'S!r16#VM3TK)!?\BjfNA,&(ST>BD(r%?hSn:T#E']p@89=,!V%KJIr#oFe:#UCLj+E]Hmg"]`=T098oDXj+N#=).JN"mkiN,aaNVu@"XU)d1Q[]t4ba)to)!TAKCTuZ'rj^2@b'u]o$'4A%(ls+O0nS4ft&uO[Q_j]l=GJ;e"-W2`l]A2a;B:J@BpV.\3+hrRZ22'ML:hJ4Te0RS=6g$\$?rc;fbIIKG389C4UQEtijWp-6p$.&!f-Mg2DuTeb&+M%H^8Lu2d^Q(&J)qrA+8+oKo[bC:U;]6-%HV_;@iOPBdONH8[5o13n;jR#rmdA8!!hKQQ[l4;-0b9F`R*/ko\lXjLkqnd&*NBBPd$(!_dGA.k]8uHTH=a3oIks-rr<RAddABM?^&]gm77i0j@^.?4iod@:6gV3FoMH`;##87!+/WRkkH[ArOBW'gpMY.qR$8&dHOu'G?YZ:Tu<1po$_Q:4lmC5Qa+2fT3K8oVtP%O[>LGj9Zm<nIQL3m&&U;t%fZOf(t=K-)F>b,[5<HnAcsSRStM@o#GN.(^'B%8n?9m%>uL:3)K"TAl$$nVMoAM'7KfKGUuOO@+S>E*rl`(IDr)6/!3fB$!9d-`62pofgn#1UGd?5P?Sh(-N)OrFNO"N'e)%bXUGC*blBr[pX^tBiRWTU>MGDQs#sp-!bBl1\[sa-mUq%.cT$?fCj0+19"6anhmtpB`m[!_E>K729WGjOoTB78)5j=f%5j=Fn81'5V'Y&k+,`3HY(s!pG^2X)PJre"jn99V]1'$^@bX)ub!\on"`-u10LX?&$j9oW#!+)r1!9bW@O"AQGGciO?0GA6T:lQ8328%rs/&&\[$]LRRj4_JPn1PZ.hu3cJVi(-h$q&s4<q#oHnk3W+'#tiOOc$DD,b/BbB9G!23`j&Ib[7X2XgGjMJ&GR%/^^DPk2\rU-nKqPh`*d*Jb`@X(M4Q8%"89\QW@'sM4BcnJt8-9c*OnDl7.s[Bgpb<^5r9o"VpfLH)S]!XEZC"ZaY+qh((u[QgRfa80.5akRDklNd`AN5N2?ek4k(Bl6WgYiCP8@Fn6N"pt2j1NQ&@8EX"NL!(c\,paA"rXM4liY3!,^Q7[C`'SSh`#!$aWgGg)I$KchP+8IYK"TJJRY)iS_Uh77X]L0V_%.c#.0!oUS_pMIm/k$4TeXTQPV"NUDHKbo\LGEc@7oAdQp>+/G-@!PZ_B'He;m'@ge]OX\NuJ?L/V>U)E1o`mai>7C>PP])D1"><>N4Cu"im?P)R\[jm(IaTOi8!o3s.4\0[D]q*Aa4:h>@Jc\$YoRi<ZQ&dPX3+Z#[+B:g'G\@tEF?,bF(\?6/nqg=o@!@/NR*RbB]`/%nKlm!t<Irr<:<m?,F(GcZB1@5+&W5M%,0pt;j#fgaKOaj"B2m3d@br/`j7,d47*m!mrg?Opb]N\*W63kQ$1@S*>\.7t+V\Jb>2g@]rPrWpo#*^@V:X_h90>:$jRaH3luNK'E/Y3%:8!Pumo`Gm!.`MK]Wm+LA)Xt?E2i0)AV*RHO#c.kt&8a(?0%$&P%HLid)1H54FT2$rj3.uAQ!+3a'\aL/Mr];'O``J0Hd_a0>$%"O)bt5s@W4-nlIIHA>o7Lbhl#U1srX([D'Y&:lpj&r4&7QlI8`G_sHBeWnl'#C3_9^k/_4MPAGAZ7GD[L4tIF[\))d-d8,Xu<3+]Gk4ntR3%A%d"lZP6SB?N@_iFElbHharg(0E;-?r`TtqXh6Q?o3O7_dj"elJrs7H/Kms4,>KB$4O^0!\@+VXSkjb,Y%jA[)!/-qb\_`TC=C/PUBs4aN,5NZm3LG0>$fCeOE4B^.rTcV4ceX$m1\E=J@7A!G`iH8]?C0Q!+W7=<A)+-QZC"I>`^b`,k)9R1O]K+dd_^.eSZs\Itmg-NLdE[jOGk')?BR58!/b8aZ(/#E]_m@Ib#:cpV4,&_eV?WFI!eWYXr;d""U@c+KGU\"EB'$9OH[\BpLR?HA(Su(@\];b2!XD&kVp"9mm4OO3[?'-H7^?.Tfq$iuUVlh!YCngtTJam'c;n[-&p">nQ&04T3".)>HS;[ltbZ]JlhTVTre.H`6X()0In^2]^*C"D!)4N/hW0&,uWJItiD.nO9X92.$l/)F;')@=n(/j,t^33!)DP-jd]FJd-M9afK9]pa@Y"l?=rW)rQaQX4b;`>GHXVEXm%l1kn`8_8]ZkDt]dtorS('eb"^k08AlQ\[9F_`m[Q.:G?At43VA]WD3XW-'!8SJBg.S!#(^9Ge>A=*(MQFW@Tm$)(o\]Wj_V&f'`7Y``8OO;SU<M$faasmfn.JnDo$@nSu($Y%9=jg"IQ_B5fVGOoPK),k7#HO:REP!5lji(&n8%hc9[V^ppDBr"MF0D-Oe08thC8DhG%M&\?Gpk?g\oeeV'?Heg:?i\o%i,Y$\7)[^C+DVgc$)"b#<`8`hP2rZrK%g.`M)P.O>\*fMO-TH24gK(c:?dR33P+,%sa3XbcnF>rMrrCG*eN`OU3p?PYrnP6tIO"Wnf>4qB*i#Oe?d>n.bA^?]UlgZP)3j5cM#_K\-^$!Grr@Xi=P8`Cpm4koZ2L?Q_\&MKhln7cF4V9Tig9A]Yd0&E^V`3(.nJ6:od!,+;urOjjpe#FHu<bHACo)ao?K4k_Xog>XtgZDV&RkV;-HSiZhW!ErH;Q2$?]?+2UA3JU5JoRl9'"Yh"Y=;mtmYDmA'/_R.o39AuN1:=i)s?Z$C5HjcAD/=<40"1QH]B<f-]\r-6Z^HX/R-rL1,UM='5'jde!k@1j:lh6Y3bF,lYGoZ\-@\X*Z`/*@X'*!S<GC6`9Gbp^GD>drg<P0p=u8t0k`:<*V/1ZD3KYDIRBf!48MKlVEMh+A%UEH9''N9>18Z7@DcQN[!-)9%"%i*BFEa6]5SD\;2qHlfrPm'TK[,Zbc4nsJJDca$+'NEBSiS=pf**=d/`m1f.5'ua\I@;#8d`ta>LEN@7j^3+-;)^sFk92-&Mmnf9-daqHGL%0fT:WNJ8g1*XYphOC/%oLd&[04"&BeAHiPmj_)8J)Rl)p'D>\K1VRp:g<?ip4qD_o&&VnD9"EX53#$NJ^t2Vcu"%<@qd<\4$RW/BU#'&?gJU\<d:YphXJ\\@L1mMLpJMN+:$Jh5$d1[sJ%B[_7sT]=lF<LUqWjOl.5j8^q-&>[$@bd*E:a.-hMH&&<g(/,Lf@"3/%lq!7G`=RcoVD_19&^6*:#DBUa1jfTWUb@C:dg`3I^"`oW]r<5W<"tq+:iph7CmVP'2D(Rp:_j=`V6JN5gp,k;-oC-[Ur+5BL8@@rRLMo%!@FpUa'pK.`W+_u'9!1oJ&2VdtlWN,SoFfo+!RRsG>WdHZ[9"6k#dh)G^4WUArN:S\pnQk._T9AOi;Wd'YH7D1Y9SX5"Cbc<,\9=a!Q;U\rpDl"c>d2#e>\brR&hqu9%]SOO!7s&me4+jg3\*Z\J69`RbaQ<i,@?lj#sSu[*(FYB=lts+L7"Qe88^*<4Gp/6\)Eqj:6-"c?aT7?eJ)fh\3Xgn[$.u+$Lfl8pq=(7bUhN[CLj]B6bL7D+>P&.S'5h)'i_*I0&;$2I.9=g2<$88rm\a_[E2K$<7.h1#%T#:G:Z(_H$)jo.5:TX?EBs3'o&eQH?S%1U[(kpNt\T.:"qqf_J=^g2Fsfg#)Lkf7#1DGN!trM"LXcAb%.!#p`?QZ:MlT@>o*,KmmIQk8eRepoXEYI!#/*i*4N^[bnEOX(hO2@nA!_QSYjGFaoZM8cd'E8\c5?O0!#rWph>e;oE,6\W#c]X3,<Zq&o\;M=Dl=\ZGL1^CYKnWCo^+J&?bjhBhYMm%aR\$L:Tuo/0P;p$d<AIUXUqcB(FKeU`r<*"i`;?=3R@C4@-!-Be9dPMm8#3`X1spXd"-W3Y(^!KK!J5fnj%&Z-7`P&l2qqLXUtC2f.\j01M%4aBq-3.!KFMro_fXP6Nn)`EuY=mB(peMQt`IIWYSHu!g#G%a&l[d_9&RSqcCI7YP.":G@2gSF_H6P)/=&'V\,1;C9,_]O\\hQu1%ME_UC)>-X^$=i8PgHoM78<G0W`,"s(goMG83:2kmJYJnQ_,r6`?&c]nXHLP&p:")8-180YkrAA"mH,cf1tQg2aa\-QNi(Km&)!.D=c-WuBPs5*A#Wf`&i88elW_-.cbb/NGQYjpmu"c#Us5gmlh=5CXKIc1Pu8bKhW`QL1s@kd&'LIC7Xa#J;S_dn17iDS0[)9#`6Nt$,&r8M>h:O!]!^!]5uW0ddW_tfn*I79*uT<-j4D4T:LEVAjfP?1d]Kq4p?`hum^[O?)_`5I;B$jc)='bei%GuJ!5j9<GgUmpHJ1ZhBb$rIlsNX@A;#R^2M8Z@gRS2ZNbdi..FR.e*A"Z/K2lL+6Fs=kQYfJqjaLP/]Cc\F\Phe^I/EePp]nff/GOqgrr>pca+j%?#bf`nNo@)lg/.nB@:3Ug@6k7`,ie!)9'j</I03aE0C8]=X6I>>dOoI@I-YD\er[8e'j8ng#b[B4ahZg9H37KI7<I/?>W$/^5A8[#ifpnGD%99%pXF)LI,8Lorl8=kpo/PsX'Z-WYMk/'7[KlQq%.:BY40VW-L?8e3Wjm=b@_[m%.XTUO2#,lLAJZCY-n90%/`]-nFPJWdTkG-aV>\RiZn8aPtt\`GI@\Uq?su^=2dtfn)4erY7o+>%:&1EIJ(AtCQhB$8Chqa!6h_nJ8b`DN8l95-G6G+KcB"9(b*j7q9cKSdXK<7CO<@?FL"J@m^6o=9W@oG>4t-krMG#FBcdOhddA[#.5&:ko15$K8tfgM<!"%JgZ9]Cc8kRbpF_7-dB*EhrK]SG!8f!5GJbN,8&4R&l^%D&pH%0./`[DMHBm8[$a;W1ei8bqaQQA063sc2kH/1.gb"H*ES/K8=u!q3^ESXsc;cI;S_KC:GAdE\IumR*i7i"u$M]84f>\mKr$(q7j"%kMp`98u-2s`d*7cgFL-Ve[bT0;+&-m]Lp$H+)f8b4`p^cBAL-HV>DrV:3gHM%,9[BQ\P6Q56->?"^``/lZ*9/ED7npMB.*Zg<cRa;ib+")V[o+YJP47;*V4F-!ddPF'Wu4N,Z/jdZ4skZ)rM?k_:PQ;BZhC5n#1O9/RGjNb<&0H]8;ND3c>q-KduiP7^M5ufhC4*N<RAAbU1ohV\!ebpTX\8k#+:iI!K!@D%E*-/[mOKp79heieYA*"mOiX_@\B^2\AgY9=1+e;QL=56e[*qBmdAcSHmR3ZoH/d9):8%\G)GS._tHo3`5;a(8.f!#d"3e1m7InJrrBB,m2+cC*U'+'DYur$pk%Mb8>`f(Q/a;M^2O-Ee[@NI</)CNj,=oQb)5i_Sem,qKu1]lGu:VrBu4R2eYC<fH98=qg(c)ba][?<aaY**3dc2IjkuVhL";m&^8k^#3MI/1/ZpC9,`<cIFD;WS7EZ?p!W(EWp`JG&SJUYQ@IS'l4@.sf:eaY^:ct]bR7UI"AiCibaN=V+Y=5BI4Z:2]dr%!j>1"rSDW#bW@$G55NIb,2*Phl>`jrDC':p-^>8rXA4C)]drKk89`]TT)`Mfh?^#*Vh.+>M>]<gYKqZ_:;g.+j^j42tu"j';o;6_3@Z7%*X!k=kRIK["PH2DICh@\1`;&6\GP?g-@Q+5e^=A$Li$NS=VBu)ola+<P8hsaEKJ_*tD>f!OeP1^kt>Bhg[.2_\Tn?ZWi8b]C*i7I>+n@RV5V`q`OFM>B%RNiBWeLhV=MDKia![9&<##6u/3$_SC;W'*39]$.WQ=!Do)AQa[;cW!YnUnS+Mb,O5QF>8`a\dH-g=GjT5MA'3*]3C'm7$O1`*+OC05e/o>FS!&HO[SL:jH,S=7[C?-53#@)<VmRYAs)]M^O@/-`VE7$._&b2!OCj7i;S=2F'h,h-)X:l1c6R%t_a[.s!_!C0]1_Vn/X7DnOml-Jrn)rr@\d&AC:+bZ\VPnETK9I_XBbC+XH!M!\eZYuO/J@n'U"pL=>Qnot2M&T3%WIb4QPnG`KDDZ1+%BJt0acf\V>>=tq/85m`VRRBsP=N1m\Oq1KA5/O&.6iJ7c,$B;6b.3L'?rLFEjat-E\WhBfk1stN)>b4f="OrTIr7INps[8%hgl``4rCu_<o6`aNo@)lg//0"[jkXD\thgYESt[o,/*GEJkMXik1UQnaTJOOj!:T*VkUoG#EdBLk.&WWADFFpQWdO46]kU'C@5c.Pah)c-gVH'Ii*D`_0Ys&]>Ji]A'_3U_]A@R(4D$o+^:*136j3K3'8*dg;h#.0_%*@hhJ_7LV,KkHZ*]#ip(l(%#G5Xi-`U9g`'7R>6>4Xi7GY>?;u/2#p'hZOo&:.3&nWh0)963Ssm'*6@G$jI"?q8BVLC]"&P_L-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ii[!U5nkC5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Tg$Z~>endstream

-endobj

-% 'F2': class PDFType1Font 

-4 0 obj

-% Font Helvetica-Bold

-<< /BaseFont /Helvetica-Bold

- /Encoding /WinAnsiEncoding

- /Name /F2

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER1': class PDFDictionary 

-5 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (mailto:compatibility@android.com) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 55

- 626.125

- 145.135

- 637.375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER2': class LinkAnnotation 

-6 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 564.9375

- 117.5275

- 576.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER3': class LinkAnnotation 

-7 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 55

- 501.8263

- 0 ]

- /Rect [ 70

- 553.6875

- 114.1825

- 564.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER4': class LinkAnnotation 

-8 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 55

- 586.8887

- 0 ]

- /Rect [ 70

- 542.4375

- 107.935

- 553.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER5': class LinkAnnotation 

-9 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 55

- 503.61

- 0 ]

- /Rect [ 85

- 529.1875

- 190.045

- 540.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER6': class LinkAnnotation 

-10 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 55

- 362.485

- 0 ]

- /Rect [ 85

- 517.9375

- 172.12

- 529.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER7': class LinkAnnotation 

-11 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 55

- 286.1775

- 0 ]

- /Rect [ 100

- 504.6875

- 161.6875

- 515.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER8': class LinkAnnotation 

-12 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 137 0 R

- /XYZ

- 55

- 701.615

- 0 ]

- /Rect [ 100

- 493.4375

- 178.3675

- 504.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER9': class LinkAnnotation 

-13 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 137 0 R

- /XYZ

- 55

- 701.615

- 0 ]

- /Rect [ 100

- 482.1875

- 184.6225

- 493.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER10': class LinkAnnotation 

-14 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 137 0 R

- /XYZ

- 55

- 637.615

- 0 ]

- /Rect [ 115

- 468.9375

- 221.725

- 480.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER11': class LinkAnnotation 

-15 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 137 0 R

- /XYZ

- 55

- 271.615

- 0 ]

- /Rect [ 115

- 457.6875

- 195.46

- 468.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER12': class LinkAnnotation 

-16 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 137 0 R

- /XYZ

- 55

- 185.115

- 0 ]

- /Rect [ 115

- 446.4375

- 206.7175

- 457.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER13': class LinkAnnotation 

-17 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 139 0 R

- /XYZ

- 55

- 742.865

- 0 ]

- /Rect [ 115

- 435.1875

- 200.47

- 446.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER14': class LinkAnnotation 

-18 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 139 0 R

- /XYZ

- 55

- 678.0475

- 0 ]

- /Rect [ 85

- 421.9375

- 180.0325

- 433.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER15': class LinkAnnotation 

-19 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 139 0 R

- /XYZ

- 55

- 206.1725

- 0 ]

- /Rect [ 85

- 410.6875

- 160.0225

- 421.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER16': class LinkAnnotation 

-20 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 139 0 R

- /XYZ

- 55

- 118.615

- 0 ]

- /Rect [ 100

- 397.4375

- 197.53

- 408.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER17': class LinkAnnotation 

-21 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 154 0 R

- /XYZ

- 55

- 390.615

- 0 ]

- /Rect [ 100

- 386.1875

- 193.36

- 397.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER18': class LinkAnnotation 

-22 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 154 0 R

- /XYZ

- 55

- 171.2975

- 0 ]

- /Rect [ 85

- 372.9375

- 194.2075

- 384.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER19': class LinkAnnotation 

-23 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 156 0 R

- /XYZ

- 55

- 653.5475

- 0 ]

- /Rect [ 85

- 361.6875

- 157.5325

- 372.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER20': class LinkAnnotation 

-24 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 156 0 R

- /XYZ

- 55

- 227.9225

- 0 ]

- /Rect [ 85

- 350.4375

- 196.285

- 361.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER21': class LinkAnnotation 

-25 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 156 0 R

- /XYZ

- 55

- 130.0475

- 0 ]

- /Rect [ 85

- 339.1875

- 191.7025

- 350.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER22': class LinkAnnotation 

-26 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 165 0 R

- /XYZ

- 55

- 710.865

- 0 ]

- /Rect [ 100

- 325.9375

- 147.94

- 337.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER23': class LinkAnnotation 

-27 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 165 0 R

- /XYZ

- 55

- 592.365

- 0 ]

- /Rect [ 100

- 314.6875

- 161.695

- 325.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER24': class LinkAnnotation 

-28 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 165 0 R

- /XYZ

- 55

- 485.115

- 0 ]

- /Rect [ 100

- 303.4375

- 144.61

- 314.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER25': class LinkAnnotation 

-29 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 165 0 R

- /XYZ

- 55

- 312.115

- 0 ]

- /Rect [ 100

- 292.1875

- 143.3575

- 303.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER26': class LinkAnnotation 

-30 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 165 0 R

- /XYZ

- 55

- 259.365

- 0 ]

- /Rect [ 100

- 280.9375

- 174.1975

- 292.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER27': class LinkAnnotation 

-31 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 170 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 267.6875

- 197.1325

- 278.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER28': class LinkAnnotation 

-32 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 170 0 R

- /XYZ

- 55

- 642.8262

- 0 ]

- /Rect [ 70

- 256.4375

- 159.6025

- 267.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER29': class LinkAnnotation 

-33 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 170 0 R

- /XYZ

- 55

- 559.5475

- 0 ]

- /Rect [ 85

- 243.1875

- 147.5275

- 254.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER30': class LinkAnnotation 

-34 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 170 0 R

- /XYZ

- 55

- 407.1725

- 0 ]

- /Rect [ 85

- 231.9375

- 160.45

- 243.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER31': class LinkAnnotation 

-35 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 171 0 R

- /XYZ

- 55

- 620.5475

- 0 ]

- /Rect [ 85

- 220.6875

- 160.0375

- 231.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER32': class LinkAnnotation 

-36 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 171 0 R

- /XYZ

- 55

- 297.6035

- 0 ]

- /Rect [ 85

- 209.4375

- 155.035

- 220.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER33': class LinkAnnotation 

-37 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 176 0 R

- /XYZ

- 55

- 745.7975

- 0 ]

- /Rect [ 85

- 198.1875

- 147.1225

- 209.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER34': class LinkAnnotation 

-38 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 176 0 R

- /XYZ

- 55

- 302.7638

- 0 ]

- /Rect [ 70

- 184.9375

- 174.1975

- 196.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER35': class LinkAnnotation 

-39 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 179 0 R

- /XYZ

- 55

- 720.8887

- 0 ]

- /Rect [ 70

- 173.6875

- 155.8525

- 184.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER36': class LinkAnnotation 

-40 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 179 0 R

- /XYZ

- 55

- 445.36

- 0 ]

- /Rect [ 85

- 160.4375

- 170.8675

- 171.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER37': class LinkAnnotation 

-41 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 179 0 R

- /XYZ

- 55

- 369.0525

- 0 ]

- /Rect [ 100

- 147.1875

- 195.0475

- 158.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER38': class LinkAnnotation 

-42 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 722.115

- 0 ]

- /Rect [ 100

- 135.9375

- 171.685

- 147.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER39': class LinkAnnotation 

-43 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 680.615

- 0 ]

- /Rect [ 100

- 124.6875

- 205.0525

- 135.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER40': class LinkAnnotation 

-44 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 616.615

- 0 ]

- /Rect [ 100

- 113.4375

- 183.3775

- 124.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER41': class LinkAnnotation 

-45 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 509.365

- 0 ]

- /Rect [ 100

- 102.1875

- 201.7075

- 113.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER42': class LinkAnnotation 

-46 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 303.2975

- 0 ]

- /Rect [ 85

- 88.9375

- 145.03

- 100.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page1': class PDFPage 

-47 0 obj

-% Page dictionary

-<< /Annots [ 5 0 R

- 6 0 R

- 7 0 R

- 8 0 R

- 9 0 R

- 10 0 R

- 11 0 R

- 12 0 R

- 13 0 R

- 14 0 R

- 15 0 R

- 16 0 R

- 17 0 R

- 18 0 R

- 19 0 R

- 20 0 R

- 21 0 R

- 22 0 R

- 23 0 R

- 24 0 R

- 25 0 R

- 26 0 R

- 27 0 R

- 28 0 R

- 29 0 R

- 30 0 R

- 31 0 R

- 32 0 R

- 33 0 R

- 34 0 R

- 35 0 R

- 36 0 R

- 37 0 R

- 38 0 R

- 39 0 R

- 40 0 R

- 41 0 R

- 42 0 R

- 43 0 R

- 44 0 R

- 45 0 R

- 46 0 R ]

- /Contents 303 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ]

- /XObject << /FormXob.c4c4c9f90f2c427799b277ddd57a9a5b 3 0 R >> >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER43': class LinkAnnotation 

-48 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 249.49

- 0 ]

- /Rect [ 100

- 730.6775

- 152.95

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER44': class LinkAnnotation 

-49 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 182 0 R

- /XYZ

- 55

- 111.74

- 0 ]

- /Rect [ 100

- 719.4275

- 192.9625

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER45': class LinkAnnotation 

-50 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 187 0 R

- /XYZ

- 55

- 684.365

- 0 ]

- /Rect [ 100

- 708.1775

- 173.785

- 719.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER46': class LinkAnnotation 

-51 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 187 0 R

- /XYZ

- 55

- 588.365

- 0 ]

- /Rect [ 100

- 696.9275

- 182.545

- 708.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER47': class LinkAnnotation 

-52 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 187 0 R

- /XYZ

- 55

- 474.2975

- 0 ]

- /Rect [ 85

- 683.6775

- 127.105

- 694.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER48': class LinkAnnotation 

-53 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 187 0 R

- /XYZ

- 55

- 232.24

- 0 ]

- /Rect [ 100

- 670.4275

- 169.195

- 681.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER49': class LinkAnnotation 

-54 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 187 0 R

- /XYZ

- 55

- 116.99

- 0 ]

- /Rect [ 100

- 659.1775

- 169.2025

- 670.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER50': class LinkAnnotation 

-55 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 669.115

- 0 ]

- /Rect [ 100

- 647.9275

- 136.69

- 659.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER51': class LinkAnnotation 

-56 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 616.365

- 0 ]

- /Rect [ 100

- 636.6775

- 157.1125

- 647.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER52': class LinkAnnotation 

-57 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 516.365

- 0 ]

- /Rect [ 100

- 625.4275

- 155.86

- 636.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER53': class LinkAnnotation 

-58 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 440.865

- 0 ]

- /Rect [ 100

- 614.1775

- 165.8575

- 625.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER54': class LinkAnnotation 

-59 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 376.865

- 0 ]

- /Rect [ 100

- 602.9275

- 159.6175

- 614.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER55': class LinkAnnotation 

-60 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 335.365

- 0 ]

- /Rect [ 100

- 591.6775

- 177.5275

- 602.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER56': class LinkAnnotation 

-61 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 259.2975

- 0 ]

- /Rect [ 85

- 578.4275

- 158.365

- 589.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER57': class LinkAnnotation 

-62 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 189 0 R

- /XYZ

- 55

- 194.24

- 0 ]

- /Rect [ 100

- 565.1775

- 155.8675

- 576.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER58': class LinkAnnotation 

-63 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 193 0 R

- /XYZ

- 55

- 699.615

- 0 ]

- /Rect [ 100

- 553.9275

- 185.035

- 565.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER59': class LinkAnnotation 

-64 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 193 0 R

- /XYZ

- 55

- 646.865

- 0 ]

- /Rect [ 100

- 542.6775

- 152.5375

- 553.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER60': class LinkAnnotation 

-65 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 193 0 R

- /XYZ

- 55

- 539.615

- 0 ]

- /Rect [ 100

- 531.4275

- 213.7825

- 542.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER61': class LinkAnnotation 

-66 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 193 0 R

- /XYZ

- 55

- 398.365

- 0 ]

- /Rect [ 100

- 520.1775

- 215.86

- 531.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER62': class LinkAnnotation 

-67 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 193 0 R

- /XYZ

- 55

- 280.7975

- 0 ]

- /Rect [ 85

- 506.9275

- 130.015

- 518.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER63': class LinkAnnotation 

-68 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 193 0 R

- /XYZ

- 55

- 193.24

- 0 ]

- /Rect [ 100

- 493.6775

- 190.8625

- 504.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER64': class LinkAnnotation 

-69 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 710.865

- 0 ]

- /Rect [ 100

- 482.4275

- 192.115

- 493.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER65': class LinkAnnotation 

-70 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 475.115

- 0 ]

- /Rect [ 100

- 471.1775

- 193.375

- 482.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER66': class LinkAnnotation 

-71 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 223.115

- 0 ]

- /Rect [ 100

- 459.9275

- 186.2875

- 471.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER67': class LinkAnnotation 

-72 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 158.2975

- 0 ]

- /Rect [ 85

- 446.6775

- 169.6225

- 457.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER68': class LinkAnnotation 

-73 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 93.24

- 0 ]

- /Rect [ 100

- 433.4275

- 223.375

- 444.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER69': class LinkAnnotation 

-74 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 197 0 R

- /XYZ

- 55

- 592.365

- 0 ]

- /Rect [ 100

- 422.1775

- 212.1475

- 433.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER70': class LinkAnnotation 

-75 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 197 0 R

- /XYZ

- 55

- 335.5475

- 0 ]

- /Rect [ 85

- 408.9275

- 115.015

- 420.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER71': class LinkAnnotation 

-76 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 197 0 R

- /XYZ

- 55

- 171.0138

- 0 ]

- /Rect [ 70

- 395.6775

- 166.2775

- 406.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER72': class LinkAnnotation 

-77 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 202 0 R

- /XYZ

- 55

- 621.6388

- 0 ]

- /Rect [ 70

- 384.4275

- 172.945

- 395.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER73': class LinkAnnotation 

-78 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 202 0 R

- /XYZ

- 55

- 527.11

- 0 ]

- /Rect [ 85

- 371.1775

- 140.4325

- 382.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER74': class LinkAnnotation 

-79 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 202 0 R

- /XYZ

- 55

- 449.985

- 0 ]

- /Rect [ 85

- 359.9275

- 186.295

- 371.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER75': class LinkAnnotation 

-80 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 202 0 R

- /XYZ

- 55

- 372.86

- 0 ]

- /Rect [ 85

- 348.6775

- 178.3525

- 359.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER76': class LinkAnnotation 

-81 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 202 0 R

- /XYZ

- 55

- 306.985

- 0 ]

- /Rect [ 85

- 337.4275

- 212.56

- 348.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER77': class LinkAnnotation 

-82 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 205 0 R

- /XYZ

- 55

- 591.1387

- 0 ]

- /Rect [ 70

- 324.1775

- 183.79

- 335.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER78': class LinkAnnotation 

-83 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 205 0 R

- /XYZ

- 55

- 475.86

- 0 ]

- /Rect [ 85

- 310.9275

- 182.5375

- 322.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER79': class LinkAnnotation 

-84 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 205 0 R

- /XYZ

- 55

- 300.985

- 0 ]

- /Rect [ 85

- 299.6775

- 144.6025

- 310.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER80': class LinkAnnotation 

-85 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 205 0 R

- /XYZ

- 55

- 137.36

- 0 ]

- /Rect [ 85

- 288.4275

- 180.88

- 299.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER81': class LinkAnnotation 

-86 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 208 0 R

- /XYZ

- 55

- 686.8887

- 0 ]

- /Rect [ 70

- 275.1775

- 148.375

- 286.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER82': class LinkAnnotation 

-87 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 208 0 R

- /XYZ

- 55

- 459.9513

- 0 ]

- /Rect [ 70

- 263.9275

- 119.605

- 275.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER83': class LinkAnnotation 

-88 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 209 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 252.6775

- 200.065

- 263.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page2': class PDFPage 

-89 0 obj

-% Page dictionary

-<< /Annots [ 48 0 R

- 49 0 R

- 50 0 R

- 51 0 R

- 52 0 R

- 53 0 R

- 54 0 R

- 55 0 R

- 56 0 R

- 57 0 R

- 58 0 R

- 59 0 R

- 60 0 R

- 61 0 R

- 62 0 R

- 63 0 R

- 64 0 R

- 65 0 R

- 66 0 R

- 67 0 R

- 68 0 R

- 69 0 R

- 70 0 R

- 71 0 R

- 72 0 R

- 73 0 R

- 74 0 R

- 75 0 R

- 76 0 R

- 77 0 R

- 78 0 R

- 79 0 R

- 80 0 R

- 81 0 R

- 82 0 R

- 83 0 R

- 84 0 R

- 85 0 R

- 86 0 R

- 87 0 R

- 88 0 R ]

- /Contents 304 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER84': class LinkAnnotation 

-90 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 462.615

- 0 ]

- /Rect [ 125.8675

- 663.865

- 170.05

- 675.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER85': class LinkAnnotation 

-91 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 205 0 R

- /XYZ

- 55

- 591.1387

- 0 ]

- /Rect [ 237.16

- 579.115

- 272.5975

- 590.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER86': class LinkAnnotation 

-92 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 436.115

- 0 ]

- /Rect [ 401.8075

- 567.865

- 445.99

- 579.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER87': class PDFDictionary 

-93 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.ietf.org/rfc/rfc2119.txt) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 189.625

- 450.4275

- 297.1675

- 461.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER88': class PDFDictionary 

-94 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/index.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 205.45

- 437.1775

- 369.6775

- 448.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER89': class PDFDictionary 

-95 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 167.965

- 423.9275

- 254.6725

- 435.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER90': class PDFDictionary 

-96 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/packages.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 184.2325

- 410.6775

- 363.4825

- 421.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER91': class PDFDictionary 

-97 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/Manifest.permission.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 172.9525

- 397.4275

- 413.8825

- 408.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER92': class PDFDictionary 

-98 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/os/Build.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 157.96

- 384.1775

- 358.885

- 395.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER93': class PDFDictionary 

-99 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/2.3/versions.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 186.715

- 370.9275

- 373.45

- 382.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER94': class PDFDictionary 

-100 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/webkit/WebView.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 171.7

- 357.6775

- 400.96

- 368.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER95': class PDFDictionary 

-101 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.whatwg.org/specs/web-apps/current-work/multipage/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 95.005

- 344.4275

- 307.1575

- 355.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER96': class PDFDictionary 

-102 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://dev.w3.org/html5/spec/Overview.html#offline) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 159.955

- 331.1775

- 327.52

- 342.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER97': class PDFDictionary 

-103 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://dev.w3.org/html5/spec/Overview.html#video) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 131.2

- 317.9275

- 296.68

- 329.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER98': class PDFDictionary 

-104 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.w3.org/TR/geolocation-API/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 172.045

- 304.6775

- 300.8425

- 315.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER99': class PDFDictionary 

-105 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.w3.org/TR/webdatabase/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 178.3

- 291.4275

- 298.765

- 302.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER100': class PDFDictionary 

-106 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.w3.org/TR/IndexedDB/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 170.7925

- 278.1775

- 283.75

- 289.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER101': class PDFDictionary 

-107 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/ui_guidelines/widget_design.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 114.5275

- 251.6775

- 374.23

- 262.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER102': class PDFDictionary 

-108 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/ui/notifiers/notifications.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 114.94

- 238.4275

- 346.2925

- 249.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER103': class PDFDictionary 

-109 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://code.google.com/android/reference/available-resources.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 148.705

- 225.1775

- 368.8

- 236.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER104': class PDFDictionary 

-110 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#statusbarstructure) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 162.8875

- 211.9275

- 477.1975

- 223.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER105': class PDFDictionary 

-111 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/app/SearchManager.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 129.535

- 198.6775

- 371.7325

- 209.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER106': class PDFDictionary 

-112 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/widget/Toast.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 96.6025

- 185.4275

- 313.3675

- 196.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER107': class PDFDictionary 

-113 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/resources/articles/live-wallpapers.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 127.4425

- 172.1775

- 351.265

- 183.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER108': class PDFDictionary 

-114 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/developing/tools/index.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 245.845

- 158.9275

- 453.865

- 170.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER109': class PDFDictionary 

-115 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/fundamentals.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 164.1325

- 145.6775

- 364.645

- 156.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER110': class PDFDictionary 

-116 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/manifest/manifest-intro.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 117.8575

- 132.4275

- 349.2025

- 143.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER111': class PDFDictionary 

-117 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/developing/tools/monkey.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 138.7075

- 119.1775

- 355.06

- 130.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER112': class PDFDictionary 

-118 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/content/pm/PackageManager.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 179.965

- 105.9275

- 452.1775

- 117.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER113': class PDFDictionary 

-119 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/screens_support.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 167.8825

- 92.6775

- 389.23

- 103.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER114': class PDFDictionary 

-120 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/util/DisplayMetrics.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 161.6125

- 79.4275

- 396.28

- 90.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page3': class PDFPage 

-121 0 obj

-% Page dictionary

-<< /Annots [ 90 0 R

- 91 0 R

- 92 0 R

- 93 0 R

- 94 0 R

- 95 0 R

- 96 0 R

- 97 0 R

- 98 0 R

- 99 0 R

- 100 0 R

- 101 0 R

- 102 0 R

- 103 0 R

- 104 0 R

- 105 0 R

- 106 0 R

- 107 0 R

- 108 0 R

- 109 0 R

- 110 0 R

- 111 0 R

- 112 0 R

- 113 0 R

- 114 0 R

- 115 0 R

- 116 0 R

- 117 0 R

- 118 0 R

- 119 0 R

- 120 0 R ]

- /Contents 305 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER115': class PDFDictionary 

-122 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/content/res/Configuration.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 184.9825

- 730.6775

- 443.02

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER116': class PDFDictionary 

-123 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/SensorEvent.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 157.0525

- 717.4275

- 407.5825

- 728.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER117': class PDFDictionary 

-124 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/bluetooth/package-summary.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 119.9575

- 704.1775

- 388.825

- 715.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER118': class PDFDictionary 

-125 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation\(int\)) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 152.0425

- 690.9275

- 474.6625

- 702.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER119': class PDFDictionary 

-126 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/Camera.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 161.2075

- 677.6775

- 395.47

- 688.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER120': class PDFDictionary 

-127 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/security/security.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 220.3975

- 664.4275

- 429.6475

- 675.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER121': class PDFDictionary 

-128 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://code.google.com/p/apps-for-android) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 129.955

- 651.1775

- 269.1925

- 662.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER122': class LinkAnnotation 

-129 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 422.865

- 0 ]

- /Rect [ 460.615

- 435.865

- 504.7975

- 447.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER123': class LinkAnnotation 

-130 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 409.615

- 0 ]

- /Rect [ 470.995

- 253.24

- 515.1775

- 264.49 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F3': class PDFType1Font 

-131 0 obj

-% Font Courier

-<< /BaseFont /Courier

- /Encoding /WinAnsiEncoding

- /Name /F3

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER124': class LinkAnnotation 

-132 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 396.365

- 0 ]

- /Rect [ 336.2725

- 200.49

- 380.455

- 211.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F4': class PDFType1Font 

-133 0 obj

-% Font Times-Roman

-<< /BaseFont /Times-Roman

- /Encoding /WinAnsiEncoding

- /Name /F4

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER125': class LinkAnnotation 

-134 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 383.115

- 0 ]

- /Rect [ 350.19

- 124.49

- 394.3725

- 135.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page4': class PDFPage 

-135 0 obj

-% Page dictionary

-<< /Annots [ 122 0 R

- 123 0 R

- 124 0 R

- 125 0 R

- 126 0 R

- 127 0 R

- 128 0 R

- 129 0 R

- 130 0 R

- 132 0 R

- 134 0 R ]

- /Contents 306 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page5': class PDFPage 

-136 0 obj

-% Page dictionary

-<< /Contents 307 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page6': class PDFPage 

-137 0 obj

-% Page dictionary

-<< /Contents 308 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER126': class LinkAnnotation 

-138 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 369.865

- 0 ]

- /Rect [ 381.61

- 160.9275

- 425.7925

- 172.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page7': class PDFPage 

-139 0 obj

-% Page dictionary

-<< /Annots [ 138 0 R ]

- /Contents 309 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER127': class LinkAnnotation 

-140 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 356.615

- 0 ]

- /Rect [ 307.5925

- 532.9275

- 351.775

- 544.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER128': class LinkAnnotation 

-141 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 343.365

- 0 ]

- /Rect [ 183.8125

- 500.9275

- 232.165

- 512.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER129': class LinkAnnotation 

-142 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 330.115

- 0 ]

- /Rect [ 122.125

- 487.6775

- 170.4775

- 498.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER130': class LinkAnnotation 

-143 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 316.865

- 0 ]

- /Rect [ 108.775

- 474.4275

- 157.1275

- 485.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER131': class LinkAnnotation 

-144 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 303.615

- 0 ]

- /Rect [ 343.435

- 453.6775

- 391.7875

- 464.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F5': class PDFType1Font 

-145 0 obj

-% Font Helvetica-Oblique

-<< /BaseFont /Helvetica-Oblique

- /Encoding /WinAnsiEncoding

- /Name /F5

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER132': class LinkAnnotation 

-146 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 290.365

- 0 ]

- /Rect [ 110.4475

- 442.4275

- 158.8

- 453.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER133': class LinkAnnotation 

-147 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 356.615

- 0 ]

- /Rect [ 160.4575

- 282.4275

- 204.64

- 293.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER134': class LinkAnnotation 

-148 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 343.365

- 0 ]

- /Rect [ 183.8125

- 250.4275

- 232.165

- 261.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER135': class LinkAnnotation 

-149 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 330.115

- 0 ]

- /Rect [ 122.125

- 237.1775

- 170.4775

- 248.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER136': class LinkAnnotation 

-150 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 316.865

- 0 ]

- /Rect [ 108.775

- 223.9275

- 157.1275

- 235.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER137': class LinkAnnotation 

-151 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 303.615

- 0 ]

- /Rect [ 343.435

- 203.1775

- 391.7875

- 214.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER138': class LinkAnnotation 

-152 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 290.365

- 0 ]

- /Rect [ 110.4475

- 191.9275

- 158.8

- 203.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER139': class LinkAnnotation 

-153 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 436.115

- 0 ]

- /Rect [ 125.4475

- 114.8025

- 169.63

- 126.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page8': class PDFPage 

-154 0 obj

-% Page dictionary

-<< /Annots [ 140 0 R

- 141 0 R

- 142 0 R

- 143 0 R

- 144 0 R

- 146 0 R

- 147 0 R

- 148 0 R

- 149 0 R

- 150 0 R

- 151 0 R

- 152 0 R

- 153 0 R ]

- /Contents 310 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER140': class LinkAnnotation 

-155 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 277.115

- 0 ]

- /Rect [ 500.1475

- 182.6775

- 548.5

- 193.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page9': class PDFPage 

-156 0 obj

-% Page dictionary

-<< /Annots [ 155 0 R ]

- /Contents 311 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER141': class LinkAnnotation 

-157 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 263.865

- 0 ]

- /Rect [ 515.1475

- 677.9275

- 553.075

- 689.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER142': class LinkAnnotation 

-158 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 263.865

- 0 ]

- /Rect [ 55

- 666.6775

- 63.34

- 677.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER143': class LinkAnnotation 

-159 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 250.615

- 0 ]

- /Rect [ 313.045

- 559.4275

- 361.3975

- 570.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER144': class LinkAnnotation 

-160 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 237.365

- 0 ]

- /Rect [ 448.06

- 527.4275

- 496.4125

- 538.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER145': class LinkAnnotation 

-161 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 224.115

- 0 ]

- /Rect [ 124.615

- 516.1775

- 172.9675

- 527.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER146': class LinkAnnotation 

-162 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 210.865

- 0 ]

- /Rect [ 132.535

- 452.1775

- 180.8875

- 463.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER147': class LinkAnnotation 

-163 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 197.615

- 0 ]

- /Rect [ 217.9075

- 279.1775

- 266.26

- 290.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER148': class LinkAnnotation 

-164 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 184.365

- 0 ]

- /Rect [ 73.7575

- 215.1775

- 122.11

- 226.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page10': class PDFPage 

-165 0 obj

-% Page dictionary

-<< /Annots [ 157 0 R

- 158 0 R

- 159 0 R

- 160 0 R

- 161 0 R

- 162 0 R

- 163 0 R

- 164 0 R ]

- /Contents 312 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER149': class LinkAnnotation 

-166 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 171.115

- 0 ]

- /Rect [ 499.5925

- 695.865

- 547.945

- 707.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER150': class LinkAnnotation 

-167 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 157.865

- 0 ]

- /Rect [ 257.9875

- 675.115

- 306.34

- 686.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER151': class LinkAnnotation 

-168 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 144.615

- 0 ]

- /Rect [ 373.0375

- 675.115

- 421.39

- 686.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER152': class LinkAnnotation 

-169 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 277.115

- 0 ]

- /Rect [ 493.5025

- 675.115

- 541.855

- 686.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page11': class PDFPage 

-170 0 obj

-% Page dictionary

-<< /Annots [ 166 0 R

- 167 0 R

- 168 0 R

- 169 0 R ]

- /Contents 313 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page12': class PDFPage 

-171 0 obj

-% Page dictionary

-<< /Contents 314 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER153': class LinkAnnotation 

-172 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 118.115

- 0 ]

- /Rect [ 378.895

- 323.8025

- 427.2475

- 335.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER154': class LinkAnnotation 

-173 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 171.115

- 0 ]

- /Rect [ 207.1

- 219.365

- 255.4525

- 230.615 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER155': class LinkAnnotation 

-174 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 171.115

- 0 ]

- /Rect [ 239.6275

- 183.615

- 287.98

- 194.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER156': class LinkAnnotation 

-175 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 131.365

- 0 ]

- /Rect [ 98.3425

- 147.865

- 146.695

- 159.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page13': class PDFPage 

-176 0 obj

-% Page dictionary

-<< /Annots [ 172 0 R

- 173 0 R

- 174 0 R

- 175 0 R ]

- /Contents 315 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER157': class LinkAnnotation 

-177 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 118.115

- 0 ]

- /Rect [ 392.7925

- 454.74

- 441.145

- 465.99 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER158': class LinkAnnotation 

-178 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 104.865

- 0 ]

- /Rect [ 258.0025

- 388.865

- 306.355

- 400.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page14': class PDFPage 

-179 0 obj

-% Page dictionary

-<< /Annots [ 177 0 R

- 178 0 R ]

- /Contents 316 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER159': class LinkAnnotation 

-180 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 91.615

- 0 ]

- /Rect [ 462.835

- 689.1775

- 511.1875

- 700.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER160': class LinkAnnotation 

-181 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 742.865

- 0 ]

- /Rect [ 259.42

- 120.3025

- 307.7725

- 131.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page15': class PDFPage 

-182 0 obj

-% Page dictionary

-<< /Annots [ 180 0 R

- 181 0 R ]

- /Contents 317 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER161': class LinkAnnotation 

-183 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 742.865

- 0 ]

- /Rect [ 381.79

- 717.4275

- 430.1425

- 728.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER162': class LinkAnnotation 

-184 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 742.865

- 0 ]

- /Rect [ 304.7875

- 508.1775

- 353.14

- 519.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER163': class LinkAnnotation 

-185 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 118.115

- 0 ]

- /Rect [ 468.19

- 385.8025

- 516.5425

- 397.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER164': class LinkAnnotation 

-186 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 382.21

- 165.3025

- 430.5625

- 176.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page16': class PDFPage 

-187 0 obj

-% Page dictionary

-<< /Annots [ 183 0 R

- 184 0 R

- 185 0 R

- 186 0 R ]

- /Contents 318 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER165': class LinkAnnotation 

-188 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 382.21

- 717.4275

- 430.5625

- 728.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page17': class PDFPage 

-189 0 obj

-% Page dictionary

-<< /Annots [ 188 0 R ]

- /Contents 319 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER166': class LinkAnnotation 

-190 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 716.365

- 0 ]

- /Rect [ 297.6025

- 602.6775

- 345.955

- 613.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER167': class LinkAnnotation 

-191 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 118.115

- 0 ]

- /Rect [ 68.335

- 463.4275

- 116.6875

- 474.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER168': class LinkAnnotation 

-192 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 69.925

- 118.115

- 0 ]

- /Rect [ 320.2675

- 418.1775

- 368.62

- 429.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page18': class PDFPage 

-193 0 obj

-% Page dictionary

-<< /Annots [ 190 0 R

- 191 0 R

- 192 0 R ]

- /Contents 320 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER169': class LinkAnnotation 

-194 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 703.115

- 0 ]

- /Rect [ 293.17

- 545.9275

- 341.5225

- 557.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER170': class LinkAnnotation 

-195 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 689.865

- 0 ]

- /Rect [ 425.56

- 353.6775

- 473.9125

- 364.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page19': class PDFPage 

-196 0 obj

-% Page dictionary

-<< /Annots [ 194 0 R

- 195 0 R ]

- /Contents 321 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page20': class PDFPage 

-197 0 obj

-% Page dictionary

-<< /Contents 322 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER171': class LinkAnnotation 

-198 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 676.615

- 0 ]

- /Rect [ 164.2225

- 558.99

- 212.575

- 570.24 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER172': class LinkAnnotation 

-199 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 676.615

- 0 ]

- /Rect [ 465.5875

- 481.865

- 513.94

- 493.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER173': class LinkAnnotation 

-200 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 676.615

- 0 ]

- /Rect [ 345.55

- 382.24

- 393.9025

- 393.49 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER174': class LinkAnnotation 

-201 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 676.615

- 0 ]

- /Rect [ 57.085

- 316.365

- 105.4375

- 327.615 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page21': class PDFPage 

-202 0 obj

-% Page dictionary

-<< /Annots [ 198 0 R

- 199 0 R

- 200 0 R

- 201 0 R ]

- /Contents 323 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER175': class LinkAnnotation 

-203 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 449.365

- 0 ]

- /Rect [ 323.41

- 430.615

- 367.5925

- 441.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER176': class LinkAnnotation 

-204 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 121 0 R

- /XYZ

- 66.25

- 449.365

- 0 ]

- /Rect [ 315.115

- 321.615

- 359.2975

- 332.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page22': class PDFPage 

-205 0 obj

-% Page dictionary

-<< /Annots [ 203 0 R

- 204 0 R ]

- /Contents 324 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER177': class LinkAnnotation 

-206 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 135 0 R

- /XYZ

- 69.925

- 663.365

- 0 ]

- /Rect [ 188.2975

- 730.6775

- 236.65

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER178': class PDFDictionary 

-207 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (mailto:compatibility@android.com) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 193.8325

- 408.5525

- 283.9675

- 419.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page23': class PDFPage 

-208 0 obj

-% Page dictionary

-<< /Annots [ 206 0 R

- 207 0 R ]

- /Contents 325 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page24': class PDFPage 

-209 0 obj

-% Page dictionary

-<< /Contents 326 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 302 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'R210': class PDFCatalog 

-210 0 obj

-% Document Root

-<< /Outlines 212 0 R

- /PageMode /UseNone

- /Pages 302 0 R

- /Type /Catalog >>

-endobj

-% 'R211': class PDFInfo 

-211 0 obj

-<< /Author ()

- /CreationDate (D:20101215173620+08'00')

- /Keywords ()

- /Producer (pisa HTML to PDF <http://www.htmltopdf.org>)

- /Subject ()

- /Title (Android 2.3 Compatibility Definition) >>

-endobj

-% 'R212': class PDFOutlines 

-212 0 obj

-<< /Count 17

- /First 213 0 R

- /Last 213 0 R

- /Type /Outlines >>

-endobj

-% 'Outline.0': class OutlineEntryObject 

-213 0 obj

-<< /Count -14

- /Dest [ 47 0 R

- /Fit ]

- /First 214 0 R

- /Last 296 0 R

- /Parent 212 0 R

- /Title (Android 2.3 Compatibility Definition) >>

-endobj

-% 'Outline.2.0': class OutlineEntryObject 

-214 0 obj

-<< /Dest [ 47 0 R

- /Fit ]

- /Next 215 0 R

- /Parent 213 0 R

- /Title (Table of Contents) >>

-endobj

-% 'Outline.2.1': class OutlineEntryObject 

-215 0 obj

-<< /Dest [ 121 0 R

- /Fit ]

- /Next 216 0 R

- /Parent 213 0 R

- /Prev 214 0 R

- /Title (1. Introduction) >>

-endobj

-% 'Outline.2.2': class OutlineEntryObject 

-216 0 obj

-<< /Dest [ 121 0 R

- /Fit ]

- /Next 217 0 R

- /Parent 213 0 R

- /Prev 215 0 R

- /Title (2. Resources) >>

-endobj

-% 'Outline.2.3': class OutlineEntryObject 

-217 0 obj

-<< /Count -8

- /Dest [ 135 0 R

- /Fit ]

- /First 218 0 R

- /Last 234 0 R

- /Next 240 0 R

- /Parent 213 0 R

- /Prev 216 0 R

- /Title (3. Software) >>

-endobj

-% 'Outline.3.0': class OutlineEntryObject 

-218 0 obj

-<< /Dest [ 135 0 R

- /Fit ]

- /Next 219 0 R

- /Parent 217 0 R

- /Title (3.1. Managed API Compatibility) >>

-endobj

-% 'Outline.3.1': class OutlineEntryObject 

-219 0 obj

-<< /Count -7

- /Dest [ 135 0 R

- /Fit ]

- /First 220 0 R

- /Last 226 0 R

- /Next 227 0 R

- /Parent 217 0 R

- /Prev 218 0 R

- /Title (3.2. Soft API Compatibility) >>

-endobj

-% 'Outline.4.0': class OutlineEntryObject 

-220 0 obj

-<< /Dest [ 135 0 R

- /Fit ]

- /Next 221 0 R

- /Parent 219 0 R

- /Title (3.2.1. Permissions) >>

-endobj

-% 'Outline.4.1': class OutlineEntryObject 

-221 0 obj

-<< /Dest [ 135 0 R

- /Fit ]

- /Next 222 0 R

- /Parent 219 0 R

- /Prev 220 0 R

- /Title (3.2.2. Build Parameters) >>

-endobj

-% 'Outline.4.2': class OutlineEntryObject 

-222 0 obj

-<< /Dest [ 137 0 R

- /Fit ]

- /Next 223 0 R

- /Parent 219 0 R

- /Prev 221 0 R

- /Title (3.2.3. Intent Compatibility) >>

-endobj

-% 'Outline.4.3': class OutlineEntryObject 

-223 0 obj

-<< /Dest [ 137 0 R

- /Fit ]

- /Next 224 0 R

- /Parent 219 0 R

- /Prev 222 0 R

- /Title (3.2.3.1. Core Application Intents) >>

-endobj

-% 'Outline.4.4': class OutlineEntryObject 

-224 0 obj

-<< /Dest [ 137 0 R

- /Fit ]

- /Next 225 0 R

- /Parent 219 0 R

- /Prev 223 0 R

- /Title (3.2.3.2. Intent Overrides) >>

-endobj

-% 'Outline.4.5': class OutlineEntryObject 

-225 0 obj

-<< /Dest [ 137 0 R

- /Fit ]

- /Next 226 0 R

- /Parent 219 0 R

- /Prev 224 0 R

- /Title (3.2.3.3. Intent Namespaces) >>

-endobj

-% 'Outline.4.6': class OutlineEntryObject 

-226 0 obj

-<< /Dest [ 139 0 R

- /Fit ]

- /Parent 219 0 R

- /Prev 225 0 R

- /Title (3.2.3.4. Broadcast Intents) >>

-endobj

-% 'Outline.3.2': class OutlineEntryObject 

-227 0 obj

-<< /Dest [ 139 0 R

- /Fit ]

- /Next 228 0 R

- /Parent 217 0 R

- /Prev 219 0 R

- /Title (3.3. Native API Compatibility) >>

-endobj

-% 'Outline.3.3': class OutlineEntryObject 

-228 0 obj

-<< /Count -2

- /Dest [ 139 0 R

- /Fit ]

- /First 229 0 R

- /Last 230 0 R

- /Next 231 0 R

- /Parent 217 0 R

- /Prev 227 0 R

- /Title (3.4. Web Compatibility) >>

-endobj

-% 'Outline.5.0': class OutlineEntryObject 

-229 0 obj

-<< /Dest [ 139 0 R

- /Fit ]

- /Next 230 0 R

- /Parent 228 0 R

- /Title (3.4.1. WebView Compatibility) >>

-endobj

-% 'Outline.5.1': class OutlineEntryObject 

-230 0 obj

-<< /Dest [ 154 0 R

- /Fit ]

- /Parent 228 0 R

- /Prev 229 0 R

- /Title (3.4.2. Browser Compatibility) >>

-endobj

-% 'Outline.3.4': class OutlineEntryObject 

-231 0 obj

-<< /Dest [ 154 0 R

- /Fit ]

- /Next 232 0 R

- /Parent 217 0 R

- /Prev 228 0 R

- /Title (3.5. API Behavioral Compatibility) >>

-endobj

-% 'Outline.3.5': class OutlineEntryObject 

-232 0 obj

-<< /Dest [ 156 0 R

- /Fit ]

- /Next 233 0 R

- /Parent 217 0 R

- /Prev 231 0 R

- /Title (3.6. API Namespaces) >>

-endobj

-% 'Outline.3.6': class OutlineEntryObject 

-233 0 obj

-<< /Dest [ 156 0 R

- /Fit ]

- /Next 234 0 R

- /Parent 217 0 R

- /Prev 232 0 R

- /Title (3.7. Virtual Machine Compatibility) >>

-endobj

-% 'Outline.3.7': class OutlineEntryObject 

-234 0 obj

-<< /Count -5

- /Dest [ 156 0 R

- /Fit ]

- /First 235 0 R

- /Last 239 0 R

- /Parent 217 0 R

- /Prev 233 0 R

- /Title (3.8. User Interface Compatibility) >>

-endobj

-% 'Outline.6.0': class OutlineEntryObject 

-235 0 obj

-<< /Dest [ 165 0 R

- /Fit ]

- /Next 236 0 R

- /Parent 234 0 R

- /Title (3.8.1. Widgets) >>

-endobj

-% 'Outline.6.1': class OutlineEntryObject 

-236 0 obj

-<< /Dest [ 165 0 R

- /Fit ]

- /Next 237 0 R

- /Parent 234 0 R

- /Prev 235 0 R

- /Title (3.8.2. Notifications) >>

-endobj

-% 'Outline.6.2': class OutlineEntryObject 

-237 0 obj

-<< /Dest [ 165 0 R

- /Fit ]

- /Next 238 0 R

- /Parent 234 0 R

- /Prev 236 0 R

- /Title (3.8.3. Search) >>

-endobj

-% 'Outline.6.3': class OutlineEntryObject 

-238 0 obj

-<< /Dest [ 165 0 R

- /Fit ]

- /Next 239 0 R

- /Parent 234 0 R

- /Prev 237 0 R

- /Title (3.8.4. Toasts) >>

-endobj

-% 'Outline.6.4': class OutlineEntryObject 

-239 0 obj

-<< /Dest [ 165 0 R

- /Fit ]

- /Parent 234 0 R

- /Prev 238 0 R

- /Title (3.8.5. Live Wallpapers) >>

-endobj

-% 'Outline.2.4': class OutlineEntryObject 

-240 0 obj

-<< /Dest [ 170 0 R

- /Fit ]

- /Next 241 0 R

- /Parent 213 0 R

- /Prev 217 0 R

- /Title (4. Application Packaging Compatibility) >>

-endobj

-% 'Outline.2.5': class OutlineEntryObject 

-241 0 obj

-<< /Count -5

- /Dest [ 170 0 R

- /Fit ]

- /First 242 0 R

- /Last 246 0 R

- /Next 247 0 R

- /Parent 213 0 R

- /Prev 240 0 R

- /Title (5. Multimedia Compatibility) >>

-endobj

-% 'Outline.7.0': class OutlineEntryObject 

-242 0 obj

-<< /Dest [ 170 0 R

- /Fit ]

- /Next 243 0 R

- /Parent 241 0 R

- /Title (5.1. Media Codecs) >>

-endobj

-% 'Outline.7.1': class OutlineEntryObject 

-243 0 obj

-<< /Dest [ 170 0 R

- /Fit ]

- /Next 244 0 R

- /Parent 241 0 R

- /Prev 242 0 R

- /Title (5.1.1. Media Decoders) >>

-endobj

-% 'Outline.7.2': class OutlineEntryObject 

-244 0 obj

-<< /Dest [ 171 0 R

- /Fit ]

- /Next 245 0 R

- /Parent 241 0 R

- /Prev 243 0 R

- /Title (5.1.2. Media Encoders) >>

-endobj

-% 'Outline.7.3': class OutlineEntryObject 

-245 0 obj

-<< /Dest [ 171 0 R

- /Fit ]

- /Next 246 0 R

- /Parent 241 0 R

- /Prev 244 0 R

- /Title (5.2. Audio Recording) >>

-endobj

-% 'Outline.7.4': class OutlineEntryObject 

-246 0 obj

-<< /Dest [ 176 0 R

- /Fit ]

- /Parent 241 0 R

- /Prev 245 0 R

- /Title (5.3. Audio Latency) >>

-endobj

-% 'Outline.2.6': class OutlineEntryObject 

-247 0 obj

-<< /Dest [ 176 0 R

- /Fit ]

- /Next 248 0 R

- /Parent 213 0 R

- /Prev 241 0 R

- /Title (6. Developer Tool Compatibility) >>

-endobj

-% 'Outline.2.7': class OutlineEntryObject 

-248 0 obj

-<< /Count -7

- /Dest [ 179 0 R

- /Fit ]

- /First 249 0 R

- /Last 283 0 R

- /Next 284 0 R

- /Parent 213 0 R

- /Prev 247 0 R

- /Title (7. Hardware Compatibility) >>

-endobj

-% 'Outline.8.0': class OutlineEntryObject 

-249 0 obj

-<< /Count -5

- /Dest [ 179 0 R

- /Fit ]

- /First 250 0 R

- /Last 254 0 R

- /Next 255 0 R

- /Parent 248 0 R

- /Title (7.1. Display and Graphics) >>

-endobj

-% 'Outline.9.0': class OutlineEntryObject 

-250 0 obj

-<< /Dest [ 179 0 R

- /Fit ]

- /Next 251 0 R

- /Parent 249 0 R

- /Title (7.1.1. Screen Configurations) >>

-endobj

-% 'Outline.9.1': class OutlineEntryObject 

-251 0 obj

-<< /Dest [ 182 0 R

- /Fit ]

- /Next 252 0 R

- /Parent 249 0 R

- /Prev 250 0 R

- /Title (7.1.2. Display Metrics) >>

-endobj

-% 'Outline.9.2': class OutlineEntryObject 

-252 0 obj

-<< /Dest [ 182 0 R

- /Fit ]

- /Next 253 0 R

- /Parent 249 0 R

- /Prev 251 0 R

- /Title (7.1.3. Declared Screen Support) >>

-endobj

-% 'Outline.9.3': class OutlineEntryObject 

-253 0 obj

-<< /Dest [ 182 0 R

- /Fit ]

- /Next 254 0 R

- /Parent 249 0 R

- /Prev 252 0 R

- /Title (7.1.4. Screen Orientation) >>

-endobj

-% 'Outline.9.4': class OutlineEntryObject 

-254 0 obj

-<< /Dest [ 182 0 R

- /Fit ]

- /Parent 249 0 R

- /Prev 253 0 R

- /Title (7.1.5. 3D Graphics Acceleration) >>

-endobj

-% 'Outline.8.1': class OutlineEntryObject 

-255 0 obj

-<< /Count -4

- /Dest [ 182 0 R

- /Fit ]

- /First 256 0 R

- /Last 259 0 R

- /Next 260 0 R

- /Parent 248 0 R

- /Prev 249 0 R

- /Title (7.2. Input Devices) >>

-endobj

-% 'Outline.10.0': class OutlineEntryObject 

-256 0 obj

-<< /Dest [ 182 0 R

- /Fit ]

- /Next 257 0 R

- /Parent 255 0 R

- /Title (7.2.1. Keyboard) >>

-endobj

-% 'Outline.10.1': class OutlineEntryObject 

-257 0 obj

-<< /Dest [ 182 0 R

- /Fit ]

- /Next 258 0 R

- /Parent 255 0 R

- /Prev 256 0 R

- /Title (7.2.2. Non-touch Navigation) >>

-endobj

-% 'Outline.10.2': class OutlineEntryObject 

-258 0 obj

-<< /Dest [ 187 0 R

- /Fit ]

- /Next 259 0 R

- /Parent 255 0 R

- /Prev 257 0 R

- /Title (7.2.3. Navigation keys) >>

-endobj

-% 'Outline.10.3': class OutlineEntryObject 

-259 0 obj

-<< /Dest [ 187 0 R

- /Fit ]

- /Parent 255 0 R

- /Prev 258 0 R

- /Title (7.2.4. Touchscreen input) >>

-endobj

-% 'Outline.8.2': class OutlineEntryObject 

-260 0 obj

-<< /Count -8

- /Dest [ 187 0 R

- /Fit ]

- /First 261 0 R

- /Last 268 0 R

- /Next 269 0 R

- /Parent 248 0 R

- /Prev 255 0 R

- /Title (7.3. Sensors) >>

-endobj

-% 'Outline.11.0': class OutlineEntryObject 

-261 0 obj

-<< /Dest [ 187 0 R

- /Fit ]

- /Next 262 0 R

- /Parent 260 0 R

- /Title (7.3.1. Accelerometer) >>

-endobj

-% 'Outline.11.1': class OutlineEntryObject 

-262 0 obj

-<< /Dest [ 187 0 R

- /Fit ]

- /Next 263 0 R

- /Parent 260 0 R

- /Prev 261 0 R

- /Title (7.3.2. Magnetometer) >>

-endobj

-% 'Outline.11.2': class OutlineEntryObject 

-263 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Next 264 0 R

- /Parent 260 0 R

- /Prev 262 0 R

- /Title (7.3.3. GPS) >>

-endobj

-% 'Outline.11.3': class OutlineEntryObject 

-264 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Next 265 0 R

- /Parent 260 0 R

- /Prev 263 0 R

- /Title (7.3.4. Gyroscope) >>

-endobj

-% 'Outline.11.4': class OutlineEntryObject 

-265 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Next 266 0 R

- /Parent 260 0 R

- /Prev 264 0 R

- /Title (7.3.5. Barometer) >>

-endobj

-% 'Outline.11.5': class OutlineEntryObject 

-266 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Next 267 0 R

- /Parent 260 0 R

- /Prev 265 0 R

- /Title (7.3.7. Thermometer) >>

-endobj

-% 'Outline.11.6': class OutlineEntryObject 

-267 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Next 268 0 R

- /Parent 260 0 R

- /Prev 266 0 R

- /Title (7.3.7. Photometer) >>

-endobj

-% 'Outline.11.7': class OutlineEntryObject 

-268 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Parent 260 0 R

- /Prev 267 0 R

- /Title (7.3.8. Proximity Sensor) >>

-endobj

-% 'Outline.8.3': class OutlineEntryObject 

-269 0 obj

-<< /Count -5

- /Dest [ 189 0 R

- /Fit ]

- /First 270 0 R

- /Last 274 0 R

- /Next 275 0 R

- /Parent 248 0 R

- /Prev 260 0 R

- /Title (7.4. Data Connectivity) >>

-endobj

-% 'Outline.12.0': class OutlineEntryObject 

-270 0 obj

-<< /Dest [ 189 0 R

- /Fit ]

- /Next 271 0 R

- /Parent 269 0 R

- /Title (7.4.1. Telephony) >>

-endobj

-% 'Outline.12.1': class OutlineEntryObject 

-271 0 obj

-<< /Dest [ 193 0 R

- /Fit ]

- /Next 272 0 R

- /Parent 269 0 R

- /Prev 270 0 R

- /Title (7.4.2. IEEE 802.11 \(WiFi\)) >>

-endobj

-% 'Outline.12.2': class OutlineEntryObject 

-272 0 obj

-<< /Dest [ 193 0 R

- /Fit ]

- /Next 273 0 R

- /Parent 269 0 R

- /Prev 271 0 R

- /Title (7.4.3. Bluetooth) >>

-endobj

-% 'Outline.12.3': class OutlineEntryObject 

-273 0 obj

-<< /Dest [ 193 0 R

- /Fit ]

- /Next 274 0 R

- /Parent 269 0 R

- /Prev 272 0 R

- /Title (7.4.4. Near-Field Communications) >>

-endobj

-% 'Outline.12.4': class OutlineEntryObject 

-274 0 obj

-<< /Dest [ 193 0 R

- /Fit ]

- /Parent 269 0 R

- /Prev 273 0 R

- /Title (7.4.5. Minimum Network Capability) >>

-endobj

-% 'Outline.8.4': class OutlineEntryObject 

-275 0 obj

-<< /Count -4

- /Dest [ 193 0 R

- /Fit ]

- /First 276 0 R

- /Last 279 0 R

- /Next 280 0 R

- /Parent 248 0 R

- /Prev 269 0 R

- /Title (7.5. Cameras) >>

-endobj

-% 'Outline.13.0': class OutlineEntryObject 

-276 0 obj

-<< /Dest [ 193 0 R

- /Fit ]

- /Next 277 0 R

- /Parent 275 0 R

- /Title (7.5.1. Rear-Facing Camera) >>

-endobj

-% 'Outline.13.1': class OutlineEntryObject 

-277 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 278 0 R

- /Parent 275 0 R

- /Prev 276 0 R

- /Title (7.5.2. Front-Facing Camera) >>

-endobj

-% 'Outline.13.2': class OutlineEntryObject 

-278 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 279 0 R

- /Parent 275 0 R

- /Prev 277 0 R

- /Title (7.5.3. Camera API Behavior) >>

-endobj

-% 'Outline.13.3': class OutlineEntryObject 

-279 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Parent 275 0 R

- /Prev 278 0 R

- /Title (7.5.4. Camera Orientation) >>

-endobj

-% 'Outline.8.5': class OutlineEntryObject 

-280 0 obj

-<< /Count -2

- /Dest [ 196 0 R

- /Fit ]

- /First 281 0 R

- /Last 282 0 R

- /Next 283 0 R

- /Parent 248 0 R

- /Prev 275 0 R

- /Title (7.6. Memory and Storage) >>

-endobj

-% 'Outline.14.0': class OutlineEntryObject 

-281 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 282 0 R

- /Parent 280 0 R

- /Title (7.6.1. Minimum Memory and Storage) >>

-endobj

-% 'Outline.14.1': class OutlineEntryObject 

-282 0 obj

-<< /Dest [ 197 0 R

- /Fit ]

- /Parent 280 0 R

- /Prev 281 0 R

- /Title (7.6.2. Application Shared Storage) >>

-endobj

-% 'Outline.8.6': class OutlineEntryObject 

-283 0 obj

-<< /Dest [ 197 0 R

- /Fit ]

- /Parent 248 0 R

- /Prev 280 0 R

- /Title (7.7. USB) >>

-endobj

-% 'Outline.2.8': class OutlineEntryObject 

-284 0 obj

-<< /Dest [ 197 0 R

- /Fit ]

- /Next 285 0 R

- /Parent 213 0 R

- /Prev 248 0 R

- /Title (8. Performance Compatibility) >>

-endobj

-% 'Outline.2.9': class OutlineEntryObject 

-285 0 obj

-<< /Count -4

- /Dest [ 202 0 R

- /Fit ]

- /First 286 0 R

- /Last 289 0 R

- /Next 290 0 R

- /Parent 213 0 R

- /Prev 284 0 R

- /Title (9. Security Model Compatibility) >>

-endobj

-% 'Outline.15.0': class OutlineEntryObject 

-286 0 obj

-<< /Dest [ 202 0 R

- /Fit ]

- /Next 287 0 R

- /Parent 285 0 R

- /Title (9.1. Permissions) >>

-endobj

-% 'Outline.15.1': class OutlineEntryObject 

-287 0 obj

-<< /Dest [ 202 0 R

- /Fit ]

- /Next 288 0 R

- /Parent 285 0 R

- /Prev 286 0 R

- /Title (9.2. UID and Process Isolation) >>

-endobj

-% 'Outline.15.2': class OutlineEntryObject 

-288 0 obj

-<< /Dest [ 202 0 R

- /Fit ]

- /Next 289 0 R

- /Parent 285 0 R

- /Prev 287 0 R

- /Title (9.3. Filesystem Permissions) >>

-endobj

-% 'Outline.15.3': class OutlineEntryObject 

-289 0 obj

-<< /Dest [ 202 0 R

- /Fit ]

- /Parent 285 0 R

- /Prev 288 0 R

- /Title (9.4. Alternate Execution Environments) >>

-endobj

-% 'Outline.2.10': class OutlineEntryObject 

-290 0 obj

-<< /Count -3

- /Dest [ 205 0 R

- /Fit ]

- /First 291 0 R

- /Last 293 0 R

- /Next 294 0 R

- /Parent 213 0 R

- /Prev 285 0 R

- /Title (10. Software Compatibility Testing) >>

-endobj

-% 'Outline.16.0': class OutlineEntryObject 

-291 0 obj

-<< /Dest [ 205 0 R

- /Fit ]

- /Next 292 0 R

- /Parent 290 0 R

- /Title (10.1. Compatibility Test Suite) >>

-endobj

-% 'Outline.16.1': class OutlineEntryObject 

-292 0 obj

-<< /Dest [ 205 0 R

- /Fit ]

- /Next 293 0 R

- /Parent 290 0 R

- /Prev 291 0 R

- /Title (10.2. CTS Verifier) >>

-endobj

-% 'Outline.16.2': class OutlineEntryObject 

-293 0 obj

-<< /Dest [ 205 0 R

- /Fit ]

- /Parent 290 0 R

- /Prev 292 0 R

- /Title (10.3. Reference Applications) >>

-endobj

-% 'Outline.2.11': class OutlineEntryObject 

-294 0 obj

-<< /Dest [ 208 0 R

- /Fit ]

- /Next 295 0 R

- /Parent 213 0 R

- /Prev 290 0 R

- /Title (11. Updatable Software) >>

-endobj

-% 'Outline.2.12': class OutlineEntryObject 

-295 0 obj

-<< /Dest [ 208 0 R

- /Fit ]

- /Next 296 0 R

- /Parent 213 0 R

- /Prev 294 0 R

- /Title (12. Contact Us) >>

-endobj

-% 'Outline.2.13': class OutlineEntryObject 

-296 0 obj

-<< /Count -5

- /Dest [ 209 0 R

- /Fit ]

- /First 297 0 R

- /Last 301 0 R

- /Parent 213 0 R

- /Prev 295 0 R

- /Title (Appendix A - Bluetooth Test Procedure) >>

-endobj

-% 'Outline.17.0': class OutlineEntryObject 

-297 0 obj

-<< /Dest [ 209 0 R

- /Fit ]

- /Next 298 0 R

- /Parent 296 0 R

- /Title (Setup and Installation) >>

-endobj

-% 'Outline.17.1': class OutlineEntryObject 

-298 0 obj

-<< /Dest [ 209 0 R

- /Fit ]

- /Next 299 0 R

- /Parent 296 0 R

- /Prev 297 0 R

- /Title (Test Bluetooth Control by Apps) >>

-endobj

-% 'Outline.17.2': class OutlineEntryObject 

-299 0 obj

-<< /Dest [ 209 0 R

- /Fit ]

- /Next 300 0 R

- /Parent 296 0 R

- /Prev 298 0 R

- /Title (Test Pairing and Communication) >>

-endobj

-% 'Outline.17.3': class OutlineEntryObject 

-300 0 obj

-<< /Dest [ 209 0 R

- /Fit ]

- /Next 301 0 R

- /Parent 296 0 R

- /Prev 299 0 R

- /Title (Test Pairing and Communication in the Reverse Direction) >>

-endobj

-% 'Outline.17.4': class OutlineEntryObject 

-301 0 obj

-<< /Dest [ 209 0 R

- /Fit ]

- /Parent 296 0 R

- /Prev 300 0 R

- /Title (Test Re-Launches) >>

-endobj

-% 'R302': class PDFPages 

-302 0 obj

-% page tree

-<< /Count 24

- /Kids [ 47 0 R

- 89 0 R

- 121 0 R

- 135 0 R

- 136 0 R

- 137 0 R

- 139 0 R

- 154 0 R

- 156 0 R

- 165 0 R

- 170 0 R

- 171 0 R

- 176 0 R

- 179 0 R

- 182 0 R

- 187 0 R

- 189 0 R

- 193 0 R

- 196 0 R

- 197 0 R

- 202 0 R

- 205 0 R

- 208 0 R

- 209 0 R ]

- /Type /Pages >>

-endobj

-% 'R303': class PDFStream 

-303 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 1782 >>

-stream

-Gatm=9lo&I&A<G1rrL0KdieGHa/sNTUm[&[-WZEPH@\XY7SAjN7+mcRT*6[c,V,!2m#acT+gD/nhqPUJL`umBgAGPUK[+5oofJ$Z6aJeI!Xgj^Lu-EP:VJbp\fEC,@LU9iCjPh)H:<&PE(i6&&j;bV^g$&PU)58?7'e26'Z4F*^RHstdS3<%O'SDckc\[n0:Mjjbl50KIc"FY*\Jd3;bY[1otZp5O^#2>`j]"X'?OFifC(3$r4BPZR=J'o:W],<K#M_uhSO3&k;$);P.0YLC=[@J6]S!i-b.6-9NrV5;pY$;^SuSB]R86ME5:Rd^G<dUKYJ3/&fk'pjZ)C?EIct*r!^t=oZt\8<[NUkE:g#2Y#K7U9k!</kX*TiBkgS3,6/0RbK(qiSQL%fgMpTWT:V9d'k&7!Gg-ktn3Sc%2[XX_F;"@64]qET>5b[;EEAobR&#NM8q';!X(kLFoV'J_3\(Qe$s4aTf@o*I*&im>ceI..Ha7OJr_RJ(0\gNbmcX0KQV8[eaTT&2'+q)@#FAj7n[S6339$[=K:',Qm(,D[\):pW#E6i0QhB&O;[EaUW@+EG(]bA;i,f?;"<:rlk>h]HEDmdnZdoggJ0q@=CVo_+4d+cGKKV#T'?nKcWeI!Q?qG49I$<qRU'LDP:km@6]rj7Oe*F8Y*2B!<?9]j=6b!4$+<dt.dZ#h((FI!T[_/)tPWHoJ)I)WnR_(gMF>$Xn(-4ruf,siM1`f!7#1:J-18Fu)R7.-"'g8Em'"-uf7<R"Q3b9<+(jk6c\m2-A<.M76C`!(eGB!d[Y-hQ(oc!Th6"K+s38^)I8(Yn`V674s1uV/$JJLBj3,h"d\;27n0\ZaqK#.qKp:&%N&#NXV_+$hALe%CHPSD0f(\+GjJO3fX+2utp7rdUVJIW/Tr(U`[3a8]nP:<DN>D,,CA:$-th.pe#4sb['k`GpJ5aq@<9hM:h'#6A/WB=,FqY1,i=[N=P6Wc-@:^.9LIEPPr64'$>V<jC6'S:T6T\\q3C+.$lS%a;o(@m+]b@`c*!]gK+,(McVFW6N/s&]Vp$kSZ,7R'!ePcQ%k"#Q+c%k-UL!Te`4j.MDXp=(tVf/;R'@%OcBO;OWS/.'H,[q?rGH/UDn&iU,:Y4'lRWN7S@!bg(%qoVird8siD%8:fAZ9)"MVbECaoTpe_dkj.Afq(n]kd\OA7*$,l9`&*4o[2[g`^EFB\`\:4e<>4W2Ca9$L5,=s$-7W*CSBtcE+).%?qW4oWptnBdh%]roMkc_S8);/[@(sVmc8W%GL4KEG>eT0gLh8NaiQJ.Q@*e^j-qNUQ!,3phkoWb8ap&+:]dS>8aYp?-ku>f9KK,%)1^@^>G5htrMLF.>kk3R"SHe6e7P\$URn%#1hFMrTV'HQ:>@@j#GhPA((jY>>aON`.2im56GPLTOFXBRU;-9DBA%*![lEM2)bh_>GX)*mB4*F-+*%R%BCNA%0nA4qS(q!,$bYBZ^ru9<HoM&"JrVi!,%)+?Fj,L1hT9S)H4ugiQUu*Dm2,V*(DV`HLh-13^&Z=RT??<akiV\D/Oc%=%SgLZn9CaNEKB_dST@'P$aX.Sl3C3uNo"!J\hf*Y5NuDkI\P7f/@W5<_H4#I*=-ec0gQfcKkf3:B+T0H"%>6\lU$9jIUAr[M-D.7afO'i48YS<`Pt[I(icTH3u2)dg)_M)hh&J!apQ4IHoL03B!nXT4_6)9C]%]Pm,upK+fdDNlH1dRlpPJh<bQiuEg!C.%mEbUrEDS_Mkja%S?gku:85tKD8u[<d-8YJM37pn~>endstream

-endobj

-% 'R304': class PDFStream 

-304 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 1512 >>

-stream

-Gatm<>uTK=&:J2Gs0.ROSO'Y/b9)d1"2in%V+nIJl&0NadB.8^Z301Fhj&c2VSQ::6XUaB2tHC.ZY)32!rSbZhn0(OR_bm8$C&Bn#&$OoR/I,Ng&Bj3p-kUt70nj7=J/IYSAG;T4sP'_.2-[8^PAFR2]'FYM$2$pTTnBhq"aX'QjA%Md/KD:pqT)1lp$m9e_^;5IJnKkkNg<HM,NX6.$&:q45Jep+;>@kKEVYd;F2:cZu]'ZFNBRjB`7-c3I4/rF#N#N@smaeQR3tQ3_(Et&IG(JAXKdK8aG##Zji%YL^p;N[],8n,F$"$Edb&G1N*rA.>09=hin__d+(FW=8;nMZ9*2u2+gq[DObg-iMTr4@iceERD#EANKb0VC:S).pXt+Y(Z:*ZGGo]Vc%Ad*A'@g>HFgWhYb*/X9MB"tCU55fUX=lcpdKgc5ZbAp?:\b`3>qp)bdVge<u/$cfbeDU#4Djb1>O"13"!6NH[tq$<h$E-h[Zu,&7B4bW(kZ<`.$2G6DRuTa)+9KM[.@p7'>V5QJ@7@/dlB8.2uuUM8q3cca2@u2K%Z5kL7W=Qkcq&FDZ,jl_PT-'a0OPa+oYY9.Zkfh5k)fQOE0t=G"O^5H%I;lR0jO0G[m5S(eG_0[J/DoH10QkH)e`=BCd3)g-qpq8?kAJ7g7p1#&uip1#uk8AMo<)s(CF:M'tbg<>K.;;6s4GV,;0)3NN,AG'u:WuVB1gENQA-Be`]D'O`V+24chp#G)")fkhS=CET(c!nm4EHNE\F)[ja0h6>Njf24(X7miB+'Q[VX%JYX&jN/%fB+G#B?TXF'qX=lHmZ_EiX6CGpL,%2GFXrHA3PkmipU*,>KR+5/+]?N.J70X:C-]Y5`R9fL*b2p^(lq`hcai.\Z0P>W\FoS@6&C<FOg;W(On%q*+#5QO^-ho]1Y-[?K&oiMc$cp?C@e5d=N*^qm:-O]SNie5sHjk\Lb-k6WVH?g1Z]+mMGuE6_fdQi,h7&H%T!;'>e0Sd^1<Y;d/Cnl+&(<mu60e>V:r4"q/mKB&oGe)t:>2#0#uC3[W-d=48CT0R0+49j@8/?B3>J]7P_05_:WQ^g^'p0k0<ABl::,ZRV;B;3tDOf/.L5QeDU!?Ptr6T'Np<`a$QjMXB'&WH;)FQd(W(M@dAm6jPT63f4K[G&,3=F;D%>>/(LjiPk-CRZ5TiK2P?c/7tmHH>FWp/[qq/5.B>J(Q_nQ24W4.)#^$P[Gl8%$<aRu7[EHYUA>iF\.M_D,@U.ni+\\'Uq0JQJ0jKCcfDrWin(F3KYj1ukn'I,]*^1^0\&,,4a+t3,B/UE)cV'C(g5k3h0%]$ra[&6j#]h('_oM6iDc0Q_&N,!m[.1rp[:+rkt3gc;MLd!p>ag?rfot/W8XiuXgt"`DPWE'-$C!L#G<W,r.ZNOh^(:&Y$GCI+rmoj09li`3uRfW!0*ObLR#JTcEek00'%a0K2o,j_mqbM)n6gQ/6Eusc.)n9_SLDXI"XuDg#f>@=7%CUm-jl`Ut%jt~>endstream

-endobj

-% 'R305': class PDFStream 

-305 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3315 >>

-stream

-GauHOgN)%.&q*PUrW2,+fZ]WjhJ[\_A\=5,GU?p9`t(79.>WX&N(JU%5V(]phZcVKU1.?V`@NMoM]s+U3K;MD!:1gIIN7s/=s3HdJuhTM3A-cEOQ0gm9g5=Z-Egd)1EWNC4ReL!i[B>$HM8G%iN2J+aS$T45g.c_^oGj@']D"[d%ipeKAgUMY?Qs)TUW=5O-l\$hTom+2k'Zn[/PjVHs9nSZ/(hh$*e42RJoHeT'_<T%io[qm"SiroI7Ub*4<J#OlKke[F[,<UJI^!4KDE"Gkk#lqgAn5"=N&a@Q%@CM)([R"YCI`-2\NH;2NeS,!iuo9Mk\Q^-NG_C8oREU4Ol59#O.f"e'F^$9i#]7Fd!VqIQfO8pO8G`MRU(aj^C*.l5"EL0X*(i>;^F4rA*@2U>\/lh.:k75hp^7RHGHROen@JF3#h*8PFPS7$SR#_Ec@Os3(WB,[AJoB%t]\[cTDbk/;JO?Dta<_pd?YOcRY[=/c#"Rrb[jaoUb+];q9N*"_m8:H;D]F#M&A:=;cEf$TD#DgH%n@m$.N0Q6KA6iPkE#g;ls"Rk=_peduVNTOTV=GTdh,hkRrjrD2DK$^o#GM,lC=(58e><VG,D+2rHI#KH=Ae2"H)Wb*=%-c8)t4Kfi(:*M(d<"=ZMtMr/-5o1k7oN1nB:t'>S9=Sa_+4Q+Na6/4=BF"KSMUq2a&.oqlqBcqGptWH`WWUcSR!EWa@S%c:a7DA+DBhB7;9I8-9FqN!PrK8+D`*lJFN6O;Q?3+&o0O<,)Kdb^X:F?o_-rkbIiqVTkWTXKXJ)lcbGn5'3A?_*Z:5`O4Q6kaiB"Ba/u<;n<4HG0n>10R,N6aba<iKI?nN>"s#X^b^Pbm[fQ;-f4Uq&BD3p22J;VA&1fSS0[D^g[FTPfafG2p4gMLgBA_P:<AM'mI6RdcDMi$./eZi"e.DTDMcdN25(XCp6HugM'=+mR&OCcft?H)-l97`l-t`hkW**e25.fm.d`4tIt1/W]0@c5k:I7WBIR`%NaL&#`d?ro-C+;#/XOH?dYnbV'pO6ES==+kcMi/Z96=ZC(4?emD]%8N1@/l$YTD#Q6i5,a=teFBT^-c4DX/1ln!Y;;gC4Rt@sciNJm)Y,3@X.e",o?r:67K'd4q.^bp?r\LFESflFtJN[$jYg7d1&Mi_l5UcLpP"?16)($JM/K3((q=!Se(fE)0S2o^alTMd;EQFM#mkL?(cj%ceOS*iGf%Mh_Z/To,ZX=<FmS$!QF9Kn1*#8.L8(Ts&63fH-/%Y7_!9:.$;YTO^a!:][2@LBn;$I,GU'?8;fP;]W@+X*Ue`Z!sS#"c%jg2OgtYc=&,n3Y1%SiubSmhNm'%]lI/C-5P[6JTU"7H)^%1RgF1ep;_N?2H;I6K+ArNkr8Kk3mm<Ne4cu5n]`@1opF$IU-b?f0Vq)JR)U-uc1%.$)g$3A"c)UM61#[0$iODn/7f1XJL#9YZ4'9r54h5=E&%'/ReOH1T.6[]1$U+PnG`5II^XH]BCHj,S*3%Y]m0)UW&RJKFH<#N5+[fYBA:L`?!kXIkinVI;>u-#Kh4d9.Hg@bKVQjSLQQMa"b34Fp"$F7b9^b"bqS3gQC+NFT/M8NG;U@QcZF"4T\\Eh#<(MNJ[5SMEYt>SkLK4mcWX/h\KD(PrLSmn7[Hoeh0:V#D1I/iC\@><@ShK#`sYo._pN\f;5!Z,6P#AA$%#ZZ!`M1$:Q55sZ"afbLBD>h3u1XfL9830>;lR3m0SS]a4QGK#4@gR)_#;25uo/FKTN)S?56&+LN8_==VXNs+I:4L]\6#KOgI1ei7ARj#CYrk(rrPl^3/cq<"ob(*K>ORi1[ZiGHEBoZY,A"i2X,t-P]K@QFr!b\ZiK]oO`XZ9Upop'p;h]pGL.#e$6]bAM!6UI5h`)d=D/6_3*3-X79ep4imhGYm7*mcBij2!3.?O%\j/;bthq*4$tLMZs$]2C/EiI'`d4o+r'$M'7N0uS-UK^q^%fi0njQ1oM8"e:msc5FfaU^2QbQmScj<.83nBOM8*t=g[=1l!T`^cWUe2=-WcpmkHa_+P^U`cajXfi;lP>]+B9_iZk`YP\l`umB,+81Z3oUYn2pr]MQug0Ym1QI&&G[ZFQDGs*=B-.F\QGB8N$]k`+QEHPn^'j,"=7'IEpsEdPDSN2\$6.egfiAY5M:7D[$-Z7X'"hiOIpPYe+/"6L=D\<<l.g(S]iZAX"E.k/ZCtN#[M^S&Ag9]JH4.Kj<+#qs+@cNr@q9k'lMu\)%?HV`a.e64nf1i)pq4GaM`?)_YL49@dP0a2(kN1^!#Ef7X!2'6t*YiCa4_)P.O0beigVi&=t'&9JK5YloPAAa9IY9);1jY*kG+L\iI4bX/Xsmt[[p]lG7X5r&r.O-d1#5jor>n(A`XP6k6Q**n\KT`_4Dibk1[mD]oofe?ZL0Pp)CS0Ob)B$=Bq:ZZ#8Jh2p.gUkYW+Ft4QlBb"e_<0fBr3!&;=Z30mcbt3;6\)OEq^p6rfiN5f-S(9O)O"Ma.bVJL3j9\RSi`7,n#fcDP/Q5lPluV3?6G:-`moC-jUbH,Y?7eRYtAL5MUhF#20oBMg'^EFA9SKP5WlIOPJkA::Ffk6j=PK>?)+<Rd=R&7SBl7k-s>*&)jTb^dOrJ\fF`ehiAbZ?Y%Sgp)Mia7jh"@<-8,pVD\Q'V7.5st/2`>H%hKqDqk$X(OJQf4Wn:+qZo]R#.T*+D(5Gn%:9s1:jlpruG*g:4NruRMNC"V10-G*jP_aD^Z+_K).ZRdA,#r23(0cEH:Eq5Z7Z'%jmUB<8a*'[u%:\\kZ*uf^O9m:ThpDDER[a]YQ8*Oc#@TUG[dWY$)/:)Imurhus'D@GqonIW\g;W.&Ug6j?S^=H@M&VJQGZ-$p+DZ%]d!dh]Q)R@:eE)nNr.T#8SjhX2&k0'nLVY)hVYV,J%a6bV+ES!P(Qa!*+`7rs8)PQOL%-GC?^K6,?sj<Ol[maKp2U,\=I#?H[@chiU@;JiRq@<&<c;gc1Lh;k$2B'ruQ57H_/c!7L\na0iQ.&a,2CZpROYfa$J4A1`s@'$O$=V-F%"?Qm/D@%<WI'9`HQ]&WAu30NOFk?0B8>K'Cn_[Z0[jqf'FZiT2).0ZP0Xfgh-oPGhMjllJHJD3)TRJ1YK^[Jk.j08Zp>a&0%R2=&lfcNVZA-+]J*kVJDu*^1L2N^;'e:\.ai@=;i"b8d&pa5L^JA]WH1gHR4kaF!nZXH),d<Q0Z[0iqs3'Z/$f.O[Gr@:ieWb/VM(fedY-0p+CqHl93i&E;($o)c=YHhnJF'stAX3W@*1Q'6tRWWY_K@jd<qC%Y3g_[_"klMi?.(1$~>endstream

-endobj

-% 'R306': class PDFStream 

-306 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3224 >>

-stream

-Gau`V=``=W&q3VVrW?p/@@\tV+t4S]]]F+@1-7KCf$;Hb+".bb0LHH]5fr&9^YJl#:t@q)S%'FA7sCa*lg>:f?/iY,=+="d6Ja<8jJ,@QO"=>Mor1_&^QQdZlW6=CQWl*RI,]E.$=HYJga-I>)5E<MFhN=\]RC#^h,[B@B44%@3H8=3di]_i7PmAqNrCQ\jMHC6(4VFb5IC.Ao[f/d_f,Fl7%SnJR_pISRce?UX8_>$`RLU81,R08U(RA&T<DT:i4V.AcX8l2IP:l9E\a31W8k8f)7f%#A6dNN25MHIEl]Ffj.s1UV;Nds6rC4`U66u%?5+p(hTE@fUA1-i@uV8ZZ)ObokK+u\4-k_d8_T$B-^(U!A4=?^p#r1e$o;YH'21>bSi%Z0>6Z/Tf3YQ:81tZ,pO&nZO#fQk<.ROA4*j[;X=I="+\<l29R.4ON2SL,fOI:UM.LuH9/\Nq06[\T#=g/3cgV>r&g$LXGXA%JK;]TWl'+A%E8G/1<XDW?aP1X**ZL8R,A[D^r\IleZ.e>c/8lUBQe;`MAU66_o8#GV04fNT:;cQ=U@LLnR>cua*'gXlc;TCobnq[3#N]l]<?J_#ZhX60VsX>4(Y/2JLIEb7?`YXN!t&=)4f=oE^-hk_fm6QVASSmU*'npR>_:X%oq1/i=MfS`kP_VQ4q7JSl'(A6nKbYSa]@utQ@Nbm2^WUK'OY4/f'2peeU#D;2Q9*d'/`XpnFjaE!p'Y?er%>NOc$@Xfl?S5*kV#V.!fgT;NV\JKfWV^U617rdBsPON9N<dP8JJ'@HY-1cXYd[B.fQ5_cd#mO1k&Y/e-V;pO^_2ED+6-<#_\O5ZW`D9UI##)G&!rhm&EA>dC0J@%ARUB`GQ),0,+k@u3^RjQaXt7QM3#Ga=I<,HG[D@-s"2fE0,H.\=QrWJ'-N$h/(P=qNDq.'?Cbhc8_&Mc:tV]P/LQHn#D*SAYbn]\,Q%_'Z>+H]aZ!AB?W$`=He($a-=Xc)@R*^L.E@CcRTsPcK$\)+rpS=)]`.5^I08c1#/B#j;M*YMaL8g_Fb.%CB6-gG'&l\Kqt`2MF>=b,UhAMNh$*@!ucbc+7AX?mNk&3#+*cNp0):d[.FT!S/+[,.P.AAS#>l422eW#X*/>gd>]cd/!;j4onkd`t.?WnE5,I$ZRsH&EjO7[)Sb/gaP\1p0]kVj@ZL'lq#%]F+?9)Vb>bBOp3P6dik(BK`udq3#,o4#ofZM!V1m5aQ!?CC5O!(NOn(8"/?`f</J^pUcJmK(^!;af^k:.GPn6Q&[b=k,ZYg2TC`;MW*<9,*-\jm^L>;?<3-L9ehB0SaT@Y.RYMr!^k[N'!,1buaQV%)LN!?]`n&RKBk$+9KP'!naDCW1@1pLEL4M;j!7'4L#1GW7U\(ZtZ8E6Uaq\10!4A;@a+XX(5Hl/`&Y>=,CK!ifci:^_B]W&KFCp,3l:h#YKbB&3Q-#WcKYtXn8)XGe4+SL!Ap;'#AU@`n4/=dA%;bm^Ft*7B+e`8"L>.WI+D:%($[0,_qbEeGKQZ\OkN5me3q3(\Ud>%R`J6G-nNY&eW7gG.)oDRU/u.sXMB/%X^eeJL`TWVNj3<VNfS1akZPtj.d&iGT%aABm"mkA30@lp&>RSC6$]"g#;6-`rnj"t^)\n`E$8<H@_)?hbD,D,j>#KFsh`ol93XtPh$+.]d\?kJGl;:hl:`ZE!ds\G@1l4'+F'rdj-4t-Tq9V&1oP3rh4YlZC@/qP3[o4WPruI\:^qh+Kepa48WB5dOSFZ3:Y6uOp?>8<`<TFR?XIWmU)t9a")J\nFU(`'PF*q2,aj'qENsmbkjhHdd+i^5Z!UR"CPuUOY<65ce_Vti$%DI[g-8HqsbWX`&T't<-kk;tei`4u<#YMH:3H2@[&q.A9c+R%'p'p*XVM/R85YX&_e-7.!)'>[[K<,raDNL;"N`uHuYbN>#!`dcm["PAe\\[-uj+lG#3j</"!g:-JP&h;o!ZPPVDg(t&OZ'Y)?,$EB1r$s=Pcu?t>hgQ-E1ri5VtnLL[33fBX%2e(D`0[mm.6;jAGg.V0NI!KlngVgfn9^DmAT=XR1_Yd#'m>W&)n,M]AbgiMZPZ=,?pq?SEheXN!uB`!A;qD%l53L_HPXKq@02u4Qfiu@53;0;Kdu_oaoBX^n*kl#Yp,`T`gd5eSAmO(H<NN/NuJbCsH]M_jW-bXeJ+#WmTQGG_Ts9:#^6sb8KruK>ak:ZfZl2&;oV(Zhs7hZTf2rmU?P["6c0GC,=YVBm:`cHIU,l1-H/()o7,pH\DrPUW=A&jQica,Ekhbgm4duV@;%SdrF`9XRDZZN3NN,gKi,:M9]bih%ah%CNbS5"Eu6tq'%;co:UeQPKU*r19OH'Sc3T)k[=n&*-#PWR8%OeV_XEnP\'U))h_c`]YlrIDbuALD0_G1D_]U<L+sQ^U)S@g"e@RSb9@etAounBNHtV%I;<L<FAI0Zen(h``__VPD8$/H"dQ=pRP;-N]4:DOg;n'e^kJN:FnL>ei<;fY=K,6?$hoe8^[2f9_%AM]7.MYQFo[IHEWs?CT^[iAiZ%#t*bH+pK+Sg8(bZ#mD+8\g[`+Pr8-*<CAhN4CWR@#@aaa_%Xi^j\W[(A6bnXN&MG7/,cZZ_-WjC#*X2BgaX0mD&)kJ*,Mlegbe?G<foJ'G;2]OsGpD]R';gdR5UUr`9ckF^8bR0)9<gue#cJo)EMjOZY9@p1P<b^+`'3]M;k=JB#dGHUl?[_eIKmpf7p%%M#jh:RNSK<$j5&0N]7g\CYiLK]1PJkZGC(&5_UG!6V\cu61*L'b+,eUG341cNb0+r69DL72:9ZRFmPhKr)G)kOQOQr&f8Q`=('k^@iF^F;_Kd^&u"k+7jRhY8HO7AfPaO,j='g;$jXs7?PnUH+QohmsZ7Uq37pr@e.P[5+Cd)6=ug8N!tKM?H>LZTjeVIP"D^YNDk.5[6Lf#&9mm#`I5)G%!C%T);#,o'WObLB?4o.sM<a=lbt5JTQ.re\_q^R0'*h]'d%TJ/1%F"VG0qQnJU69?Z8(Y")IauR-2KHOQ=&'Cnbp@c"@#]!q^;U9[6CnoAc]O;^u@6Ls+B4#/\dam(<3H3.$Z3QoLg3ht_#A8%neDe,D@VKXjqKpq[g=,3U6&g:g*7p#4R[O/H3uY`-qqaJVb2]c4SCHDCm&W_>]-QSLg.>[H[-)8fS0M52c@84iY&`s5mV+Ckp:Y_C1e0s*4&N?/3g6O%jRoSR!D#KKNW~>endstream

-endobj

-% 'R307': class PDFStream 

-307 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3151 >>

-stream

-Gb!SnD0+Gi')nJjr!/1X+7)(G(9'7Ih\99iFVEN/XE:>AmlE938Sgpo+\4-KYJ163Jfsh<T;/8r4#'/dqo[a6/nc9uiEPLF>96-"QK[[)8%O8;/#3]`+^0=[ZfTq#?hf\R^dgb&(trL'1qEKElKROrD:0Ni`X(tg^&bCJ&2_e[a!7t`OKNB'%/cO3M)JfeqtrNXUQa(S>5j)=s5;=Ti]geuMk<s[-55cU1:lD<;\iX)g!()mI;XueR?E^CQjmPRV"K_@Xr>1oqb?43g6lF`47F7po;VF9Ea2iGH+%sbhqr/>];rp;G':?bI]0MR;Tfo:Qsuh3O>f0bli6o=rtl!pTT.o/oPD)N7b5SWR%U??$9&gTpt;o+EkJN44\S0^^b+iQM&A?bboq1e/SF0IWE2idR,="?ii?)o"@2/<Hh],",#1"TI>mB]L=kf9LS.B&RA:X,dl*h'/6K%P^b\=e/N4/6oXk(oYXE^09D!m7J9qmI2?F`$S^e'';2EDna><4BOnifS/n9l-+(8V'TF7]QVC:5<*QrQXNEBhTZuRj&!#GWYL^iYn7_=XiD%n3dj?8&e5Wn_7^qr7X-XkrFi'ij2_/D4["O7%lcD67H$U!%.huJ!/DTl%L,;U(95UQCR4rF&@EWYZSML:TY2i=/i=1Tnaiia-SL9Ldl-d9,\7'=^TB&'W"%JP[5!IHM]-_8QCWR`]9GlWn[\orOBETEX;G<]A<+-qUABQSnYbaCCJ1gPUUe4[Ym?^Z3MK+Wq%N>^A1(.::GEZ@aC%Ae>.'qD]rV%-^Eb_o_""sALY&?/7t5P^t.`,pce<;BW8*q5$bGqhEj+^-V*r)cUU$;QfA'*S"#iG(PH&0?r"Ts`iq"2'Y!1I1a$2SbRAOqO>A$rYuTFT1m$g&#jEqmG=nd(7!drr(.b3ZKM1TT__U@5o->KB">r@X<6#+q07eUMNH@9a"pO8bcgReagDU8bQGgFDI("J&76-P:hpNB?-$+[u53=Bi*E0ZjhCEZ<2+lV2=,1PqM9n1_K*BB=BF,c_(JHAe=J!!OSN6CU[&uCa[B'#l=Nu6T;C"dJLB<g!B8jfg3/'\EG$c@(nTD7f@L2^#%$7NQK=G7fgp;[eU^i[Cq>"JGL;s*=l))9\4uWkWf8@X?SCE_(9I)TiFX?s1`=E?jsfi`fUAsAq'K'[eRA"h_"/:jiO<Z3N)L1NSrc@agBYi4U>ltAUOMV8CECd^,7+[QO(5#XH05u<$f6K4@B]EhLGB@*=i6!oa(cQ?Kl>eN^r$MG?o\7Z[g/-lU#$ojN^e9lA*Cn^:-:tT#'O/`VoJ-X(D2P/hHNMDaY[C0B"[W',RtcZfsi_5#3#[%$<9pns>CDF?+dLn9CtQ/PhHIT;@([d_/mie+3!r[u[lbN)(7MQ2\KS[)(F3EAa/S%0iSc9/cUupaKC=Kp[V.cZi5YV6X?4_5"f^(7p==5rcf',F]33^gV"^X?N&'Bn^r1R]he`aW&0t:K+dJg.ms`WT0-:j?I/<<1b[CFW#Q[b!]E#!Y"-j`\3q%A5.8C\:I6bCE`Iq&WNHdR$:N<`!-g>%kTP14hn=,-BO40//tlE2Vu#[;c[jr^,@kVH2DIEc&_T0%>@:-*rCSQipuXIP-\V:ToIg7Ls6))K$(!b'HCr_AlgZ;P@@mS$@Q4G)-f2#:hF_>Jf.g44F@o'`\;uan:4gkMWT\R+3%]i*>%F)*Bo:,>gq>FKe+u[nV(*SL]G&k+%a@n=d4cS@_qn>1.nlM7d?#f*(Y5r]&g'@N/O%\6),1Yk4!FOjC+F1aEeT3r7jscL+u&3LU%T)aIsR2'CIQaJGQ=.*@9d-^?B"MSiW,BAp)?>9(o*"f]j?&Qq`U10t6o/Zbqfbp%/1?E$Sj^Tr(3B7eD?@_W*HBGD&C-YD5\?-7P+s[E&lu9Q8rpH$h`DdtJeC#G5uAXTBFliorLJqCCjDi:Wg#f<RFj355B[X$/YEL;$:,-6;Sa@;EMn^[P;n/g.CaDqSS8-Tmh8eBWcVR"Wp4QlecV6L@SuhEjW7"ng.L*7i/\!lRi?BfnJ%a4/='Cg#"71s+YLM9s6*q!B]'Y7:os8_GM?oPW:O4jWIl]J\@M,9+1t6h=r/Y%`e@"Y*F$UIG9VLu_9:HLW7TR9e=!#Wq%^G*e8I*@^O^^Vb9o@cU+aX,a^UO!i!)oU#1(_p0I@\Vb)YKQ.nMchcLoh!rk.&E84ofkuH(.GM?,qcs#k(@,5SO.P^QHp#X/klKJpr4PYVVhe:0+<p/d<ZM7FjRee9Oegsq-Smpu>8u1F9$ACjkgh+>(DjPui?l?B]MhU5oI"sXS:#W3=EW9aemVQ+4e(`@f/BR[8Zq]un208\g[kpH0,@-/5Qm&!f*&(f([kLKnAlaMEI05f`lWQ5(Ho#"U]-@YYi"`7KPgfE7RdE?]D#bXim1l0%$1HX%Q\Zq_Bqdk;+?FXYc'i,7Nqkj*6PY1&]rb6E*oBUp)[+6ebH'Y`<#4q7!LIjegCP63Fk<O;!H"mD2Op$e:s/tJ0Kb(D/r&0'5R)4UVQRE;HVKFW"-cHin_9qUEt=65`p]gOb+2f/%$gPZ;DQ1+p!Q@b-]8&'qSO@G8^XnpQ37l`^dEb_Y\^X)#Aqt7Nqkj*/'@ePk\@[:!o/ag+X-G:ukHM9o_bm@L_1.'\M80$EG'eeY5#GIY6q-=BV,8\O`:e-\mOC<,,;&@"T5b+C-Tt(U]>1e0ic(N<W6s4d';Rm?9"&?]8>TGo9B.+C.qq1LK2SnV7J9Wjc`>F)\^h;AQ*%nA:Bf[_>d53tLCS<;W<q_%r4N2dV6&jGQHl;YVAi83U!D=1qQ`SUnbS8m.B2_$a&3gA4trm6$J?;<`^*"C#DT!PAgd$'/.e)I\'&bcWE@Wh-2UaH5qL8u"pNJZ>V`XK:R?_U=CQgt%WGIbPFe/`#SD6OF.)Q<BV[2G,a)`"1B23R!SJTLPZ/<P;UOAMrolQKF"(D66./`JN6mngb,13A79D<m-"baj*cJPrd"q4#nsl.nIt$"`IIH>pl>2jYDH<gFLkNON\1`4FrXU-7]F_YZb5mQfShpT2\JEj)2N(d&7Q\;Y>(,Q.<NO==OnafNPj9S^U.(Eb@5g^9B:s;JT10jlI*lVI..$,fC8EHPKSGo4tQU-'E)$:V5!.2ua&mKGOI~>endstream

-endobj

-% 'R308': class PDFStream 

-308 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2527 >>

-stream

-Gb!;fa`?,q&A=tks3RUc,Z?TG;O`l?ChFW`ZIHg]_c5_!OcY55";lZRUA=ZM#!n.#/38u*@P=u\@d2L(IR$+CKJ%_.mb]u-\/<,I=!<5/N2I6\K0G7O_TVJe#@H7fkaN+Z&4OEKJ:0>ILN"/4c[o$'(IeL/5(%mUL@ms0i+tB'E=-+ki+j=)AfLsVR^26CbmYX&+2dk0N.6&Xs6783<58@AD9Ss5Vm0ptC'6K]P?3/<]+.K`5Z7:A&VSSk/KjIUpDB,\4"*cK7Z/P=2Rk/g9S1$^?[fWk?Ghe:0Ha"`]0VcI_U`nus)l6UkUbr*1&i4-90$YfL#iNA?@\V653M%"T,ur!<oc;Q3D\G::QP$'b@/C*2sr-'Y4+WD3#BATc4(#5hb&O[?OC4db#N=F.lY&aGV#^9L8d'jFucP+0GRh>-hVHVCWs,tS5A;9m]Yq2]`0[?#nC328S6Fb4O*F3f\?`i6^p0.:QL._6P.'Qo(-L9i/g,lYl41RCN?S!XE*/in[msN,2nt3%_@)_R!pr"KJ[f$V/50R<;h$P1g`\(B_0dN_+qbDRd-2Ys1@5OZg='hG8=rDh/0h[9A-1&b:RB<%XAI[eZFC:+3tAAHGOeM]kB@TH9i8;!k;,gAcc6&1h4(`#V#=E42)gVqqXDgG/2071stWtUkt8rL]OSI?m4.;ijmtT%T7)cjm"\R74+-1"?)Yk4UB:+$."s..puL,7I6UKU'OG:b@B-LiANT'Jn&_\L#K=J)"#c,HOektF/*Qr&rn"Q2]sct[F,9V9NF.<6Gsj3MC-`$e^PBckkJb\'B0b6,iq^FU7nQp]-8'&#r87l,!fsB:q>X,+Y5=%6q5e`:qo`J4P(`9#0:rN0k;_oAL\sbNLL2IKM"k/iZIj3(1M+h\d>Xdfg=UB8=@9@nb']>Q=l4s?ZS5]:Og6E%g-)(\/1[=(I5B_>$F$I)n!-HOO4=l$sP9+gqE":()_!?S>?qqcP2+e:PEho<(/jaf\tBr'>!>s4onkqJ/C/eE2hfJ&km=e!\s[N$)?B7Y/hF^4OO#f"Ob0HG*kk0U1Ub:XN''OJ/<TC8Mug0Km2^0A!14I>cYANmA:W&'KI't.nnn89[a/gE]MM'ms%=t=apB<09JmIqNZ9_*o"k+FST,^-0Y9471E7g3Z;t8RB8.In;=O8.jJsV#>?jK53H3V"HL;tmI[7rRt3p"^^$7f\\RgXg8[l"OC;s&=X-U\RPBGRYn8P2r(P$fBSb2RG)$@rqEO\X:?aI_;X,P?f7qOl_F&fUF>\'@bC_9cm)nHQh.Zhi4fGT7)l!9b)V.,!1c9r=0-5NK7jDX\=g['^V/oi:l34XUE%,pWdiN85HR+'T/D:K,QWOm-L>"j]ikI%m92F=0ToSt>%Via6f!rMJQbERUiD/oh5G7j9\384<ke8D0bEN=d*[pG+pCl_*-Lmn^^81$aq_Y&E!EJCkPLl=mGhsK[pZu4<IEMs4cgS*moU[*c)#^aBhpE=J4j^P)T'#;qcZ;3J[ccO*eD44)p9j8]W">"1G!W'/('ta/bQqM,=su@E-j;S&RULX.j:i47[SG>CXI.q%*R[SO"3&EGWXGmXN0k=T\h*2m*VpZRRV@uWU]W&MOW_Lf(5I*tdZZ[q\69KhOp-V9D@567?Z#GH_uE/UEoe4*J?+*EM_E4EFoj/%]nCeV6Jg2.K$mc70lqt1)?$C,96\9?0Tp[hICf-!=^!bLDstt#PEpDf%VSXLm92(Mk+hAp7;oN5B(K$RkXnk,G+n5EUUo;nFpE#(fc#/50LnWoYMV((XtXU(]n*"<$*J6Uhg6;Wa._-L`u<a6#[#SdFe3:7PNKZR'G4P['OeeP6g_=!8YK<t=Mm5nm=5A-EYL3GB6"6D%t992*7Y,_#BZ+pRV>R3iRtKRn'Tp/Z"aJ?]=m7[f%q2gec>`-\?)&g:?kMJ2bUc.kYs>F3?phbN9$:*A,$bK=2cJX>^M=]9:7'S+K=YSGmRPVRa,(lg/>O%)H::VcEOq2Kg>ekH-r$kbKDRe@8C#LoB1mKcug0D?L,F$i`Ja5P0^WOQ-,r6f<4"%chGXnG=49sARl"/aXQ6TA?2]WWRJ!j9pP!$ZaNEhDpm'mQKp!"Z+^-tW97V6BV[Lkq5ZgR`2]P(oL2V5[M5_1[fVDj$jkZ%AERu.f+=fX?=)&#KUEHU/Eam,M;GZ>Eg(mgALXaJ2\[^P>+gMW<7IplD;lO$8q'<ZCnL:WE:h$]IXU8K*_j$[qVr&'+%G..VJ;7Tr@f(sfc+8Q[dNI@<3>G]WXi(j0(0KWlWP^NXB^;aqnd$4`6@@*g+f248`s&lIQ>.=n:#d)I<e#*q>/"L^Kk<544XkEn!ummZX*NZJD]2%](:-BiI;4BgON.pf\W@jKEdI2@+[KR@5GKkVsKgjWR\(Fn$7j01T&)T/k(fU;:I/YN\!qK7hZPk`h.R#NF#9Pe`D\-`4,PK;Jr+H:W"9VQ#Es3\MZ+@B2eoAHd'Kh@,gVFhQR.cajdC7T>qStPM8fr_qPa>_[$2Cq043.~>endstream

-endobj

-% 'R309': class PDFStream 

-309 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2436 >>

-stream

-Gb!;f>BAQ-&q8/#rkgoLXc8.dc0h'>8_i#p)_(0EF56"F,U=NV!<iJbW5$'Yi'ilA8!K4/M8lhQOT_nTDnfR/'L3Ue!rk2O!DZ/Snl5ZU#bq\/?.O_W'jQ]h5PsMK61K3'$Xq*\4WLeO4b1GC]Z(0C:([-WmeJZ/25h9/YbQXX7O\H@_qR.8XZ0]O>-dOFbS465(GP[cUEBF!^\QKZo$)+IKc,R"D^\>i.8>SOXM_UX:6"CU`3"Ybjb.[J$Y$9^fKT^F;\:+#]-_d#brSSc31<DP+3qE:9AoDe+sZNO<YgWbQCnu&R=KS"h*d_HS;)$[@3gfl;O*^!9r4DN/87cbH32KQX/W<Go4_gl`-9uBcj$SC3<*<`Keuu03!CgleN-R4d5!nEF?2p;`ef4J/7aET?,%JAC-m18Z8'L-]3%[YlPa3pW/`"b:d:`<7WKll0!.Ja`I].Y^i)KD`PP)6N^\m_<O1#0_t.4Xeknn7H[E$[IdRB@o49T[XPN49O,c,g)RS2UG`[9[c]/2E+:B9p6aFVf#)-7e3;N4[c3dLm7(Qr>Bm[l@7e$6m>WrA>DSZ*7",L9)`M_pP8B1d*VNb%YEpYk_(@i\<>iBUai$C]tY-EHl]tKN4pR]Ds%H"trr$+l\!fNhW'jP"W!bQS(M-u,=@mJD-,:hj95cim?JXW'A-CortAd!`"]-`EB0U's'L/]_d6H+bM1:T+;A<J5fKo7(l/M/HHRF6q`/e=T\"roXc$6t(Rb0mOK'O`@HPtn18VK-O3J8?R&@ck+AEdDG<?^-9nB=p8)je09K(&*>f^?UqXBHbIabHkR5+.g,,HZP"L%%7"ZMT72R[2<.D:p/S1+ObT[WmDmECN4_Lh$d<X,`la_A>E67,iV*9]lYrUoCi.5q.d?Q((]AOU((tdRq%TE]B0.I)hcrIngee3QY`Fk,X\"$S'C-M30-%PA#U+["[1pqC9C:?]hOu=8i^KL*eZDuO%GU/r^Un6DM(6HLInSL&YC"V[G[@L-_<!8ZY#d*1dDUC$]:l/'-d>ZC#K%I91*E`F^2m&_!j-en<,B(^qmPVq<%8A70Q:6E$6SR]*#X]_);@C(fK8<*?.1ULtb&BU6Th4,#M.U[k5^`jCWugGL`E,.0^4gA'[R/"%k%37,q30GQj.?R%QZTd\-%A3ArjsFD2pR)>d6JDX3tUPN(HQRR^4e0ZRRi0Z!p`/5]f!PNpb]RbP4U'K#"*QXL'b*5Fm]s*97UH-S6?>BZIW,\G-kJ)OoW*)BR&F'#a'XM<)c0C5lB6?^l0"4pRBhl<WjdT@Vi(W';F%-HVhQ=67"\pH9dM=82,6Pg%M).niKF*1g_N0@1'&P>>GA3m;H(0i2V=J[]f2Rgs;SlSnD=CN9dF'q`8!K462)0GI^^V:6/?Wen<#Uh`"g*9hO91TK+Eq^en2TYVM\GM_7=67WZ\E9VT\(fYAqS_G,+UOa*=_*f)\#\<kpQhgUgD&153G-_fBTBLQ^2h9%<&3RW>%MsPj,_H-Dtj"70#OEJWnKT.2qGK[*:@lmj'J+QS:]_idhE+/#I&CVa86k=J"uT7`W*[)2Sr@sZ&A=C\Fqf0;<p2-p#Dn.WJlr&e43qj;80NIM=j"^s8)"i\-W'p];GSWD<ibh2m9FC@L*!Mmp_!rnNP".[mG>s"Q=5F#e-+<hm3VA?=2gj(Zeq2#+O_$^q9t?]9?MoJpZWC-AE%':(<iAW$c(tF00G/]#TapNZV^mXJ,`M3l?Bo<RF1m=Y+\u)sr01n>O+J*)ZDbl9S<K$p;Cfe2Mi.<<f#-V2\oc50iu@pW-D`>J%;qlDE4H8LHPp3@oKP,Q22uDR:)QY'6&VR1#Qf$>tQGTEg,)8<$&NFIYecm:79YP'UlQQ_4i7[Z_,rh8X.5=!0\"l`_M6>/aU=eIFL9LS+%kDr+O.V=g/SP+Dd*L*oRap2\gB>1J'pPLnM#l\@3:`\U!(KqblC_(4F1Q#qu/X]AbX44@>!J0P.%:-CH&^AG>S-9lqWrSlX_^nT0)1g,E,Oj8pSniI9uS`n@"Vf5WDB\d/5(@o_T6uYt0)<]pf^$s:1R7QI"\KqB\l."Jp!H'Lg*s]A_#(MI!'2NY$cqi='./D,3YFe$XH-m>aL7*a4OtakW'T%fF<n@s$rem\hFD/6NR[SS6@%)H7M[ErKisVh\l1RWZh03?+;*'Hor*>2lc!GUYE,4E^r^JLpamr3f9gsC/8(F_HbWj:W@VH+<B!jqFLG9n$_-3pdT3]mhT6SlMKh"V-*$pg)"#kk+9P)(8Z:%UbitC=h!MgR*7KFu1?])(3,Rt#,%Q$^t:=n`M'ga1Rpl%\.(i+`>q*Q-(ZlmO],Hj&?T5JM9QblY2eZ%t+;n)\EaQe_OTQ!\q6M!.2l`8lN`94j'MDht3jW7$A3s7R0N;r<ILq5/,!Ud5?1s"YOZ[VsU6Uo<~>endstream

-endobj

-% 'R310': class PDFStream 

-310 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2636 >>

-stream

-Gb"/)>Ar99&q1@Qs"FreN`%9@;'^9E3@J:UDW=cXgIOn5*;*`//u<E0$SQPM?f.8WP+o+V>R*iY^kOF\Qb0T]HugSCkhqMqr]1(q`<=K#2o+Xo_umnd(/.2:20o&ZKDIH_l*^cO0'h8:cc1)0Sf?cKf'etqf7po8:N0=/g8N=%4W>^K(^@ld>b?3+1Rki>W1RT1Xhcf\quN""eaC2Nh[eh(?ab[QGIk.^1MQQ4glTqM0XHUtPD+PYcqP_K_JLhj(e8l2#`q@=Ma2q5cX[_VSr+4;SGT@Sr?O0i7-KLrL3!pb>_W<cBRPf-W"+=N]if7+id)Da-YDgY`c.Vq;VW#9.`kj&/qh,^5JV,H$=T0M-[7+R^*j#!iGPf#$9sE!K+eE.+r2@rjUq_/Ba/9(1BCgHi%XS#'/s3nR0_Mg]<!)Q,UqN]*Dbmp9)^X_NqB+LH(8K'huV&Bl+7LP,mH-#M3UcRJ[UYM0J4.#^;'O5&P?m1TkF&e@HWBV/VE^)V=#7f6dg:Wl@T2@WR:/b_+:SQBssXRRUp7hNjJ.o$[i1YqO\"VApYi+b*dbt:Bg#WBaS\*A4EO]X\CI*!]="m\M/b1X`^DS)4FR%`H7Ni@'W%dlK)R?ppl<[_Un]W77O*Co$AQ5\1b0'i43gBaV4O1acCZSX]nmESWU`H8;a/)^K$F3Rt6d$=VSqAMkd%ae-pI5Qkuu_ma,p92G12?1N=2b[k$NGhbJ_!\>*5B-5LtX;*6s19u;'n>VrKRVR<+_2mMM08"]`Nr_Klh'H`-CO3V30h@#0*#=q6&,oO"$[]5t2U6[QaWUptq9NsEGZVKDIkYLI?r6/anR'oI>bWigl[kB61Ho#WQ]6Z9I^3r.mp4C#<DI8urY)4kk\!L0kkqfglDOoa?Mmq<5bNUgqF<72\[>N9eXf&:n?;5<,D=HZa[8Zof3:A)^rsm/'l92IMOIKo1I0!jGnO2ZS[gf@"^?jgO\VnlSW$:CLHE#UF(t%`Jd@$65jF/^R<nDIkEhLpi$4&a*^i^@@2j2-$oN4u5PhoNI.!p"m\iLp?2)Y]ODr$Thm(dBFRIM`$^c'^.rD(DEA9nRTpsncdd3W8eqpCt'F?R@WfH)Zm-C&3f\=G#YZXedidIE>4om&OCd;I_(>Hp^C4E=`]&YbIXYEW$6JP1<0SgS4)IY:S/&k]&)c1TOAr_;0$S]rB7?S0qNcVlTjIfuR$]7*FEY:guLk@nF\h7PAgK5Z3`qBU`sNHboS%H6<;!Nm#"GM$F(IdN:/j24=/.K6+Oa-?Nm+iWicprg#mc!q+=\dCtOTNh_E6UB.Ts!nrZ^9ll=OfB*KD8WRrd[U21GK3R\.M)eC16_h$o"-bI/VC(99dteSH@&UN()Z4!?Xo+`VNE)`V&4D3>837bWhMU^o7Fds2Qml[L#(7H?uuWi5hCA,Z8E6`/nXb,<tl/T)t\.KF3K*;TMh&SK><ANaRad/6_da/qYCd5)kCg\2b/.$S5PZ$C7onZl6a_g]G;C?UYng6r1B.G[?RhMoZ-DCj7B&@)@slt2dfu&]XGrI=<_"@/cu#SnBOHj)9BL5m61TA]0fl9H,F@6bmt$&12Zs8L'9-*M-cc;<nFe9r!'/l;6.GD-B*u,"q?2Qe#MikFep_#n+"q.U`d6!-[bWgq3(SD=;WEQ>EZT^WZZ@e5o\M@hW:d<EK(.n8)[c\gq/KP]aH>(#.mJE?:PkZ(d'=4$gN0UXg12.[jW+ig_=@_/#cI0:g\j1W</"K'[3%0^;Qt\(+i^!5.q/r]gmCMKZ1u63#'YWKpf`lN%#8!iZE24an@bl@u01'jVd4=Yge@UKuTi8DVd'$LZX58V@Ug0FEFCqX\3Iq?GV\Mai@.#j/a(HF$*O$*7G)A4E-"pF2'\XeN:l??_hC=G`[@c@RLb0S':dFLl`BK'*;9.Y.IYIcMa:L'lA@#CAmR?(OJd/]=SH8afoYoE03P4e5LXLC.Dd'8a:X[(U?.#/FDs*NCg8'19ono&c'N1lBq7/KJLi`#Vd"_F^KuaE(1Mg]Vo0cp8r:TrnBo_P#qLN'f.W(/4'a_o+a[7#&;HRY\<Y`GZAq\n8AT\6PlPFGTirOHf[YZ7If1,hs/gsmCJH>:*N:H>[;p(`-i]uKUSLu^%ZV^of:ae\6P/j;9]5$<+.=Wh\:lJ`X+Kjglk>-c)3YTgCusHV$j7D8>qR6SsEiJgE3=ho-8F*-\UtVWHnfEZ+Um3XWd"5NuX/jYeJE'C$TX['X9UNp/PnBBPHqI<B]TGF"J!/cQ/i)XM?bf_k#fRZ]p9m]JQ\m<g#>D$+lMr"_H0_hQ!eq)U2Ko?`V&mnMLMX%(Q?4R]lp9B>E_8%rD/lXU)[BKO7,9BOJXA*V[JVle#6V0\@r[401[5CDuj_OfkX%$;t`l3&X^h\L=%iA#B:16H?kuFjSe+%bORlU[=uInIZ&uTM%>JeQtG^:IuqACdfM/X^^A8Zk`'AH%<k%)L7^hA'lHd`D\dm$0GUrB#U#(4(r1\bt.6%m7du-lA6O$@dC_&@\\QoB4,6\T50(p7A<#.D9"2>a"/*eM3QQ6)T[?0Np5'$8XGoZ?0D`Wc^YG,2#?G,\+UGjK,*NRCqU"85UoUdR<0-B]Q,1Z+0o&n\-FI-qW'<o-5S6~>endstream

-endobj

-% 'R311': class PDFStream 

-311 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2626 >>

-stream

-Gb!Sm>BAOW(4OS'rkk/:XHScK;-/,!fi^8#Y'6=-CSfLNH647BP)tb*$\39)^OFK08<C,nMfR;"AB,UL";3]'mp$IB!<6O&5KNr?T>NUk@Yfdn?U?l8`\@E)?HsWWqV?SZlLi79L;R[__*'mG1%aLP/Xd,<nSeQ]O!!>[E?I)r:8\bmk7GZG50!2Ni[gN0aas?<.l]P9$M+c^J**^0j?C?1?[fT.bUaf(pG0(m6$sHeZ"'Irq2@9>jR7J8EYZo4N]#gs-0+CPH5RZRpWNJdDa_GO]RG>jLGs/7^bX(jfJSFX/:"Nq1(HpcIMeY4BglJr/V-4(2#\mZL7>UTVa[pLQKO@.]MOba$We^Q9\-uf>]NR2H>oHXYn;06KBGj1I-I2&)j,0sX,V)8D%^,;]uMHY$o/Z]TNs,^0_$"iZ=elO^tUY3Z=\-rSJ?%@gK5e$VGenQc@mu>abOPCn(De<lf_IV!B>VW+<#BbH]I[%L"[*hN!3WT.dM&Kq3jr$2EV%ekrC@N.i'<raM=>+bEo'0*0KoAIX1T#/1qeo@O8uk,cECF']N"^V`)t5OYOII3X>Qf$bg3lTesq4[;^3u(8Z.IYUk\6&hb5CFGf2b0l:Z#Wj>-#A3<?nPNO>Zc:cFN,QcT7Y2-g5R;+$GG[#+nQ`AOA#P<WZ4L#L2;WNR'=*%u<lp9o5dO&Q-LR8$cqu4VP:mq_JriAMaW8J*u)-`csD?N$h(9Z7/=YCI5$b,an1Yb9T0Stb\"7]Z&@giX#p>-m67ce_ONDAr'lZ"bKN2NSOHU*JodHk]3OlfGZ:`IuqCP-I<9d;WIG6)VaN`K]SE1M9ESAe?QIrOZ1(0tEjD4dZI13Mu8L\uU3(_Y3m+j$*;=/j/(1Wp5r`1]?U9-JQfMlkb-:UE;">-0X)F!4VH@:1PS+S;]7e6C<LFP8+SD?Im\;.O?Y8*<o02Xr;1+,SN"O^@(a(-0N;lL<g/`0A'Z78Q6i?U`b=7a*!Fq.k1!bqSM>&#:j:"+3?q7F/Q'3gh#*itj<4Vdj6XNt0-a032+Pb$u^9]K,p_Xic%83_%hJp=6`)7a1(W8\Fe:Ho=,ur'/ij]Xo[0$^kO:b.C0tnT9-m:quMfVb(?_6CL#+HLdK2-l89LZ7YQA=<4(FZ'<%m8+'>UTub1ElY:Z:\Wd>?DV$A77`m)sWh,TsjGTFjlHps%C7\o[K\P:?fG'!%9>RsaF>'`8j2"SaiiB>I.lGWPe[A4%Z$":!UpjW>el=/%b?+G@(#="_?uOiDYR#D`/FKDsW[d#-n-V(JWiBE-;N386LIO_YD,<70DXlffe%9cq7$a^Z.uX:k9l"LjEWnbL/?(=FNoPP>^3L5FY5e?Oh;k^H"k,@+6eU]eg%D$L1Xb-td;4%U[J`)pof5.F9:o"YKdDF_[pZ9i?*>VP^K&mVncW/sJp_6-TDX*h;Z6g"H2S>%5Vtl##7;REao[X_/.]S#eT=9"JY#B&@o3*2dcmI6_6XQ5?WYWT=6$5e;7Bdbd.@Sh!&E\2#^;"2CeAkj+Bd8s&p:Sq%XaX/1a+An`/+Y@2sH'4.nCi)VN^ZkIg*5)[SU#kD[N;t*ET#P0kJ-T?ZuK-)'1T%g=IWrDc.LSnlB9IF?,\1<ba,m/]Ls'X1GH;<7IH#9<L/*(,a+-;^ANLQk]R?C3Pl'QJH3U7ME^eO[T+-/h.[8Jo.@6.c\o4U2!(KBOi!*qA(%^IW4`u<47l<7!&Qurlo96Wuon\R`;j+bk(9aC+6[g9+.R.S>W>/O]Y)n$(C&5PenfMWZj69*J5iD6%>uBP90nXc54PYo2C_.`YOKZ?996@ZLQ^-e$td%Kk;6?83183CBV7uj*r8Y0sV(CMq+=H`u&(mPoSIq?B&\.SUBU$:@M94Y>4dAJ#clbE'(no:">C\3<j&*V:"XMaV3Ef1Jf_]%AO7Gb9Tf@:^3ebF,dg"Xu;f1r\m^Ni\n\!C'q'kFuUK#\u*<BOuuDlpLYZ#n?bcOW$VWl3>8E@=_9:N/k_UWeBrN]H.bqXmBuOq[@Pi6q!)R3Do>cf)`PV>>=JM;%3b;uN,$11<L?69OB(?'Y*aR;()SQ,G'65jj%!:?1jZqMbX#qX$ZL%-l`$ne$9IG1Lr>@qf>CJ`0Om=\K(fK@Ols"g)Pbf=cQV.U.&S.5]0m7D\NS%ZIA*WYB"^8RHJeR5Z/L]S7C[s)=6,%4<dWeIRID]B[4.7^guQbkp-M;gMR?LHC@,Mon^5IBg791oaeK5^7p'=6+1SZQ9V^KJ"MY4Z9:!D0QE5eQEMq0Oj*3KLIL56\rqs[o7hWG=8JI5*lSKMULts%TI_%kIIqN`rYeL+N-J"Cb?%b2u?p)Ng"j8g`,J<rmPL@$HJZFtN07UsN]@^<T/dtFiP>Lm2:fNp%C9Y7;qT\9No1^e7b^EU/_B>G'B:dq/GDA[N3cN.9kJZOF'^FsmK*d@WW[0q_;;#Y;)l9:QqsL1X?2%:/]0_j'-9r)GMA<OSPo;(QB:2*b@MNT#_h;V6_lphQ5[WV1l=*T5\'<e($f&YtXi5#q\5H:%>L!"+X%2Y?*'7I/F1XQP%^/SP]X?1eWl^\4T#60fkfV$)$@&/&8F>s*?u#^8J`S_?pBG]u7GV$gN[sVod=22T`7n)~>endstream

-endobj

-% 'R312': class PDFStream 

-312 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2892 >>

-stream

-Gb!;eD/\1M&cNgos'ah=9a[:9;Ueq>PHWU#!r+BlB*F'bl%^"aP-u^J%!QDSs1U9VE_4E:6G"t0,"=n_q_C8)bVRR]Hl1lcTDspLJ0.h]h;<YM"'BEU&%rNT\+$lWlW9_Sa017o6O3a35/fOqpHDjZbr]i-T(p,9p9.i^WkR5$mO`$L=JasQ*e)-%BudbCV(KacVqAj*J,C'_s+]'rH2HLokB$7agT`VWJ)UpFk+#lZde!D<QE><CDR-e!.Y^%tG,'s0<#-ck/.EGe8r2S]9QVlp\G>g2!P9!\7$?b^qZYklfP,bp;t7uhU?5jb9VF:&%q!Ig,9lBgO7GS*&lb;I16n7B<p@iDcQDUVNJlZOp:A=f+fqK9$nc-\(5jAkO7+SDGakWg<Zc6G#0K;Cg'E?4q#sQk1)[tJhsJ)bZ02F%[euH$#Te>Bi[m:MK0N>JQ.?AQ.pNPg8G2NIGHY@b&C/:e+6&-/Kt!R)n0*L)\a[Vp<sdZQ>l^MZpo0^mn0VT@qsh%b4!nHU1*fX6,fXkWnM240dV5j?":EdK/cfC2YDPXbHlK,&95rguM;$&7&1+Ua:g>-h',B%?6c^Aa[%V'hl6ah-^L'89=c(<UR/Y3iW/N+1I[<Nj"_)9.0^@!>R*,&NH-jg4&%TpBNb:X$2mSM_5:'4cr[u"igkmkFG.;8,eER<W:`nU<X3<<K)9E+o4:f;]Lc?HlK9H,_<cUtZ;uM7/22=)o.55sZk)PV[7"plYnC3gXT>=>+GUrF"fb!"$jq6UGT5X]0VHb(@ChYoN,/Fd-q@nus#It:uoDGLFb!Tq/pu0\+%rOFLS"U&SIerR(p;\L<YV&pbY>s_4D9<idb6%6Ja4V\lBFV[siG=)^l"m-'AKgA!_Wgj7WfW?;%^9#XV_UG@@qX,6B3T]inrun7Xm,M;7Gjk5p;j#J#h5`G<Dc;YBI+Qh43!?@^g%@pTcXt08:Zi5?n1UF]S0sN=_6)$e(3L*`MK'FAE$NnoE7"s6NZ#c&q/]S0A<F#_ahVH$\REhFm1rS,.E?V/nn,$1N0Rh:BqO,:`7[-T&Zoq;B[8L*9s3^%K.mb"#u)liB7.7foLFQ,StPgfM+seU7HpDPR,_Thu\P2V_17)pL&"ZnWtL]qusj"=_n@cl[m0;YjQ=OQLT_S`Kg_ZU)4BQE%rH;0Y3sK/19;!#3"2BlH"]NSKWu7mk.W2fogWh,6WB^`,^#m$2h9&I1sYYS4:5ofV:)%X.XHXB4=5sNi=]Z#sQoG+L9#R`u&bH@&"?dKs[!:l"q+'Qm5mX+sZUjU)(e*)F6I^Ne?Tso7Oh3&RiU!&?jiOi,rc(jZp="+Zmj5f.A=^/02#m>dij0?+=pDeWRb>IsiI*S_7l-4/GaL;<Y6u.AL1pQ@>:,_QQn?8MU$0@JrVhdMlAs*YGM1`>\RK$+Vg\^G&#N4LgTLBF3\a2Yk1qPkZ6mT1ll]MhAYG4e>C*DjcG0l1tIAKCL[Vc]`^bI5C4bf+k<WbjETJ8"]g7)Fmog-9L"!'>5/QdpZ9]GjnI?Z63m*c5-/16/i`865S`O76AX583.T@.'l*p'-*=2MQ#+;hGaCoWM,M*Uf'7G91hf=7][$,Qj;*&J_R:`<I,!2%m-0DaN\s%N&!\qdd%o5(oKK#aH@R?9\2Jaf"&rXXWU#el?u,sXaJs%hMKc3Kpd):Udd"I".!C#2a4Eg39oc6Vop?U%52qOmNJIDYZmM'G7dU.G9F1YnJh4rEmbs>M4E*),-6kM\[IA6M[gpF1Eq"HL;R(gcV*RdH.fXgAR"';-=[99a1*1D)jdV__DGN3Lp+'(^cXaIbYd!dI+2CG<Mlnk(YJ2\A7<f97k)T>S61?J9tG(UWakDXhNOm"^EYTk.RV=D,Zl\P``1`7nl+<b'1^O>C]n>TXQ<2>.'1@05Ib<TenGS?\ZQBc[`N?DK$kq]lc&S):WOYCHr^G79@]Ym2"fN`Pri]!-4u>\etkNIR0Ds@-4bN;oZ!Uq@gWPITa>jU/I?3Q8VG5ubu'<`fZoH\l5RmG)RAusL:=0H&,KUUZ*PlI.egNa+7X=LjPkAQ0g_t:dN*UXG_0N%_AX`=>+pXq_JN^8$_F%gr)qr0a7EX/(m'$LDr!Htdur]r&XJ)#53EZ9j3sL/,GQ)]dOG1#:;O*+PF6#Q+uRj&26mA81Ku!8S)YI')LXRQ;2$D"Z(ZIs@#ai."/NnY>>0l,&<%DY\"*\&n>b6'8%4]Tp08d9mX9lHjn46]C9:UOU`r0ko)q11rl\Yb9Kfn^mbeU$dp,`2)/Pq[>WeS#H8&VI*VN>kRj7G%:G8Sb7:O89@sPXHEbb??g0sG#pXKfXNuQH@Fh&9F9Vm^sc\3ZO2r"WWQ)]MKhGdmjWYdS/GF!:^2+o6>#bFX,QT'kG6&sYX)i]Yr<QB9"O7']R:^?s7IfUF4%OSN$(mk2SQ#4jq_GlLaN,<do(PIX^k6";CN*qfF0_T?;e:odinK<Z.])+H*;-,Id2]RPj67C6Bj9f=ToV]Ma\@M2lQU>Z9RWV#Wh*1e@a9IcAH*%aR+[sr;YqD?Sk/`Z-ipN<>_>g&Y*[*ZrK\;?Haca[%p4"R5B39=3)u*SRci)I&58"=T%*8V4H;?fC2s_OmAO]bB\RhCr`oQ.\S^38k#52PYEhjA6PJQbHVK5n&TiH]3I8j)8ESsa2(RfGo_j;nBDSc(eA86Ypi6GAPZ'?TtCTU3@oD?b_8a2PYfO3brD>B\31`.*S*6L*N?*#dTBR"S/PG69#BIqniVUYJ^beYc*jI6&[)XU`NTUj"kUFUPIUTIAa(`s4!)-qU*g"'MHG`"/?s'(og<IC/l0Z\@@1f9st,ZO#7bK4)B&KOS0-PtL(8q_T7U8PRXB.Q0a";W&nHrsZ.i^,K[orJ)m/r?j-~>endstream

-endobj

-% 'R313': class PDFStream 

-313 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3636 >>

-stream

-GauHN=]=*H&q5%Xs$MKI(@O.JV3:\">7A5X^h07[1D.eo<4Akn7RpZ\K@sVHR8l:?-P?W"LM9_UQ!%ICH'Egl'E1o*s#M:`h3&b*TS-KZ\KTH\CpH/Hn!C4brK.%m-LTO)ZAb1R3gJlmm*km#0f']T*-1fM($nO#6Si49FiZ<\PT$b7qkM,uiLib@rf+,&*i3esniL"R;k!_Rrqhh-pnR9%N(sgrXiDS=a%UikBQuos_j[m!Eb]#VkHiAaMbn$DXqf9!K,ed<^:37((PUq/YAa3$(LE6!.+lDCQ03MYI?4,&f;J4oZ!`3h</]o]?bZr)D;0fOJEKkKG0oQ*fF,l)f]<d=>W`Mr@r^h:"n@2H0*2`_nurE\rUXJi]J)pfmh6bR,i4790Qc?rF3,ARDf=KoNTZ4Qn:Y&':rGI2/m7"ooNI>8S8Zk8,`Nui2Hfo=(Y65qY!nh>\+[==lumCH48Fqj;7V]nSVncI`G:T0LrG6/jmdh[iL&@u($>%R>:'?/Wn,s-A>!-:24.Z5Oe@J_dCE\kW[O><;&9[=S';D_ZmqgDHtpkGV^AITeWjRe1t_:/-g`Yfno[OBcW!/cKa7.)AWSU]]g8ph6(&GW4QW9G&P:]Wmkj^4QlL2If"1quV.(IUU2L:jfHFnHhBn*^SgI"<A@K9"SD8,F,u;Wg[.@S/NQ!Kb!0<jBA2N/];32G4P<@lQLnE9r*/et)h\2pjOT]BheGrqf=2A[6H7Fb2+W$cbrcrNh\@)KdLi4h&+r2=mn$Ye+$Qdfl")3pl0p/V<Q)_.i8B=gI-U@eT_A?H#aaK>0?pq-tM&o3QVlHhY5u)WQl35&tp`mt]1M$ZpqT1Om4cqWa*sbaq&M0G<H-4%2cRfj1<a/]TJ[=*J'W2(I>i,[J@\!MZP'-,nKNmq\-2ct%0h!gW"@AoI239O9;Eb/B-HP>MS`^@<\Bm,XEe@g"5oTQN6[hP!5UQZp.c7dC7&!tuh5-=P/X:bk8[a6.5WVT[[G^KH)E#83ALFeU`$'5T9E^@mL6-1Y()GBlE;hoBHC2IE@o):Z-@\a"[`IYo20AOA3`O3oJ\E"C0cYg/ZkkOYJ_=T7=!>=,rC*mO'LR=+l,Ac%.>P322!n#u"$_l1M$a`3q%1%BOb[KrC:S(1OD;6G2LGp\Zq9`E@DRc245'U;=kdC^b.C3H*6Ri2P54t+XU+YSA2bWDEV(:,)U9)P@1RA>Gm_V1Ar\!BPR>s&_Q<!NN1qgE(KCFRdudFfc3\#9!:=bWqZ145jS1l[!WXc#^l^]9iiifa=6tO(M"AI,Mr"=`O4/I>(XV^$Ud/a7.9iJ^iZNb[:*ZKZQ%qYi.*IVZn[dkfM_W2*S];P!mdAZ*ZHV-/0+kAXWuc7P);#\5Rq+qk/],dFSm#8I91Wq$Xat2;hb4"W7,c236eh/c"=A7'-@%+C%FZ-&*0r@:lc=:D$B<sM'Sbj^1A4dpZ39Vp^;@]S<bC>\8/aH4e6OJfCCc/5ZLUm5]5o)+j@$G9+9F8k_C-X^6'`,oSmX0BP!KB3T*eF$n`,__CI!'VK00:@e6#X=gPnTulLrR@.+?O?GjI`Nb6pr);7:DY[nu"nS=G++.O<GB\!5*3;dLN&W51##\mQSlrsXMtFH/r\<Lm*s0h\]gfA>%8:89gOfh%n!7&otA-_.t'QFlC.JX9g`gd%J_4Ni:W7YfHKbt[50)H5%PNo^6]%rY2Om[0'7LellsMD6>l)2[=GX%k!E/3(iiP2UHR;1lVAeR[K)Al:hPHmrg6>Jk-XfWo1+W\:7D>>a^')'b%'rCP]U"k6KWEi:7t#9R?qP](:fm6+1Ha=qM]S/KR<-'ui2hUFM:D[NRXcjk'6lT'm3-afhiU5kq7S',RKQ=KRqYh?ZX5\Ht%^dYo55OYkln3@D?T]J-dj3k3&c3EDhS(!_ol2qHR#=fA:/(De1I#uH0bf;9%FM9G4hN0nWbEgRtG^)VONXegMB;:&NS_4;D7LfT@@ieN*:STU)\:FI>D!Rc7BqW>Z5Zh!iFVLpiYUGi`#K>gqA@jGN7*&\)V^ArWD%g&9'+X[N7^59L2<^;rmfX&2F&]C,2kU(.MKj6cg29%uZ)[k:c%f"jm,Qb:\_K!neb8R94Q>VYqiCV44q"fBGu$:!RpWnKhGCb2a8Cqt?OAMaj*Z:NFr[Jop9TtZe,+R_o9R80i9S.tHK[J@g1;=/i1UF[nM]Eja1,ln%cgDi+\pAX^UtLe*S@.^?(INu_e(8VVIAanL8Aoljt5Nemt.LuPOo#tX^pJ%W71R@'(X\Rs"uRsFA,@+e[R83!EZbbW?DYYQQ@En"cF7>Vhffq]V#Fmi6cps!Q6)+LP>Q*Nh)cH;*:5j>Ad1hdGOSI@(sr<o62Sfg+7b=c%$\jEpr5J3Aa"bBX_qda3.<Tin-oujgFl(mi)Un@`e5^6$6p#Orr!@(UMT:a.GkaKX"l3aY+0di&"TRAJW##Bo!\gpuI$SK0(aqN!1T->dOq1pZVo?2+9$_mIAs%L#I_L-c+/sk!'=5Bh?/4j`5WeE5)6s6G>&_e^#VU;n.Up"+S[]&WMbh:nBA[FL3;24a05OT>:a2&)[ghNQ#TBr?NT+O\n/7e'nWE3;n-u<aq`JP#9BlW<N^pGes>L\m%sVZYKU#ldZaG(<%eBi0?+5#X>e*AD@Xh-"+To?<rPm=&?'d`FAA=hOP[XNf)]-Bpe[N^=\)phcG(]h8eh2re-HT"Pa2Xg[;68*A-,go,"n]]@Vt6rn$,<pIL0'If#4R(ASE1p^T3[ph*(]?h$'Rd()79<>)6=Q4-^mrQ`^'aaVP=bm1(9p(ZW4%f+u+/BZIOgQ'6^?'F9!_X(j,/u-.C17"*Nlq?jLLI!r,7@rX'k)3ij;Qi%-&c&.P-r6re2-[-IkpP"MjQB;(l6RjZSLNG]'?sRSI(!51D=O85f0.IpKBt2U:`H*kcW9AC<81arBm?:"[RHk8`h4aD)tZOl>lkm/kHgZZq>s:O9/S:1rEKDD:nP?NfA]_/0*Sc!k^,P6H;A?4"&>ltKk\8'e(!B[9;p0r\9FY'@j".qksJcY0;\!UGG$0j50L:HZ68n1Ps/uA3pO%,U?_>XbIW!KW/!duqm"`,-02V-SElGo3o\kfDY[_Z].E:5V-jNCqlQ45%I<E\a`FfTe4r0\X@5Lc>->2LM`%,KeP](*/SiaK=Nr/X3SfgA4^2P:_cjG>HnO#R1RC2NmG.PHKM0ijKU]"tT!ZRG<jbE)lt%cilKbf7H^`Sg<HB<(FK4lFa(d'XLhRP"Sujg0BNa*U<cuqj[LptHF??s\(h$^X#N9h4N2q96().A3m,gqu/Ic8s6@J:->`1sL]bJu5O>#0A>HF1>N>T.FUXt%51gd=uC9c>9RauiFdVE4ro"'-+nf8>[F&lO(.LRZH=K@aB\h:f;pPb]R<7OW-/L6:_C:74tV<]l)LeFoPKdgN6RTdpXM5Ks;\F^[VK"S8CNI6M7])H:&Rl.)AP,58Y^8$[PD:PI--5GW?:;7%![@u2m+^:"M7m-Wkcc5%O/i5.qb(XXpcCILMmlg_g9t:r)eogp$?S*R96ah#b=!AYCWjp[<#ZRk(foXhFQnOnf#e&aJ[A*fECrgC3b88Dm`&_jQhsga6E[;/Xop1HIIeA399;X`~>endstream

-endobj

-% 'R314': class PDFStream 

-314 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 4060 >>

-stream

-Gb!;(a`?/pp?jF1"3OVB,ps>M[?or0nflg;bG/1^bXE=+$$A&ddO*Y14't3s=@a"Y5[!A#[O\6Ep'&56n/Mh(jL7SX)^G^&^-]$K/7dGtl3:CoiM*AKkhXe\BA_npMkbVOZ>F+>&Xp_LKha0RB$<uiZ9<=(r#+I.<J'AQ@cjAb"Bh$V^k=pCS/WN*2!OIVNK,Re-+`pd?2[11s%`TA'-Fuig<=B"aqaPJk,U9S=XLPpQL#/n%N$m,)N2/<>cO)dTK-VBf3sTn[cM#YYOR-'&l6]B&Y34c.?GjSmF_S<B>.39Ebt(gfX*IEYkJ/-mKhZf([p2kfIMfd4muc^Xo&8#]Zmd*Nf,*m*K#ZS_SS@$L.G)d*_MU-T[Df"o`!n(UduOp.8<%scoi\?Gj&`Ii:WK6>^W,$"!:mFBgI)$qXB;do1)gCp%cS&E':Kfdphu<PQ@2J/6T@GOpBgfru6YOe)/F+q7pV!$\Z4+$#HN8j)gMn&*is$L-9T)jlPOg1bCR,?Q\J0`<Eh:17\%2qB`_0@U)T1=KL2nAo(6[h+;$;J5XkUaEZt7e#/Wl2_8`b9`6e9kG4h8EFCEO]%8ThmRPadI:=*Ar3@Bo]:c?c/u)qr@s!iGT]`*Z3/j<TP2J#T[3tUNOuE.G2#3=@T#%Tj;ZHae*gEB+V,U+i)He\Md3T3HjNn*`n96a+!F(-#0^-"u`W7l(#KE3t(iHQM/$+CE+_uW'0k%!#)BaKFZ0IH:L/#;'0K.]t)E[7c;"CGo+K7750n;S\)n;.8.hMN<-1o7`P3TE@E5NrR,Zo[oZ:[E^IdEBG:A)&3NPn*?8HG$J%GG\/)AKI]JsOG`:BnuN$/2&[C<d/YVZqa]'nIMG>#A*5$q=Y:&$ga++?c/".L=B]YY?Q86c,Oh!uePAeR6e?QGUVWD<ePF'tThAK+T%7_`Z5\D/(LQ,b1/9UJVsBUDFN!7;kRTiK+H6>agJMOMhJsP=G,XN53/SUc'II,d,LiW!HLhY![5hXN%t1.RW!Z)[3<7-Uh6/BM7cQ`"7,%Dp-)thX84Ap6`iJT[@`_^U_[0X?KcZ"I-U#!<H.,;.uc8<a\AUJEQh*1:L,:66jIU!\4lg4PnD.e>F$iLK?S8%>-:&SFmF9\=S:$q65I]?5J+%DQ&K&H3E0'K%DF,(kS1e/ZF9G%]]oB6;h0LbP75(173K68u)+iNP#pX*(A!\!Kh(W,hAo/p:2C?`qcno$]%J$jdcft9B8L@8,N(AH;u<YpM(3C.p^+Hd/^C#\=OuZ:p,X$%//L)=n.!*]LH_eqXlm+/A9&(A(qZT5lot1;6NQ.kq[ODXi@p'lN7314>2omHbK_P51V1+S(Ye&3SFp1Tt0#:!.\dl.AY#lW7d&AO4S`H12iRt$7V,>C:5>=lbad@@t#,&OsaHm#Td.GQVQ//QMb?3)5cTB(5qn*&ZI"AF*;iEY/^8(0Y^5AmghO5N#Ch!LQRYSV*PmV>k<gYZueC5hKiMZ2=A*sdr9E34l52Q.):Yq(aV-nrA)OD!aU9McQAe9U*pK1?&0*Tp7Rm+7t-"%5M`+$#*g-d&o'-%,^rmh3%@N?&jg\s"5nmK0pVi>gT2ft<K%CZ+hPY$3'Tl$Q:TfKl@Ss_bt92A.n0\;$V]Z:<7QR+oh-"r_,h?/]_%&ZC^ZF((iB15]^p4B.j^#"U@cn7+!Wub67;i`VO-*%(2if%>f*ounJF^=4=6?9X29,bjp-?eF2'D*Nsj;6\@_kQ3@5pr0R$W1Zl]ER*_,B4Po5i(A8)l8*[*.f4BaIp!j)$Ns3M+nfq"h/>kZCGg@qNVfX>dVE>@q&%i1!q>bEWJD;(ftL:^.oCoV^la7"jb-qg9IdV#s(ITO1^DmX#k[%?*W5K$_XN.pp]SrQOsn/aljN[M!U,bm58MbVN:%\qNXQ:RH'`[8h"_ru4Y`V@uQ/;47`jRX6ps7E[?M3c?&B_eNoG8":]Xgr:"4Pj<8=IPfK_J&-r[:9P+\69oZo(;k'alh:)B#/;$f_/QWY9/1jEe,su/1fP[dFZpWhNnQkQHKj<)_JdQphSTR3J;SqO"A36)0=Q;]br+2hdYSi$c@"tf$#l;nPh@,ZY?\DB6$dj5`6Ic?<,rWU*.djRk2POc3VaX+hf+XN'M`4jp3];&..qZ$4VQ(e1>A,8uj1;P]TrKA="o`9mi>!U8T$bF?>eLjc#F)k2HER6gi?,fs,qWY2Lqc=n?jF5k;nS&6dnr"d1MILX8l((ubpRlPVM!Ruh%`pf%``RS3Hj*:le3RX/9&L`4o#FXnT*_ITJd1IFiAEqH>TLJtW`+PUkR)B]&654V^qheqI&n/GBF;*^.<42S\4O(^ADr.KkLfQ"R-!,G7X,/;'t/V]l2V8]:dDm=1+cR81?Y4rO<VYj9^,b)CN;+e<!JkafDV%TgT%;TZ2S\MQkYH*t:BXN;nO,iZ5LJVbi7NFmnak_'YCedV3=rm0P^,_R9/dqPmT@nO;^m#1g>rm+.LBpChfq_Un1+j9K;&s7IaGl[ZS:5sdb%.u"g/[:rQ7L]6JY.dj!qDIpFfu4sQd2-9dXAHV$usAWO]6s'W+G$"fp53i,EnoZMAfof6^+1ZV:NOB/RrrW;2heMdc/b%C2g1qE_P5$q,U-.UTBTb3&QO2S8+U"diiAuqhSaH23J`Q-;fEE@/amI)pMlX94ol<J]4$AO`4k8CA8Wo"'mk5LGe!829%TdKk*f-lUg-423o::KksAElUg0523o::KksAUlUg0523o::KhO_mp#M+qG)K-lIZGZaO"V7m^D/G<[]C%O3:KVAOgnk05^sE6o`;g#(If[DBQ-g^VBp`8Z>P5`\44s.VU/&,!1H57EK-j;9qe%7#rI>cH(rQc428/""%/7BUK]#0&ZUr"3&PBH:5rlB/)W$sL,`j\d[bc6;lhcF,rA>6$Ji)MdhKr\,rA>6$Ji)MdhLN&IUh.I3o-HePE%[V+*G//PdA[!K%_T/@@JK`!c(unN:CLZV?X`LS<b('r#(d!5qapiKn#%GUG=^j"m2&GD2e?gNn(K]4^@^91mUo&p>us5\828pLM?Aao<')#L(i>3$u7SrUs@0";X`&tIiFnE>Ea/3O#DFfGP!'G\DanYm;!]qIUl8*R??l`T[Sg[n@i.lIU8aRG_1gJc7-mUqoNhRO,dlp@uo#8cW%u2E@uH4\O"jY2Ur09>2bHj)eF<bMn[s)s&V"H)r2N/P/U(5F62._^sTPIT2W]oX6p8!W+i\7IEj$GFH46ZCRs2A=TC*sl'f&QD0+^#Zof*6?""F:"a#9KqL)2E]SrZJPP*8dY0?,$&m@Yl?]_*qT#D6')f%/M>?@DtDm&B^7.(-SI1r_,qL4cDh]q,?*:M9L$r;1[-:T<:`no^ffG3Tsa5;&"%JD4&pphK230+F+ki,ZCCiL$BYU@+oFD]>TWqMR-_Ulh]0V]R=qX>:P&["\iofYK_NS-NS)e%9Sdd=354ebdkh+$L4b.n&laGqfbll?fm:#[s.A37*hD6l<oUDVnJ(gS4h?@9>5$':[qO5O3cO(]Wo3%WFCo1N1"4W&lgF),q#O_$'.KI0751FGorHM;\MIh0(rGItJ3F"SanojY>T`)2EjS>:J!6W5ZH&90D"G.ND5BTi#Gj;@atKZ0WnaT9KRq8?IP#g)8%/XsU2NubGJP[o"'B[W:[#A<bV?"gO,F]Kkm8lfE,b*H1*\#VR[8Q*tA.oK+AX(R7h2qC0(6)&A3T,1_IKfrH@h"r8@,mATF8\=h3ZP*;dY,:VF;2f3`#)dA`do)$5jfX9\-.UA",Ue8r4Ap,apG48Y?819NTX/"jgGl'XhIO`oCl>>BL@s^]]`6A+:Y)+uDKb+oB1kAr7KqMcIL;gFmL;'7Ghkg*oE$*$?5Vm`5!'P#*7@Y$FKBfUabD?*PcRD<\a>YtNp`W$LA]t73_IZI^88&bhL11(LfU#h9(AHcrKfQNLm%S:W<$\adX^iB6bSqbCU-:B>N@F2f@1N`_78heZY<Q8k@;FO1A?Tn#QJ[lQq/1f#ueU7s!3.OW8688fc=&\]BqZR6`(2Y<UmrAZp;s0r>u>%CQn~>endstream

-endobj

-% 'R315': class PDFStream 

-315 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2874 >>

-stream

-Gb!SnD0+Gi')nJjr.c;BEc,DgI$#hbT:BuOb?Wi0[;qg5EuuM;P#.>F6]b2f^]&BWOs3?.d#N16AF):a!!8)7B6TtRd"W]mg%o=m"2(/?GHYhe*LJFop+-_dDrA[ho4K0;[p;`NH/LZJ5Jh&:TA+<r=.`Xpd']DVCn<l/<UG)WhjTKo0T3cU/KDe'Bh.&!d?[/uPqCtCG$i&O0:;]4DuZm;r_WRalb53i4get0'Csf,E9*!+PE%p%d.4*K&SZ&Ur)+l>'!Nh8aDrlB/j^`?%Ej#0CemUT(3/\8Xmp*;)_-3UYH?94S::;lLPX.t5U`"4P(h:!6G=!;%tQ1N<uaVko5)YqR.G^CGljHMra>MlVND-d/n>#$s%m["/,d"b3/uR6c@UD))3+nV$ULXPe'eO]/Mue?%O#2;J6.'0'QG&]Qm]FIRK[uQ,*ZlgQQe.>eLOdAbE=F[&Q=Q;OGfu8$9,ufE"04<=^I\"E&E/NijpYVf,WtXkUIB'#JO=0!7.<q?j0.<-tDq4b\H\Ip%J&3&BHg`P&_WPDY+7./NJ[1En"G-'d8?7"IVqb1?#HH=h%lXf4kRO8rpaQ%DI2N<gL>8_+]a5Wb,JI(!=(p<A3>!+)g&M\Ug.>*)KkI[&dhM16]edLj5d@O0kSaR/m>]n>Q1CGF[\Xr<N,%5RW</B-L6L9@A;4P>IW&U6^%Y[M5[H6V!(Q=Unsnnf7CmfD]e.*`STYhk-EqG1OtUJmREXl*tGiV6\$@;cDTJQ?>#)T9HZ'Ot`?X>/H#%;\HI'mc_IJHe\;&A0faZLga8eg[MRB/cloE"J)ou*,9gddA)R;kZMTe7g+iqe>NJ&n\`fLBilY(5oi&\E3?W!k:qQ!UD`GI_T4]>.Q9IWksDpP+O($,<ba'V!W$$KG:`KXYU$emr7+m^;[A*`N95hg."WY<Ud:,Sk#6-\pQm5b@XM6$_L_G7qO?%,^DR8NEfh'A:etb0TbJC](aql4\pU$,849/>bZ2g=4_B@h[8luY-LTTn1gQCB!tD/+as+sU!/$@U,2OFFD$u\\!J;i<8:TATmPj.23r"Tno6@?FBr'dT5o1_DH"D35=X;QZR$n;lF54d`CV`9oaoh^MfZqg:jkmFDM`#mr_!OkBdY4k/"gs,X_a856GV7@(aquZ3oII?4\&Q4#cd\t,eRSKrB=6tCcoD2[Y)A46J\5*>r)"6s%f2B1"lUi7_fn_RL`ejICMktI=RcA$PM:tlo8bCV(HHFc64BjS$H$RIF\Rl"8q1=7NVj%#[eaf9#jMn_HReLbPpBqn_]d$Q-kaV,&Vj>56,]&RY7o5DBDO8^-O321dE*c9`#V#ipjG^`3D*sU1#D+-'k@.(RPJ6S@eSKje%!`Nqhdb`iRCDU)*O["3eORoI6]UJ@3%MW[`0=si,fM0Zcr7>h:Bq*koOaBR-[8T)MMnJ2#]+$U:S^rT52o3!\A^(HC_go35pP/(QleJE)Yp_4e'9^a9u5^H%IfZ"-N>rOHQ%f"=ochH("Ji9O-Ae]:3).0WRf*1XZo(A<\P1KZk3W6UNP5&sd16<HG]:HP6i<<scL]R;Y.g>O^ZCU%4'H-[\j)o,9*UcHM0S"H=bb:'+[AMgEWYZG[pkTdYhX/Id3Xc+4"tCnIdRo)MHgC('l_M9P4?Ci7BNQKN(n^eW];PA/TLUs"^N236YH6>sVXLZ?GJ[EZAAIX:uE!>fOYaV7=NNt]Ts@W6b9E]h,,=Tirh]`^-]gF#D%?D,7JdPG_OFhgr0?,$E'>.D9F""0qp<`VYhs!R;+EcY67**qb:#[q=S`>08[OeQX?>]^mtqFR`meqN87o^L6\0h"9jek0H<(Za;+Z!3OPc`E%Mh(?+o:H`1:7uI,%,L+O9C6(H*4_BrPDtNjYOMR\DSq#._D]_TS1cUQ5*4:Sd%mRh"oho@N6or&!:!VT"3UY65:V4)%Lq9iq?3a3,EUuB8e\&0kVm5[ho8'>,bbU3OdBUI1/s=dUAWS-:lY/"3EatdP;H\Qe>Qpkq)&:[OCCsU6#J58*2ug8C0'.XdR-r:n)S2q8:fJU9ghtD!;$s4;7)%qn#2.J!215aEfgUfHA1c&VArdqT#%qC>7ja`d_kH1OE+8e!IQ0F.Ih"rW!ut]]YBdC+Q^J,Ge/5kpW.0DUSV?[@/(t=:Vdb4h*t._ug0T2(KHN5c[DI2jLddF/AcWT&PX.T.*eDtFN^$SPES,>fORX/T;d"h#WDCNQbOl?rF++)1MC9Q[8q@pk:+UCBM5*m0]4(eU7VS70S;<,#Z-K(4Q;gprLCDQpK%ZpHfkBk>`q.-d/FSX'OEMX[3r-F=^1#Dmgm;cgPt3_d2r*ps"0Val0T=PKJ8CD/!45JGmt9tBeT]DmXsA>pJ'c?>4dW@cA=)7JDh3<iWViOHKq#e#V@7Nq8ku..]D?MQ@iTQPJIYRWOZ^E^&52'`HY^+T/=pXfT$q/T;_6q*rOD3NG45M;6(b[MgP5fZr&EV9Y;240bdOas=Ni]Z]/T2#`9a'/Z"%Pr,$gAqP-FaW#0'6Q_]u;<)>2%2A5/,e]+8k[>H)Xf,Eh'HeXY%[Uq,87%JK+Pg?Q-u&4nM)WZIq,pG*?\fssC;MMf!KN:hE.@StJ\&?%hS?N\Q6Y_:&MDVi=IMR`;m+/!f0Q/$%#]VR+o,o8T>/s9%K<%USR9asn!\2b9o)>3d4jf%t1PL%+E9.rbjKZ"8F@qjA[j16,@^+lNd1?S4(NG=^(HE_C#@($FMQ-1$$h7YB6<I3[g3N`$/i'cNNkWP/6U\'koO^dPd.3O=BeCgb,*UVIaUD^W`IZdr_8\%TEK^)[<A[ru5L)$'+c@CUQJq[c9KpU!N5g\s2\7mPt)/3]9Pub:A8T_i"i;'_Z!gRWA$N~>endstream

-endobj

-% 'R316': class PDFStream 

-316 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2964 >>

-stream

-Gb!;fD/\1M&cNgos'ah=<=5-+8\G>l#PV-R)=@*EB3h]0h%)#V-#H!:1:s=rh64S]?'6BXfqP#OE*u%pq6D["bWPL@XF1rDO)I7X']?09G^Jh1+2E71rm2V$r#bF;q<M+Sm&sb[4rQa!G`r`Re%4tbV-dO"-A0YU7^.=>$:jdTM'h)$4G%hc^@1#t*1pi5GU&Yt@"7eUHN*CCbWio@cZ]/WmI-t<bKksER0:D`bGds[BJkc<e-kRo3+Q307*K.C.Lj-!)69ljJ)Btcn,F"IB74/CXtNNG+=&L;^4n>O>_q1l*=qPh%G+&tBtQt0fA>;-3qHtBj4hHtLP+Q1Fp,8rGeobR-H'QRGWI9.&&8]=1/JAPM$H7!*H.A.n=<0-QA^Gf7)&!$g0j&;C#!U?EV=0`2acIAq]3?49#b%k(kb1JjBRiKEs5gS7D^51)\I'$BpS7Qj*be.DPT;9nZnBoKDXMEZ?ZdM(?Gmq+<*dB0#aj;GahA4=#o>W%Ygf"Ee,=_`&Ior<(8*N[E*Us?`u1FbHaN(DC?KZje-n)""!?%)lA<=%'1t#d/6OA@A,\6B#@#G2j:GQ.TU?^:,Vq!m0t[cN`S(;<![>b8Pn>D#`7LP9aW6!iZeq<05eT=-4uXLcaTFf)@BYU@n(SJ5o0U0$H[R05V8HJ=RZbPSXpC]p5VN"T1\+/:Q1:CXh!<KL9KuP/!:$W+Xnm\fOWSsLdoju2]@1>>IJo6*-bm.-G*C^Wr\D];T**1aI(7A<$Y0+9cRT[.>`:1G??YI0N&f@Nn7ba=(GK-7;,44?d^(/#0qX4J4&X)$c7t>hTbe4=P\$SdAT#BXt8"1J\`O@bG"@\ruGP`(%l5]d'f`uZ$_k/TjZ=d05*M"m)L1&)L3KdjMGrB2m^Y?FI(G%FF#UF64B^5+]HC";he(2a1LbW0cllsX0W+B7^fK0rnrdm]g%q;Q-lm4]9RH6N]E9rRrG1)-t.k3[hM`MBYEks3D58Rb)9P:U\d!Hs"nQ_-Y"UC\d7#DU<KJuDX_7^/4[P0&::Za>&V0h5pR4nbr1.jhnlX3dTfIC,1WO4/=RQC'#cW$>[ghkZUX`%,8SS;n6>QL$N64PCDE1,Bo]_qJh58s2Cp:,%L6OA<9.mTCstt"`.G6Qpf;h06,^j<%OfUL:`J"DN(m]:;D%os7;,OJI^<!u"RSF'RTjL5"o^OAR=g_84%Y<:"1"]6_s-*I9";"]B:e!Po0U17:erFJ@n+1#*lPi^W-V<5Q;3)P2@$OLFQe`?14bSZKP,'HGJo7)!0r6`74OS8Urub)G"TYkQT*@0jMsYk-hR[23pu>egP3W11GO!trUTpQ<t`Ahi_=$0II%D5;urg,U)rr^q^W!.4VRSaV\DbfKe/+[=<LbMH)>[i?YM!b7SSG:Ko-B7I3Y,eM+-atF]coE>OhW/B6'SM<PnRC/.CrnpM\3pl_X;G9N?m-LI$@QL+2#on(hD@+BPIqW.M(O:6(XYS5Suu2ct"[?C#oH/GdFgr'r+(;]cNag!,0Lg,fde_XeR]<2$FP"dAeS_tnl=*QOe`@e\9EGq^.sVpj[f)kag-2=oI9QH[Vfg(gs__0]UrK^GjUrEcgH/L&YhWStc[]@?F9*XkAR0Ym!<qYIufGqeg&E7DC.^&1M2R]7bA]Pq6)@$OE6!l7M]cAGkh)^?G%JJWeYMJ,u%5aa3J<V<OSJDdEDE=nL[>.Bs!KW=(&I]J?:H*[^T\Y`A+;lR:gQo/SA>>]GmQ]MtY#G6:k(T3&&Lh8;5<?(7(9a]/!Whr>@B<<`^Y1UlOG^8(X%CF:LmN`[1#%nlC:MIiQa#5:u7mFbH2"_$dCSB=-S`jL2G=R-Xg[H@A^A8?SBF88$Dm^=t'UO[&4FpVmPI;jjhm`JT#NImV546!E99gc;91=(]I<MeO_njP9Sh\]P'j)2k<DA/1,ad/(A:Y>t!.$\+7+lm!X9OLb>M2@"Lu3JjLk==TXG=GjLgop!jHh*Ir4rBm9QWd5)OufM(Q/>`$8WQ?(g)6ciM`3&R$,;tmX)iqiVa_=MnV-<bj^KSIQ&db7jj\DZa4rK7Dfh+WZgQQ>,jumG!o6:bA;jR/PVX/"m%2V<8EtN"jQRCPR:4-(XMO#O+K#/mBVH0R)dW/EGp<YeRf1Xc#f;r%?e3/&A#3+KY+t*<2`)l;)K.qru6$]jI![kdlZ/60;VC6P*_W6I&ln[_ZjXUhU$(-NXT#m1dZbEPAlLn6n&D=Lt7g^bInH7_P2iMEd'?>0o*C%_2T,].JodFE/GrNVC];R/2$(I0Wn(;8j(]^`Xp(Gc.H@)P>OtR,WY3uF:595r:ho??bZtPLGn1=?ghic=^+fR!^a&7F*?=AW]Ebl[:sK\X]rAZ^-,n9b9^+si0mgYlIK)QbW/<f4Ou#d'dBN=%4f(p7s^Q/m`OQ$/ET#!Qp2&[hbo4,Z&f%]DFpO<<]o=:[eK+AP>7u;6'qB,i7ld.(Ukb,a$nP)M!9.bg7t!,VGrC#h^VH*V@<8M#)o@1.ciuc,Y=+*Bhp.UDC>H4Dj<'V"CDH_:J9mJcGN]dpbAk^[Q6$;`EZfF:-"L@g-r*i$aK!%csC*@02\')]"kA&QqL[d[TQ'XV'e&ics>o"$OQ6FMW]Xp@DfLL<%o2rGl&9ur+>h,3-2G#R@m]>WT]GWNq11t`2`KDoWE%./Wm/P=t,N61m-6#%-`OC$^?unaK(%^X(0-5[F3;5L"PU;EE$5I3*Wr.&G*R1Qj;5VaKbp$Vj#F^-0"7.l/;.IE@cNIX,;Rf@\@LTCFeCCn/%u/D5sh\gR)M)802)"doo7cVuBgtI`:11@m*.NL%Z4n6u"B&0Z4TAcUgRTmSo9OZ)=Q!dg)\.-@#>N%k4A^5u$=dIPoo9s3bk'PG0;H5-6!&9O5&lWBIo!=p$WV7a,Q>6YgR=;RlNQ`T%K+K<,TIJ3GD3%=4E.]2$C4ldOtq]l\V>eF<=b+2ZsI*<~>endstream

-endobj

-% 'R317': class PDFStream 

-317 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2526 >>

-stream

-Gb!;eD/\/e&H6"/s5C18F#Sl^AGIP+0Ha$:Zrke[[>/0mL4PY(S#ms9'P5nnot-u*/B;[LQPLMQ,W6s2a60&+H]E->K0PCplULq>NT'+X#94Q";fFk]_>#<]NupU_@"4a,p7;Mlb6C+WAn0VI1T)4&K21$<Ha%nq#\S:[Ka)AGn%gsba'j31kGK%"X@Gp,m#R`(bNV0@nN.S;A!_[TIm9/>hV>SPi-Io;.;.LM:!JL:Ygu^@3F'LR<\aZAFW&uBSu\\i#i14l9+n'19U3WDrZ$;#:ZX.Vgdi0X+B-A@5\Q8L6DR)rlo=JoJ0a2q/->\sLM:?U/H@.mkls!sQXk;9%Y/L/JWBJ$hJfs;0jo6o_3I^AoG--gUSXS@2Qf:2dd56Fb:gTCH2K&pYCd%&HdHD3Dhnm`_!CZ]6QaLF&4W;3YUcu?^&T#sTnl*Q$Fejj3Z<Vdf!W6?>5/:;4Np3^].4:5-t%jO(a'Ag8a_ft=@f#Il^#`%Gi?fhaH./3e`!Qseq--Q:qdGqnZ>>^VL=T8_*,!)jlZTbR`"$,fn79/*d1q->R<XU)K?Vi>)4"bH%7_1dlD?lP2.3=XRC=7[g<X!OsH9@iI7'=J+W:=h&4SDJE:$FGc1A?;Y`7L_9BluaoDgkBjf]k5M2*!EF4$X:Q[`Qp#EL\\Ns[u10bHk6o,U8i0ME(ME-?<N'`oS:_;9th@eSo:)4Z<`N@?a9\caeoP7"f??Faf)N/RpD<,g^Z`%_>'masKMS15D3O'U>a[sePRZT;8qRNmZ:juH5e"!DNoAO=pWlI_`^=KSHZ+5Qpdl_sq=ZqQ5SH`W<<)J5_:I9Vm+:8gs0&7AG@NJ)_e9Z$e=`(YiMunQq%8.?tU:E+*4*ipt;P,>5\*HsH(sfb/P1I&_cW>iL9<78oBosa,/*V@s[BEM&VB7L=R\JN`?#kf<mTO1/:;6KD;A%@L#7[kTRbJrj'2hML(7K7M\qh<rYmr8d'*64&Q(lA7pKH[@6*!IAd$A4V$`U7."R&p\0Lk8_qC(CW=823\WQSRKQ:<>8D9,Vf+&n3bnB*`%V^VKZ^'0iH[k>r6`X)[!dd:RkD@dDDYg\8]=*=3Ooob9kW0u6"CW7J7r!Y7!VXCHB-<LkDVuhV\a+Gk:QIQYFQ,22mP)N\tAJV>m;rLkC[ZFs$(0rg3VAAZFXh,rt@ZRgB](kAUg)O\mghC)o4uH./(j)t>7e:.c,3-Q70`pu]fuio@?bW*Q&lrS4HC]le#$Zut336W58eGD2"]rC;T^9t;"4,=u5s9N]m_:-.GRYRYEucf/L9tadQ)^gWZ$SB+]PSKPRQ]&5+bR0C=cs[TGZ5PK:RmEG/q[N<HA?%gS%(r6?iTunWn_`.c[&HTF\\U#e,MbNrF/7u<ftW)#*nH7`kFro@Cm_Fe&oXcV2Fa[9Vq-^@dN0oX4L>Q5op`$A!YmP(Q=4Y6HQf5/+S,;'1#OKGeBRH]>gdnc[/06rFe]H:-_nEm_-uYEs;_^(E'X8LUl:\[Q)4_LrXmtFJ]nlp=4>d#kMBIHLp]RjE)eSN_k\S1J3nd8ekR&\I.brCjE6;-T?QoNq]2fUmKt+km%@h&GAh.LsV-DL^O6M:G9K][Y1DpKNS[4Q.B_7W\[Tf\VEL3+b0EtE%Z'3WnQb>f7#%=,:D)%0Cde*BDgN>;tJ0*[9i#PSciK8VkXiD37pkJpF;1-9'g5r[gS9j"UJ%r"V464.18EsYgbMbCit&-@?["o3u#KoJ.tr;#tT79c&^-kYUmOefN6e_e4Zj$r@l-TDBj,hG71gU31'*7Hm7;K(PR2fljIKdph8!]I-as3\(S)>S35dXV052$CN3Yh"-mQ+8dZTQ&94B8=ZPs-,"k^oMQ\OdqA+&QeK_"@=)1J'Rom4BIGSTq>86^HRaA\PG$Mp8:aO][rE6X-qCNZUF^f(16?gdhrPN1U"]<V3%u8mh!`Qr2+K&J:d32bg@g`?U.Tr+SM`AgPfm,G6Z0*n*iFMYbPFiadb!R(@0Q@k&:s5Lm`1DsDd`CG;02(\P/oG9NX'/T8lh`3kb%h?JVR.sDWKa-94R&f_m5h?GE(BCZRh3N1_9ZRJ;(/H6>DE&86EPb%\)#[qQZUM\Gg+&)LW6Q7.oQ.3#,ehi8):;tIl@$adl\79V;J'GaNl[tc`/9;-`I2=\2Gi]WX)UV'pfQ2O0+Jr1"CD/P;1M]ljP-Q%&h(D;Wdk.0rRY0H(dN<K669g4ZQ_jp/,n?om=_-s.>S9el,#u',%"sW#\hg/9F]TG$ieT[Bu=[G_kI7'%1eQm!/cDI;\F,8h4"A@roLK,Nj<'rU8a&*GJ)m*X"57-jRS)??r(/d$D*>4YYE#8;0WV$ln`3@/J_>11)DY/a.@?k..n/Jg;'8"*acL_,!V&e41MZ108SIA6AAY+qO8o`H-$T>7/,3CtdJe-2>)Y&FMdBgi-QJpP%GKrV)$=T(C3Ff5J^Eg]#T?cZ"G6Z:9fj>8PVt%pAc'L_<[OY>fm]'V/gJieugHHLl@Bm]l!Tiq`d!5PbUUKY/E~>endstream

-endobj

-% 'R318': class PDFStream 

-318 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2852 >>

-stream

-Gb!;fgQL;L&q+ths.Lr=P:[4p;AVrp-YI;"?*SGij^DpPWIdZ3_O;``!0k]TrH88g7?&W=C-30ajkE<OJOZ9\h5?_P@#2Q!pNN,.I(t2EY6"tr=KEV^ZS=#f_TTpI-Qh.4TY>h0L+m/c"J7^L5(LhLq2Rn];%QK1p[ecp)RLGPCc7j",(h"GGT#,2*@!J9/Vib\?Gf2cr>$1KK>g(1p:n,p+.=:#\S4bPN_c$`]+(=5k@@2ss'K*B\.57SR7;AUIRnsoSd0]<r'-i0Bn8XSnk6%+GQTt`au-Y+je)tTch3"JE!t)&+QHJnK[i26^Z9)iJE4#oaT.Q[h+!4mqV++0GJe]>i90d(?i/H)5CJ^4.%ISV%T>9WbRi227aZkmA%])B.YXp!E;+9P$dbVEg4J,dLm?O8[]nk-.:@ktEs=gT2/8_ri-D&^9N\B:.rrh?0^N-r?cdGi*CaiU=8d*MnHJjBIH<%,"+CtSPr]ZdjCm1Po>^ac)mec[lA\n"B0l%6OPRnRrJ!J>.(%^N6m.o*i'ugURGs"O$D!q^[fT/H1e;`%?L_,_-K5K\V9']Z"JHDV,"P"O8:a=-Q2)?J$EX#9#Dd>"i(CBC:>-/iac"Ta4.c&Oa:M-lRBL1^Qo<7)=Q#ob@4W=]_/kZ$r)ALMo#a7R9;96XO4,ir"te_:Yd_oBd^lcHR<SqNGp9[0Ym2)h.0f8.5qg@"]g]X!E-u(T,m58;:PZt-7P&'p#!_NmIkN;#hf)i6G9&^>j1tc9!Lrdk+eej<ARYZ.6s_naI8@Y[b1pE_!,DVP)!$S8.9P\6fC5Me>/<'lj>pf?_SHX9.oODBmMBnschMiQ.j--!>AUiDM(U@dlYRX=OXlgZ_9._bL)+R-P8#SmP4PD=AaBj[\<11'\?YhZl^rWQqZ<'(K1#cFacVSi4c>quV6tQOHaj,,8r'mbG*RfVbG^]^TjJ#.(<2Z/m.)\[GV63?#og2OXU9*&GLK\EJ,UaJpPr="kSQ\'\B#r!kK8B[RM],$1?Lr1kW3b*)6K58:7XpSUqCFo7'h.<d$`+18!G_eM'-mJ#>``!qs:eI_?d<lOVgU/7&&iNS:cTZR>K7<pkQ`4jd]eTE_KJ(S21f",T8jq^)/*<Lash'6Ia,[^P1_Dh.l&&&bD^nci3WlZ`dDe;L!*SQKW#V!;/R&0_rpZnl%rd41N(*K*aL!"coLD*uIS:h5#$4mc0T&h$N66V-6r+LDW/dM<H)!41r?=k;*h)qer"=IP?3%dFqo:A'I&A@Xk,T7OqM7U1*;,MVf*t:Zt__Ao1O-bFG.T6nDCpmZc^ZZGLoTpNR_1T*%s_[3gU=>+)[833LC\XY=<6!qgMa=Q(XZKjs!jPcNJnJFoH"3j)f)5ZXa_@WH=(^Q01lYDjbb]t8:gCcE;.B="AU&.Gi(N4^g@N'a2??F=DUlPHSW/!1cnNo@n7.HA_&[\Fubo`;6.WMn5=rQ=`(hfsiOlS"1uNj5R[YSG--EMmk$@2];YNjS.Vj?do36T`-RU=MPh,iGOs.#H\R]$P/dC8K?Xm@9OpQcAbq\DNd@'19J>moq?melKe%b&u<"ha_NCh/O:`Gf[H^PaY&d)UF/=MGt=NU&,tHEO+.ZQbD*gIOA;62a`d</XL]7J#9Xl\9dZI,UtG$eJPqc,K*)IlO7[gnI0ClMWTqk?coTb*/n"H*S-1I!Ll4<YQe6&76i!E3jkbKX@42BqTP<!Nt$;qGf%c2:0*f-@m=JsibRL#!rBFT`$mW9bW?/,(u9P#1Vs@p6u)L+91*"BZ2LHF9+)H0W0SD?539DB`kt,+kH1u`N*8Taf#%8:hVq/Z(\K?N!#00lN6EOnKM:$X9)>IGd5Y[Q)*\)+#A?chP\W?DX*ee\;c$64f'1UorTfAA2]XKN)Et'PFQoN6KtX=U/;HBs<eZhBl#),"][Lu_<GP$(=;"G6X:_?kF=;8E!N8+gBM_W'4fHQqhNIT4?aZHA[^j"Y$dDu@GouAG4#^+uA$Fe.q=nD9YgK5[_P"`.$O+7D#`pn")(NPqi5#j\']8^I<*'JH_[r1JSQ'CPDIL?bd+M(_(-\5oNVE#WWNW.@UXK-YIMg=)7DRphOt2fS"+fDr2H>cm`VMd6=QZ371bX_@X":5FCHNVp#d#jQ\E/'CJIJD)#Hj@A)B3f9O"'u&ih`QaBr$E'.QZppgA>Le0!A@^>V<OQ8?'u/Gg5&s%/d1%?EKL)U1(6]r-8N!l)OoUO:tfF.&E&L09M,dAME&jp-ei[*fWr%KuX4=d31*@:7$-#kA-?IZ#DA,r+dmIH/JB746$2J1]Zl#1>WSo$!/LcI#9[#H)fUS03)`7C&eO```7=[SJe<=2P^&:nb[HQZ@CJ2[_$QA>!j;R<?bqfSuKim&o:l73Jae61IA2R6C(ArU^-2kk'PrB*ba3V+6$[U7L\0m<eot#_/g\#(qH1WJ'tu;5'l;fH6NX\i8QH%j<(446J3I@7\=\)"<uDg(q2_j/["IogOgpP\j[Z;QH&@6hF+0,N);uZd9e.$?o!DeIo6V[,F-TLaCKaW,(K3bkD4i.NE=Gil%=.8<;n=B26Sj*Cf/f?==K4JLa8=d:aTbfh6^Faa5(>Zl&60t:;_[Qc,gh9.Mtt-P0.,UF(q"7jMd:7lGAdSZE;Rg.kS\sP]Bp:6/[cd_-3T8ZP>MZ>[saOV+'fM^>7^'Q\ipW^nKU[@4Pffc63'6r9Q$5VnX@A>qVuHmiPie(KZTkqE"bjS?Ft&eo+0>7ErnrieiRG+Lu6-TpI)n2T0_.bkr(0b<&31kHct_h0gf'aP\(GkJEfnps3\,reA"VFUisg/X^#Gs+D4V;SK16DD1qD"]!TrGl$M$,?#1$~>endstream

-endobj

-% 'R319': class PDFStream 

-319 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2269 >>

-stream

-Gb!;egN)%,&:MkuraEiC:<#akM%lf[.8>-19Un)M17_1r#De%$,UC/*TH3.[]*hq=>II-cDGlNYYsT+]h6Ub?0&Q_!p_ERRP60[?"[)Z.J7&eD'a,Zf@IY7b?9E]/aaXQ?lVRrJ0oI8]F6RrMLI(fr`M6!YNo9j*,IAA2)oZVONF5UK&2=#!mF.(MMeL:rs"\BB&)nt@p]-5MIf"?gqc!C8];sf,j7$F2\_`+ueoPl.g],8(p.p=NG)cF250,djJUnlU5?Yd"!+4jiS;(#(nk9l3B0nTdgd*WGhnFV!YVq(p@<MWl"Vohgqgq`#rr(HhNtb:-0cL?OARRF5>SSrL,8O#D`V*.=-XV^?U5Lea^q"P)\4j\ZPo;5QYX2Iq0[\UM;B^j(2qEfe\4+1RQaoXQW_7-!+2>+#\o3:Q^O0k*;mb0F_Wo8h_B-K<kWZ'Gq"s[i)k<VdHq#hRADSZGo[MDAYT2&WC(2-k=)7hP,t3jh4!W8/A]X%6I&\Rq8G,@ad0]EPcimc,iFGii(lmP@!Q18o1BFi"V8P\jXE]n-L*mq?og0TP*/$:rd.6@>i5cP6;JoA`aYV&0e-_FX<=aAl'o[,1l$++l(\SYh6"p/%.(HHM2VnotAeY)o?]S!;3ucBK3cpR(_41\F!;'VBd"qaZFXmgc2]d&K-bm?Cs8"#K@ZjeAAHogQ,8*;5M8:^<WmB)D;Fn4"2lo(@l)n3u\e)*oVEk!enEfU`CF-!%9$?tEM'Q$j;ro=#O@g;ZMt!$RSU<Q<9q<iRE6XCA<HIUPiur#^A$esP3P:<Gl#aFJh^\<b2@Sr+OpM>klrD?9R:]dcldj3RT0R7u1\'Vpi`\-40<S8,/G=]Km?9p:=]uG(OUHf[TVA=h\^dgUF=6mQQY_.5@bhR41D!%5H"+A*G$G;j.ms8;)qfdAVp.P.;E\Hu:QHg1lVqn9T37:iQ"$UfC`S+W!5'kBr[\GA?lZ8"K@+@ckbBK"M%UJ$Y;gqc*9,*8ToV=J7eOC=lHsLos*nO!?ZSmK_U\tN\'XJt_,%]UT#!%7EP,L1^@E7kK1m@Ms0F)UbLZ&UUPgEu4E,#-1oRaGkpuE\%IL7R:.)p4qOiVkSHU(jZ+RtnnrOe`4eT8S2e5l3/[5I6'$?sqXJ7-$:Ofp=%QSV9E4/!Bf6aA6$9r.,aFl![=o+>,5.L4i$uV7@Rs_%V/1YrCo]7^BCF-iS!rFp#K9bEdB]"ed4k"kspO&r1&)kk.rJe$Ad%b3*(WYuaSnjXR_sK4^Y]l2fraLVR^X7.E5dQ<jE&;B#8[lO@;VKEm<"MF-gV2,SZ\cHK@CI(U-IM1L;"-Hnm^<OobeA;e.6F`:p7>Nl1Nu-eiB[Y;J)BR)Lps!lV;&eBpMmEij68-Pl#msV#&O,NLUSe5klP[aE/TAGe[="qp;L7Lj#^>8QQJWTg>]FY&,E3CP4UhU><bjO%&$4;S!1j'K2$'h*P"AM?pX[mm)XLdM1m5,ep$EfWsA#=V89$>2P"b!D'1^L$uP6!caN#E&emWc`g7W_%=d1C@W-MFMT"CD?O0m)84M6T*d1^X@gF-0Xd+>Pac*CR=m\*sfM4@\I[p][.7DY!Ta*EZ?T52"^J#O*Bl:Mo=p$[?_WbmFI8_k0nN<u-5%X?kJ>QcpmU*-MOMOTX35!U1&X1KoZGCD_o6Q%-F1(R.\8uLN6IKoi;kGrSD7TKMa_6o([UD2T4$8:`n?(!.U7.[mi(.g0T#k4W2#0=WqQS4,g#,S5V(#;GY*E86KHnafG[B9r25Y[/ZG*=.5*]]>YBp:YE0INUPqQCu^*sSZJhoA(@Y#>E9_N&dX3:AtS4l42A\ijIr?2PFF$qXZ^kWS:5/2eaGPq,35gsZhfCldXp.4gPU=*)FXq!TYh**Wo:+FC$k%uCQAu`e#Sk,(.)raN19mTR91a;+BlBXG+BY$FW6kF[P2Mg@UddrZtmXff#5aHK&A3,pEDLkTD86K934F.L;XpkSb&>R?CeCVFZK%Dc25Ep>e<@(F)$?p/\6'G!<^/JiqdB%HgkG,=<,rU='fhg1h5KHhT;doShLsmNYgp@(pjD?sT$'RJRp.>?%=-b&tH<M-./(LRZr\n[t=mO,"lOq_CZ`96C%A(&Oi:H!8Z'C9KJ0WE*qT,M-5F<^e/8S=g%g/)IE2<-6<j_C"He-ur?_=p4&K+G\;]#ESD`"F>#eLAFeLn.&W7l!3fZMkJ)Hl)5J)cHcT4amimO=:J?kImNkPeYq!S'\2RHZ*(bKqk9J]EiN!E]SENr~>endstream

-endobj

-% 'R320': class PDFStream 

-320 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2691 >>

-stream

-Gb!;e>BAQ-&q8/#rkgqR*LR\BX4o#@P*/N!fX6sPB9(;[+;0jaO9@q$[e9+$$h,K9ZKX>_Hc@+r,)O9JpY0U>EhSIWY5.BR!,q"=3d&:3@(lcQlZ?S7!@IEiYJ-B22h/Nm"j_5o4^>=9hh;`Q\E=:S*S9Vnh<S,jeL`]u35^1Ujq5,+K9&knm5T'2Zt8"iUanEFLW;+K'BVNHm=-k*?]'bK*bmKEHR,\\3r:S>PjGcJ:(o3LEKEd)JEM%4@e:aEE6&_(5fOB)>N'W,HHe8L&n7h+`."'W*&J1OZBk"begq9u=NVYOdsFEhTIs.kn7@h</J]Lb4/(9\EcIof9Z";[$BlLDPBZqjV_&HQ@/1EH;%iGU`u;pZJeFmo)SM\IJ5"pLHnhY._rVdh50`6?;HRO>#V&I[RGnHVU=UAS=7>`re4F_2*Qq9^2@b\jcD=_!)DnkH6PX9)UBYV:J14`P,*V<aHN:C3QN#6R^);+->uV6&Y2_P3IPR>,&<Z4gE-(Z@R#7BnjuR\3)XDW=?2"c:IO9sH@R\-"h;tOFj3gMA!$Lh<3fug+iTEa_>ZSmOS?>W?C"rcmIHT`0hDYOI$(:Wb<p2_H&gVjmVHbE&%RdrZUBiUF$t+=tDocYuOO8(+9pfoPV-Z+3X>fKo%34_]f5G$2MS\V):;;e_h#Y5E`,eE+S[G#p?L:c!Z^8#X\.OHtAHpL1Mj;TlE`PIE43J#;G[e@?#*0WV-K:afde381o&AY>_2+bbV8QZ\+TYYn.MheM`!/uCn^"_7T2k[aY7Y?*6-$Y#8nKMmE=4g6q95;cIg;$3=J<ZNMM-2s@U1Hel'A,c.72`RAcA.J*-pQp9G,$GTB!]02j<-9@*p3bi9NraR-#\LgH]Nq!57ebP=Of7lZo)c6n%[3k$2VfAHEC+3uh0B\h;$S0?Mc.9AtLsG\TBp`+.4m*rFOKgV.j(b`)r5o@d,:[]FQPVVNYYKqE]$9rk*D6d5&rNq5$>)`$te9GqYTe'\G!R*l89`<K.j2BN[0=WA)0TpgqK?A55&nE@.:?SY#:Le2eT"dbYqI'ZX@8=3<;_!<O\nO\fdro8<(O:>'.T*JNA[imq-&roY2&#3d1_u'FYZg5CscI.oUi*em<W-P)AU>=ecQTPe3\YM?sAoY&PF$pXLNHDO!pb!$,aU8mr+Y^c/=oV;T+#F>efT4MQRq'L7ee08<C-Gm'ma33u`<bTJRiAmsGhg@FbZV:3)-O@(jhV0l2st']oHL-'c?*sEl#_6uGIfr,k5)70VlSg;a`993XG<9kg]V$-9j'g1a"6%+AM"uWI9:Ne.Hm(sN6GKqs3k\[OEXYTo4>#N5u&%Q=3U]g<r@QgpbtWmC:6DXM5F>+bu%e4f$la4M!MGWWnRK82!#/fVQ&_7mWP5D%/V:K)gZkO@1?F4j"DZjT-^?_^sGb8`>d4pa73\t-<(=(Y,o+p'W"oDRf?^n^XFsCBs,(@fa>u<b(caK/_?2M.AWgrc(a?r=u5O5ZaTbJR]kUi]`)<>k3HE"oY#0Jni^"(f/pW^hC4?XO-ao%i.j^FNMEMXo(S'Ca/Zl0E3^V>e""ol/388eF]Nm,H<AC>;Y.P\``609FNRan[G5Y\'i7^_2:V_0^F]/Kh$TQ.LL4]HDI2j]D,Tg_E$8[&AJ+&ZI4*LiE)+5_9"jAeFp<GGAU5K4>8K6cL'+:j`:i7_3Y'@HmY`BgnF1D5[s*lG0=2Oi,ifAL4PJ<OTeta>"/a@d?G$1-6Kh@eIF;qcJC;qZ:$rm9BG<"12PMV('e5oC)[i\\Mc5aA1`$Kn`c!4VGW35Q[:&RkanW/Al=Tqc(#DFlVg*+6Ubm:;q]@HImSIc#b`_WgOcsOoX%[n^<&A1*0lN)OLS2H%2Cr>%`]=9[.-A8&_S#Rueb_Q&YfaeIB;lW^[<I3`7BH9n4C,@L%jk#qc0Yt49'n:%jc8qp,u$o\=u7CS=GtEI.9=Sf.4fY#o^If\oX^([pd&/_h<Xci_d1'bS\a!pSu(mP>0Qdn5M7ri+eP=3#eSCE/W"i*1La]X@#*Oa`U`^+B]!Mp;X--*bU9ptk+$^',QF$I@1J=jp1k.sp+/+]F`AEoh_[8I/s/m0UI;nUp-#<@M.**2[adVc<"cL]:R7N(mCP*mW+a**.4,t>F.4IKpIK'c-pHh=<ZpV](tFo"Hd;1i*:QdO,?s-_IB#)G5j?]*fEkaT\)/!8Bb+^[^,"/o4KOATDK-%U;6`MqMN*e_O(q-6,(XkM9n:*T/SlIdm\';RfY"]s^`=E)2D)#<Ymm>f3aucH^?bMf?QU64@l*LmG-sQ7T$qVi*NIloO'=:h9s"Sa%'sDL=4T&H(>LF+LjL1,K2oVY;n2VSg*DH>YmM:H6<"U?Q>(WMP^\@WJaor);EqZu!Nd8CkM0P/J1268B!@NX3bgulSK:C[chKuPD%E5tM1;Y0.<?@o0+hPWDF$,GA:-C+6h,Ni'E^1&^_=C.=>"=9L@ng1OiCE?HHurHml_H`qB=I6Xq-q()knRIS`^<bi\pD@Ab.Q\6AW<De^lH6VI,<o2%;jVi7mM`X[M>%72"^+kEm)&fWsNI<9F&Qn;L6c[dGQ'a2fGTJLu7aP;+S08ur0>SgdPhVYr&(27&]!eF67SpcX$@)O%E(\gXKt@$0=l[ba*[Rsl4!hYhG63M-.'qD>tBSKGrF&^\>Z=+:6\B^E\~>endstream

-endobj

-% 'R321': class PDFStream 

-321 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3044 >>

-stream

-Gb!;fCN&":')`jos'_!BFY;7VX*qVYj>_:#ELSqi[fqZ##e1N!b>o5jP-VFmoll.d?Mh%ZZ&;i=0^P&m%VO(W3AY[]IJaH>cR8sA1P^HeL(Fi&^4^G>N*uVeHoliRifj<NrU&VW$jOOiN6ejp&)f>r57=@e@5o+ArQ?"eC05=0%;(eYbYneb!&*C/[,Wt[e!>FZV/G6;4F7P/5@FID]D[faqc!=6O.4]o_dUpBRb`]YCVmD#$ob:-DHh>\_titT5/+XTqsDG)pL#RiSDo2>UVrl\>_?8_.rV@%3k8WI="O-^'`MROdbAQY`?.2t!PFbRK39p]5D4b^B%eX[1'=f"oeU<4ja"-9,Ol6R0u"A6s%:2'&;`C^)<eId4GClE=aKao*YK&@6=rBnf7;)f7>-OoF/I/")E2@Y[)d.ZT1._Yr;M9oaaus2DOi.7&C5d@gq#=&HV2p"[KDF0"G6\,Q-@J:-&_!*(G3ZjB`;O'GfIC@CVpN(bnH]>bkTi'49$$`(*uDn&T:<XrmI5'iZ>o0KZ&,ej5lJNpS0k_k3MHU+'\UQG[U9N)lGiodoT&rHf=$4S5-1lACR<[mc`DL5@;`F`U:g$MJJUoeiT,5"qo4gJR?,QLRSsHN^EJJ1?s?1c2*N[cTKT6YIf-1*$6N/QBR(%@//ehl:?d)hAr-\rb@HMYm5lrZtH<`.hVqWWU/Lp^Yo%-pArK2cdING\pt'?o.3p?`%VIO(aKPOkE/l(#]u3l;RuIhgK%;:f"jdX(@TNK9VBg],hSs'/JPZ@d,)]tpoQNEf'-ReVqOffI`F1hQC(9h]ZN!Ub4;]B#gl[oG^%/toEYEKS8/\f&j;26f9g!XLfWS;<Z$+nPYm"Z>:*%Id$#d`DI*FW@j5?>KMuiu4g+$`UpLC80olW*f2tcsSVc@Dm_0^fcMj5l[:CVLp^?VL7<skf=siG8oWAIE!3&de.eFu0:(t9=LkX+f[RQ$(YkVj1s2fE-kGYTS4n@u<-AfCeh$_,F1?qPYRqh;8BWnZab1SrCDhi,5P1EdI<D-2aZ.oBo$cdi4,aH<+cDemFC'3?B4rDrYh$I],*^r3M8m5p7aD*0IMWtDXK#mN"gq:'X\\W?K]-o[3>AtZtgjT>7$1</\[rc+Z.#"S8I78F[,I1l7HU+5E-nrs\A[g8ehn=E"_-f51_C:.:]KS\E;]*_*_0A4Q.mH\bqB/DA(.=4Hd[^grD9Eaq9RdF[6h./6RK2>iIT7&05#N(f$sAMhiPe<iN(m671KQ)Z'iXWc;`sOn?$#Vg/U:>dpZBC%Q_n#Chs<l$giT'Y:_4?ki^h#*@<Kg8oli["Y%6<;gRV_S@<WBF%J5pNhB`_=D#!Q,BHA>-2OO2`khMo3,F`'!Z.6P7gpq[5Dcn9HDd)sAWfl*'^ci/)(rpK!)P)SQMrW^9jp.@NI?i6+d!AH_lk]Q?%!;S!82<e2M8[&]=1Qh84TDELH0"j.bipZJd`1nj:;gkZJXAMd](Q2F,;\+EY4Mp#'HCU^.C$M!<*au&HV9PP;lk;b1.8JnP^O8,i_IQ],MBH%#/Lm7b@is(cL(Xe@YiN^,KrfC@4GZe-I!E<(^*a:$OP[0-Xn]VCigU$%3hu\:6.du9nb=iY*?steCmHI$U2SLgXjHoB-)F/K17KuD`G2B6E9In%jqm0+jW"BT\rim]%C2+9%%M6:SFh4dj<tP/N=Rt4=^">G]=nOb-uT';r#c"FB?)Lrof`8m#/s4G;IQ1NANH6[\QQNc)e5'Vi%fNC=KRa;B<Jm\<I?N/iFhT.:/JQYDX[kgNlE$\bHCJ[('+f?S<02lJlR)s*4LY#-d/g9AR.APf*As[X/#p:1f"-Y\*B$.%asJZQ3&bDhYW@BY(E$U?r7?ei@SLL1-ifYnaG^1ae-\G;:]/:08X0l%L>:qoDj$/n;AtZ)'(Q).'4eCg;C2?*"M8m<?X>f!`94..>llcj#ei,5">baZo_&QU(m>Me#MlmC&el4K#J6FNZ@V:dNiH<ha%8of@1eA`#KSQ7NcZT%5\K]1ja%)?Z_S+E.-Ts+jNsZNhCDqn[N/W\,-J>n8b!B>GJA=ada3"!*$54uRsfcK>A^k)8@]cq]PZ18)nFi:Yk)U<&1K=u%+5AO`/k%.Ot-",8\lg:k<fX:ftc6b?6cQ%SZ8#1V#SGnhb0BlRe+!?r+FE#eqA=-YeZC05$d^P&nm?GQERaV*@rOT6sHQ,gqPIHS-&-*=`Pm7_((%H$NR'%=4t>ra3F8Y;kr$,<ea:Rm<7A>ciCr\Xf;J)cM'$-q++-i93D`u%g+@p-Hf:=G5&;C:jW#hO":iQ@m$28H=oRcOY7;G>269D0`o?_KN!BPp$hm%0u)_74h954[<+H;-lbMYEh:;EU,ORJ=sfpI]&]Gg<#u&umV>89UtD/4$k67TJm4,GT.N`SFf2=K@!ikX>f@G`RU>'X/d>\OtEei@:gSCgBp.;e#VjX-&:ic!(Vi.j+#`;OEPSnR*Xe\+='))]4%6O;Y&<NGRL)6_:*V_YF_WCU[d9?pX'`VTVU)W0pBI^"p"5?W8'%@-6.DdCaH?3aHUGPK'frdcSogPq!]>HXoU)4-Yu$fC-O=$>Mc4;s%Cb&_;Caf>MJa1>Q+CbW=oWke'4]\R-qLWXc'aJ*UoX3!m?aC%`t*_aO(XiPrs905<J+L[%m.`sqR;\X)o%dnZiNJb[Ukm:p,f_@gjHLq+=6jWnE537#=eNMfrY^QT"OpD^dKPqAS,$6_^Q2-/_fA?fbpWNM1^S,G1ZN</[fB*n:ALK2`,[jAp%WIRL[LkJmY>iZj&?6otXXb@`lD0_R#1e+VG1A8-,4XW+;P_.Oh9UO(O\g'BYL;DqiRi2M0nRs\ID4r?D#Lg#YK?kece``.a_:6L(,_1)$Q"k.JFFE4TjD8Wkpl^-rl$%#kk>lOG6!4OfkkD%R7t@J`'K/jhBXLa:n.&G+!^pNNV]G\T-10Pap1R%A$j%T1nO@-U<l@dtX9V\e9G1%$J(!j&@J?6i)*QuoDT5!;FOQ_Mr&4pK7"NEI>,934!FEM8+4t7Y?2~>endstream

-endobj

-% 'R322': class PDFStream 

-322 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2616 >>

-stream

-Gb!SmD/\/u')ipps'a8-k7fg!l<X//Nh'L,\929bm/[EK'tKM$9("IHU_MXg^R85fU0_Y7^$EX]Y[LWX3BK=KbVRQr6g3H(aFBs!i+`U;hhMbd@601J+7s"<&T4JL?[^njYe5D2LMf$f%IfdVmmFSjX7(X;V\aL]Y^ZNXXbQL8UL62(^bga!%.H%+V\M_<J<oQkO'TP(\+9g$s+'A.]_p+Rqka/PkC%8<@4u<[c!ucfP9:9<G]kZ?.[$IQ/<Qp]\]C&`%W4Mg:LP\Q&k!4d'J@E[Nc2,:bTW7NYo=6)Tb9(Q,if1#V1da&eM70!@jmkS/ea?U@#A%`UMP"+CM=?"XCrc'<9R%jZAR%4/7TEO>fLl6.;ZX4<^L?Fb\6XrJLdH@#R=DKb++fZTC^LV!81YPho^L.3>=N?[c-1P*1G<d2+d9?._CcNa5K[EAC0k.BVR4]-G_bU%[S+b(:!tfgfT:6@Z_%MKS+?k1#W\VIG_+'3.":WQ/C0LSO"T=mP1b]XPBa_@s:\(Bl?[R3'!pu`OFG*H>SQ08o>%a$>nYB086\OAHu[V<q76ij5IcQgJ=G+?LJ!c_]K0aO!^2W61^pnFnCu7Z,Cu-/l;[_M9srm_G"DBTO"]+8<m4iO`E=q]Z:J^O;1e:+bVIRlI[!i#Ok8B;*d4D!PM#^+E_3%EgkTOV;,O;;0%#'dUmn;\0[P&g5!W;'cX;49F@2dKrR%*'oVD&<2/pmJ+Jo*XV5>$q$'th4B?b8QZjMk#!PY:R..UDCRl:S_l_9&7-hZ(=dBVWEO[GaKk%-AX1Kf"@#c\r4A-`_fu:%m],I,/A=QsC_TJb($hPrM.hrjEn]"uk5a&o>EU'0ZJP1YboBd;FdiOX"A3!t+9*(U/n\s4746j:fKkGaPpCPDC0FYMn>]/MOH`SX>rHhn^m9La>n'cbS2*BCpb^>FY3U_2]3F$!P[.=jth3;&pl%*4.o/O'Z$/Go4F^IUNU^T,,Xqh1XG-1>srl.l8B[RU$%<DAO'M3``hjG[dN2C2@1LIm)i.M'6pM;9).MJm;[[$Vbl/F4:86kbjS[pdI^-65/gjRjLeT#gQ>?:8`h'S[1";DKFIttQlC&92+@4%_=fRTNJbUB$kLUTL>]EibY`oP-t./IBd'm*Tu`s%DMqai,OWZ6/Li0R4]VDl9Gr&VOeo],&RhsRC,ICf@8k(q*X+7Tmem(8*N#O^r-2aMggU-Eh'OQS>;f2h!,R$_ffE>sVr)haX@6K.q=6c7UNfF17,*1P-dHV%2;oLeITLa\Fr+c67L#IEDlPi4[,'tf'D)3H&O7bs/9Q;T%S4"!%'F^/H'P>.mqlI[3M66qD]R/ngo+&1\PN-&49p;<B%1u!en@SV,6n@O>Q>4=bu"\&[mXK/i<rCuPV]kq08j$sh8VeF3O3$t>`9P(RF>.Km\0ZK$Qds/f/mpLhf!bNX@U'CK!ah.\-^.%_dr=qpGZrT2AiP!4(:;G?dmAP0`=d,?=PSpP]$ND^2pD=890Gq5ai<'I.Pp?M?B22/.)og#L*\c4<+\f5Sj]=aQGMGp2EBG_J`tCW<Em8k?0#8le7NL@Fk*okOW$0-"i2uNoIlY38U_#QV@V)ajdC3;\0o3.@A[cJt,,u0;n1_YA]Uu:+`t&"16+s:D_mSOZ8&K4KX)msAZ,`C@@*Eigb]LB_]BI`6NKVnQQJJuhZI]V"BW$9ZXi8dra"CS8[bNhfrre^b)#cND:8l<$)Q20=5@j9QVL;22-Ju64pk+l1[%s&s.SC6t-Rp?rHsG(:$le:og@O9_J$)P)dK!0h3JXCW<k^2pA!"OpYqp2rb>@+qAfV]8'^ZRnSL:m.:P>#G,#ZR&Bq=9@m#!>M2D:sU*5EeBaa7=PG=&4kFiM8ml/T`:kR@=*nb<Zd:,&,q4?Q!>;N<U\=M'41-m7Yhm9"Sf%si`j\``LYq.k<fLV7*joJCgJXbJbJnud0#d0jRtiFp/iO]TTtm5Nd?mp=:@4%EbQVALV:8IW4cQ;Ls/TDFK$9UUen@rojoWXZU[E=%kkm@uT'4GW8&9%<FOWQV]>'aqOW.OIHd_U>9R4e0nj+C/O.bh"9N8nQ`'#s?r/NIp[",LIoM#PuVT1/d_,+jW11:bT#]$BET_TDpd%^uM_^5*sM*<[PY6XF71^^$#1[`Q#K*6\Rc#KN(CkE3rc0cZ.B&eR3R?H;]O#@hVTa-^F,.HiF>'o2M76aor^*[V$I7Lt.I(c1Nb[k:eE,P"!Z@2<C,RX6;6HVJI5<Q5N=COIVc<a`/HFPbnO'dZ6Kf=c7utGVgE5:J0+Q$V$Pl>E5X.Nj1HKg_*uL+6*`,DT41iWH/$%U)N7C^ohk<"Vu4sX(!Cf]SjeL)N9i,mbXL"e4iUH0D7Ink8Cs`Ja.CS_o\V%l38Xq9!'rWL/"r'j6!QZdr>A3ddkJUEMMukY<#kUAeG=,1E#oL]ZmD19b%ndMPUGR4$&V"1Jad0c&jq'Nh5!U/Mu%Q[9/@^Ba9#md,g0<M8Q']dcQ.i;E1F3J[0,([u#YkSJjWa-s.>Hh^@G`NVB/pU:89@*>R$"X7CE%VJ.))jAn_)^+_,h=j[\)oo#iG:0a<*Q1fNu3Gap-H4kSf;^rPh^\S`sR,$'~>endstream

-endobj

-% 'R323': class PDFStream 

-323 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2886 >>

-stream

-Gb!;fD0+L@&cV29s+gOg,pQ97]pH+T)9&m#[8u9TkB8n/5<q?$%P^PF!V.N7qsFM2O$&OeSmo<kUld'5!UN#&GFf$lIXC4$S-&VmJFb]@GWmZZi.Xo3Mmr2%naaXHoAc+s;$ao)9I!fk)Y`16X2^[/)gHf7pFfn3Y$QP'e<s#T=JXl#%Sl'`FQ1f,kXa<QX#i<2]l.?L)_A]Za8]Ut5#i-.luOuQ,KFh'm9i[PIhRFs)Hlum,h9b^7.=I!a.=Pgauq"Ce00bM<0h<k.hN<5dtD]*I3l&QEOCrZAQd5cYuY,5A[3;rA.Zu"&sKM0Rdr#],Pe(/-WB1ao$jA%(Rn,C@[7Ci_-9rNnJW/ej[\.qFOjka]j17clqJMH)o;&Rc!_o^7,Ejg%bQek%=%2-Z@p0;;2K740ClNl+NJVN_dfqaHjMe?ko;#2iN)1^^ELOcKW6?_SN-H'9rE_)@]UM%Mp]U=r^"YQc.2QME30]XQ@Tj^DE:Z/9)t^.5m-qt7H"%=k5=B<VMW+\BE5n6Wq7)6;sC>N`ZLZM9VTo7PWnXL!8U\)n?ItB4&.,C"4khY/VDE3Ei'4u`m(lqp0?`20se8@a<eb[h'>,'eWMN+Kb3L3Y?6qJ^uAU87K/)a7aXW;Yi04i6"Ft5e8+IA3TTNOa+G]%S>gm[,a,eT=n)J2-"B@Ce=:?@?=Z\T`=b'[rlFMNVhkhk+bE@QCrJp>a7UmcC^Dgh&s1cs`E>CUIG)PHilmGPdEdXp2^1Zn=iP$HTb1=cZ`u=<ETt[DI%&V!"r2D=-Hc7-bqgJn"=d&+b,j9^__(%SI9fkaq=5465I:BWfTZD0n>_e8B<'$.*9pEL@&oeJ;P5o4/aWqrI`R%W-kbfH_gG$=U_7kq6R?YQ_H=2oe"/4r(bj0q%tC@,J&?=SoJM@$^VBc5GVJ;nFL:5k&Li$`Y^B4(`_O'(m'[.Ub3c+8e+M)'hIV;kGsFMO[&u^ij?.?9)ge/"XlbAh2$f[Eb7fM9Em27P]UBjIgE:>cmR)/Bk@&I:CHM&,RLDi2>JiiG%^%3/`W4k:"qcTB.nY\=n.'8)`8Q8I--\D?#<!PeY$SMs?0@lgiiohqgI&G_^E)5qh2g^S*]cAA$rQbFU2bNomHcMHh)f^O?dUdmn*22eF4Zh%3;@*,""u-C_o_gj7HQ]2,a_aO5I^NS[B16)'G4MtIdXu\NseD@e$WHO"L-h?@#V]4$''uQ9>ko03mm#&WR91VBfoQ[$5Wu\4*Q&oa8MD^O,.om,/W7pD%%<;7Uut%2_JmUjBE4+1.W90Q25(3E;fcJYo<fM]##mR35nE6FA?mVXL;'FK]U_;fO'9A![b#n_^khHgDY=Z'&R\o$E]f.f88K;XuNgZQ81'$)eD`kna9#e^C?kOQN[,LCKW(0<_jlpl8^BUJ*N:FMbCeGM;2JO;seG_G$kRc?#2Ds&Jpfe-](QOjJlfoo43!@`>o9;9"tWT=lbrbI4BoUGo"Q9>RHq?>\LGWs#fEna+>Db@VWVT1,[#G=t!"SEK9@+<oA]<*^6>'gC=61g5i//<ZhQ@W'VV0G(@#S0YN2:IX$hIRF!D=OH,U9[<IkeN=0!8H\V/^TTT$g)2@H<@;s;Th'ef;Al"E>Ff+cYQ>OoKRBkB,[O$8qQPLV&0T:U9*;8$#L^Y2kCtNM?iH'7V\Y904`akrVoWr+e4%ME7E.h(.B5+bkS@%spP@L2XT0RBU_b+=WC<[med)VX!^UO%9'4eC#-[We+"Cs"QS15ME@'tRs2.p#>UQnFkF5Uf*YD[mmAbK6h.94;jZ/i>1cM2gOmAil2Urg>.0SQj=p/oO*m!K$U9=`(%H#1kq.d@8!;49.V7(rcl;$u?HD<VR4>$=udRbqL63QU[*'"DXh5,JH[";<.6XXjb)^0H.HABaD@(f[gMeqheWI'A>o4VkP7$e/^^c:pX,V)9\XK-Cu$$4cM\nSkAs8+b4EhRK"364(5LMuZi[AmA^n9D4r(5hTVpW.8H'VpK,C=-kM8Ald^\9""!V+=V&Qnd&6gUE0pYjf4-=[6=%5I?>Ro&cR&.k--1e'?<2%97@Z"#on17'!<<2.8$3IM$!-bX;kY!N]V$F8lT]^D^h&$O*Z_(XJN!$BjbbIaIt<[*2TW7nd?n-5BFT*gC515THKM^ahN9id>cn*SSa(Dfb&/\M!a,>ZoG>lq)_k27TA,kk2`40n!Q*[ZVH8pWV7B.Tuij>M(9i$Ku1l1IS[56HJOsqAhoKmO1XghfmLfao7A9rL89d^Rq<C%/@HO(eri,aUV+X;8"HCRP/j`/JCdlL@aq@Q:HpL+P)Ym?d(H4FHhEEda6uJ:V*\<OTXo?c'n+eup]q=?qL+#$;r_S>=o+Z7$1-0M]\3uE'Kj?\BZmA>ga=@N2S6r<"1O=,W>p\\>4qs-#7F<a^IP-YAMn2iCH`d[Dt_t\rE8Qp%k5pSK]l19/>m`-*G-qOd?SU._D<Z'bp#tY=%X>W'pW%e43q&Is,F0h]Z/B;Kd=r2RTQc+'s.52kkn.OnU'h>1O+MNJNhg/AI&6Er\UE4fi=&&i#^.6fm!bp3OP$S2F?MB5D*XIoVqth7Os0-B6g3EJaY(fOGH))659&-bm+41ejmLgbT6G-A#q7,XDP//gpXg'hiASrRiMo,h3*0-GL4ZklfQ6[hnQk+3^@f9\hYUWBA\N>[Gc&*0^4:)S]C2mMHbKg0l^!^,A^rOpcm)7kJOdh6$B#URe'#NR1b7[,,*"$V?"_:[FAuhXBh,.Z(En@.V=2%n`DeT3:qlTcNreI^:to\fQ+=@5WZ,*YCZG6m6%?,7@EpMQ[q>aRZo^#_u1LcbH1WK!p,0K((>\Kq1e/<-&]BXGP#fq-1QNV_FlC61/J9Llo&%E"8<0V?i1^$oPl5~>endstream

-endobj

-% 'R324': class PDFStream 

-324 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2692 >>

-stream

-Gau`UgN)%<&q+ths'abnD_VLuhSd[&f#k,;=XOuk>?c(gL;8n@#f+53"3K?%cflJN"=ZqeD3n1!\L:q6ds\h)oYn'Pi[<l<dmAk?/]9U*a!+9s@O:#R1_u#$ik*2$BCGXTDN7N4,"\N^"Rk]*+,d>_p:Fur*6$#fgc^,kWH!.0/@q3D`1df_*8rX5duC\I6<=Zma0*C>,^CgSIu;30q"e@npO2qtf0aCeanQ0bNpG'(H;:J^pHSH2`Og@QA(=,Rj$j6r:,MSupWAfM.q.bllU!W%o5E4gnaACEOit=02r[U0bs8A4/H%gN/!_[_Te[e?<&l>=&UpL.P@_0Z+!;abegaah1=P?R*ZI5Nij-e0d<MdnEh,h+:$JBBJ:8'kHdAS\1BQR0fSJ]f*.K/E!%5PdF96DC\/7C.]S!!jKokCs<*%oA>cf1!X9,JGV/5O<ptZ<nN.:Sb"lUo$%q=aB$fm5<Y"f4E3ZWZ0i"iODP1>Oo_*YS+*eEnQItX4Be%EtVU+QNT>N]!0F<T7nh\;KieL:tD<NZ[/H3Ot+f06\H6C_AKN?dr0NS97`3tK_FXK3jAE/,>p"cO>pL>G#STM?r%889/FicOrCo8g]dacCeoR3\[b_1+DDKRqFl4K#:J)a67H-j&'Q]nD/#4B%aQ"Cd)K,])1V8,*kR3C])B?>fRamtO@a2UVtmRl&*,kEXmA;(@hcfbF!HOefZM!9'=!iWEJ9\'ZWdaMKl,X91r'Y8MB(eTaMDnOaS>b(9?HQg93!5)guL=PjmH::g^g!/3%F1WNIF_imLoFs:nrS0ClaF%)t5$qb/:$R5+>aS])O.W;^P-,l4l%%o6_SVBjc>hZ0Bb"=:/Y.[jgj:<pmA6CBDGYg*KO<ZnrB>3Q8NQO>T[;TgK<5&FZ#=/G]lC2!>/c`-D&@405";DSX4AJe1m*Tc7S_p?B,YFr/=c!*'1aP/P!JuV&&`q2B'#_[Y>aq"nP6d[[VPml,,InNs7Ei##?#B3^PA0S6\[;n42jGl-^(/icM`#u6n6JCe:>AIB9oY5Bp)jW8c<5:jXBoa2-m#3Bj:P3[)cUjrl.,<6'M=q2.uF%uOJ3+',eMRkAP;@q9F(79,0fXo*\g]f_OPrqO+u'G'TW+=go4LM+s`fg8<p+hD8;6eU6=aMeL4P.Wq1V]J6@RoEV^H<IF%89VcHAZ"mZ_8AHU;hBIfTCI]ah_Ppm[[_-+g/rT[DH;AXI!b.:\)D@Y*S/?+O-UK%Mdg^jrCZ!)\q93d@7%35]PBuqTHIO$(R6m^5OaBPWbk,l(8*XfJQUF,JdfjQH'*\45iYC[D@h9ZnJKS`j&;CjHdFi/n^d.,lpoTG="bc:EF[WL0%4(E2\$#g,O7HQ1hFd:qY1RcMWG^]_9$n(*"`Pqcq71V7o3+a*%.4.I3!Q2k'&S_p0[GFoL-hSM)LXCKkEp"2Z^A[$dZVi'tMeF)gnM!RiUh_,m.[nS$ZMQ6jfB;;C30'l6&Ci"q+daeVJb9RL.+bX<fC*%'h\i\l"%e!se5.t78bXW<r5V_J/G:N6&?8eJcuaZ39*C[;kc1?gln[I_]l#M:QW^3-/C<8IG_0<&pu]';=5:a\BB2>g2Vmg620X@LV'sNFVLN<dIDDhu\:T(m*d%]E+Zbmkl,/FU?J!H25aGcR7Z%Pa<JSl:)jReE)c:eD]7&L5PFYS88)maNcsN<qWHs`\RL<)^)F0T]DKs77'#1EL4,/U1COMrpSi-j@CIM,.\SW92oYfN-'=/8cL')9/#`>MqMi2#@i7eYWKC$j_(Nn)=57Ob0_GH#%L\t-$\^td3gi0<"l_(sIA;A<)DcH4@O4GC)ik'lf,o8KGlniLBmq#MJmrF'5)ihK\d>gRJ<u?\<Ll1.N)P9cI&$k&R)l\(:!tFW`E'h4nI<S5/*u.HG^_Ok/Y>-ZmMcf#1P=b1%_MseTXkHjZO*WH">P')N(\><J*,"u=MFZn#/F(1_eHLHd"#5gP_lunR%#ArNhFU<`-VD/&gXI;)7B^@J9NmXbVajT>)aE"4I]`aE6u;(:W1heS`QZdl-F:IdZ$hQ5G]Z];QIH/)em<>Thb8;01SK[_Q)\ctNptb@.+mr@;'&>[_/9\^Rc@I4EFb]20pbM;W=_nB?tbgsg1q@*nPrklTa[.?crXZ`7_C<?ZQ=9%`9jrkKquK$SnT>$D*VTZ-]?,2(!PO=:$Vj-@Y[![lks)AHngY9+#P9lY(G7cAg:TFR8b:W42hYd&snc@Zrs>H_0;UG!<okA!k*'0W<1p(<0c91L^Q:$4,MbtB?LaDEpd/_N0b";1r>ucA\[@5NB8HT<-![&%nqa]:&B_*Ql3&V3.qa[F"a%Fh0NMc*XcY`0WUk]ik5b;`HO:p[E0X.>[0-[f'Y]W%=1YQTabq6rE5C@7fRr-\+%F^4KLHdTN"bc`Nn'?G)/=nm3,C:#dafLV4fWS)n"(G6RE$`MsCnoQmQlgO*9/;lG.++H1dlJrII'")<@V9dY8[Sk,totdAn"3Rra)GBgiQihT7?q\nd,@>NtZa^BseO(nNm:/'`d-T9!m"%Qduen!%U0K,2]ic7'i)k_;rU"#["W0<O;0B38P^Cf*%F\!-snMuZ4bH`BC3>X]?tl.^*W\EkfB:Y,5KqW(3IM>p:p89-Q?EO7N_*&r+kqJ%sa['.brF2rEWegScY]>&gpk9D=3kKj,/.TL2T~>endstream

-endobj

-% 'R325': class PDFStream 

-325 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 1542 >>

-stream

-Gb!;cgN)%,&:O;3s'\DnElUL8;P^,^V,!Ii1/lea9g<1J5!UB,+TVT^!9MVcG6*ki-/TQK:",6E(L211Sis[k@#U_ns3+)c="4(B2Llp'[")ON-BS32DplOU)ugB$jm`JjOA'0>ZSNZ<.-S[lF;tHm%(CusG\XInBM)l.$u$#65]@XfG;i8gm&h?*O1p?W(`bp=):BW)ocO,+VYfDk^,=AYnr,R>gMl?@\MIf<s.^7FX'e!]VE)9V38'gMrpK8@64cR2S>/@VRD^oZNS_q^P&(@+>jU+mJC,%"FNIp0;H3o.V;Xi)>4Ht?[&O8TW9$VipuH:.%X39FR8LB;QoTmLfuu>:rCNTrH4O\rm(^O8V4aA8Nt/f]K$#(9L3,kpTF8Sdb76p"V>:S+5D,,.%@Z,&>dN5'S?isVE,A_a<\eAnSF)JC0QgAED;gf8-(It/^;I%_J<5_nNa;_Q]r>O+rcb^9%F(3!5<p$"`SgCZ+pC8Jksc8d"^=kEcBQm2Z\XR'kkI=Y`u_/Uj'WUnJ@hZ:3HKFWWiU.HZ1$#O,`]u/H5ZtZ0cEiNq)oRHOG&JFm#[Tu`20-I,/d_4%_*N=&1k>mEb[a#/lZ7tWFl*'%;*OKUL1eXM]E]S"?hA2lbgs=60'd7Fj>M(ag*4XglsE2)O#a3*Z$B_JL%]AeAD6(f#G!.9^=P:-TBf9P$n?eZ;<98nLe5mpkfNRY-'Y,RH[NdN^c``E0M?rV2o6.;TtBSPE1_;?&&$M5s.fS-+51ANP=/D6IJcr9WeiJO.k!:Kk/J5(Tj<X'%Iamgr[&o&;7jTD&tRm&9s-/j!SEX&2^rN>pplG/XP'.F>6q+_Q7;Q<C[<K(j/cYEA]ZqXH!]Rog^os8Xqo&m!#MuB.KiLLt%6$NS8iISm3:%Y&:(41cLCJX.g/1@K]tK1K\XS5V85+r?7'9B?Bo(68V5qa%h'g/HQ,QlSVpR]RiJN&sIF:N.jK&pW"MIPO\[<14uof%pM"5,<ATp]%8^67Ao'G%$XEV;QY=X0NMn6h7kZ1i,sNm4FJ!iIo+jhXLA[We_R3/;`VF\V?=l8OK)TI;kX]3L"I&IKd?0"ZE2G>l]3l'1Kn["Wf?SW[E'JtmAV$^]2P5I5NTkC1NQ@;qA5#\&s:k*$H6Mj7Um)(+kHP-H-!@9C@6E?)QABQ-@NCZ"BnpG&o5RO)QYX:0ha:d,-e)9V@n)ol[YWt8P_KKs1HW.#[T4.9@hWs]E:q[Ok9S-f6#Q;]uZbOJ_\5E$dn:K+6.r_`CaG.YXtKVJ_cn.C::Ia(F?6U;2(io^%:YO^/N@dI\M1\;f)Wi'M+9\PB(9=_]#trgpZG']=%e<qp7KB5l=2XnpIT;^Q;llk)6EW.OO-PS$\G(6)ZO)#f3A%D-\t/a>8hEU[QPIR70(V9Q<Mm&.QMpR4$HFA,\(VGLbcLWdT9#eiuq4Q.7Mb5\njZNJVR^mod4hXC#YY7tRL_:K7A$a9:&+fK=/E6G'.Lp3K^6IYf"BZh@D-7[%*BI+^A(=1CM5X$56fAah.S^u<+:MD\]]~>endstream

-endobj

-% 'R326': class PDFStream 

-326 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2069 >>

-stream

-Gb!;fgMYb*&:H4YIi.7CcGJ.9GIqcb[RD!G[[4N$PS[MtD)RQUP#>Qbr=2D%^*]/PMOVIPi/eR34<0qQ6dg]QIVesA8c^P7nE5-;C^3ECYW^0^d78F?HN!,arn>o_^'B[.Kg*5W;/SbI?C"`&hmFIHk-&-#X*3;rBFP"b7OcuuL"4hil7oYneR`*;`"Y7mG7LD:0`".\s$_Ee/:W'#[O/?`9DA.96.ha_pO_@a7CH\dJK#N&L/ou6/$g5">t_T:@G+)@dk#)qi<"=ER?Y):]U6NkaoXa7*mqJ3oF^+B/J!H[o%_5]mf0gP*4Kjs9b8Aj-sZ:!-NtHqKG=kNKU\,>'Nc+sAP=C<7,m*57LFtH4V]XtP"!0-.e#lu!M<aOKo7JtSAk!jrRIh3lSVp"56#K9#<o'\EYfuZ9\4$I"L>tG'Cdn21D]50-00Xo4Q6[+BecMBK:(N%Lrq>(1koNY0<bd1AWeU;5hfu]irrfuL&P/*.'nkD;a<-ql?\oGWY#VoSk8dRUfig2\lC2`1f%eBA]BDWZKlEf,9Vj(O:s)9J7iFcZC\l54'i@fFffI=Ndr_)8?fA)N@'$j2>7M40Y[=0MbL[sQFSsu35]D]@]"l_O6]EKJ0YIE+F1]nO;NI`2uk.cocu0o_MQNdV\.4/TSU,CD:Ob6n<m+e2<W/NIG5_]a1$d.QHakHepnSe?tqM>XQ\Hn@AkbVB'kB/i7nleU:`Es0fmU/a/^4^!A!uAQkMl(>d>W0Jh*`XmbSqd^3u)S2E>bjfll+p4U0`B_aE'JRM53FF<hH_`!a)upcPV(MCP&fBGV5*`E<=A*n(6=Ju9OLrN2'YSd%P7]q-B6L(m&69_V@^`0BlgCk!s2S#2`[J'e3!KV2HU=6kMHWSg1Gj:X$iDaT7l[6pR#J.4E@NX90LX$&s6@.uK\2!70^mot6[.(8ku0,P+@@sd)?LK/!uXS'YPE*+4[%5#_-S,[[Z$^)dU9qLeV<r[]@X\k6u[7NoURTVPIhBMb9gbT"M;K>8Xig4T-H6HEcpD).I\<m]L2oc;KfAM0kCCMqp<P0g]fRm9@27<>UPl!-,7UoQ5iUEMP[g%b;>$/5Nh@ic>XUU!i_cnW*Tb[,jlCiq`KG(3k^oTdZ+-#HS:;+#-'d$#87C+RKpqZNF@6S2CQJ@Oh,T)?t,Ndjj&&u:!8eh;'_'TPb)YP<WP[UhIU(j!a+H/0W?/S%<iA<2]Lb0o:2ois9HGkafI&`qr^:<^i'4K_!74E8?W,(s9_LrP*.em>PB7Z%4j+cO])L\Y4[?5<W?<8W&;Bf'T<%=pDr47IV]>iH<,rt\=;+2RQ+$st'&L2$bY\]5[DEF\"-;`;N.rWap!3Un2I%_/IdmHMSYm;[I.4Yp59))m]e-e+R`G1e(InCa5%1hm\[0F"i.aU*gJ[#$/Uf3:V;G*c2dj:HI7'deX"kiiT*8m:Y/!h#.U6lU.RSQdP$S3]dacKcJ4!"(kXl=SjE(Te?2!n^8V6Y,8+gjsX)cT5)>3pXp.BNsCDE:9QL`u(pA/V`]iO;K6a>KSoD/*`Klb[BS<tA]=>@<Rm3'S"NSQ_r-p;@7O_fA!4X4hM^hti81j`HHGE;[MW:Sg""$Rt%ZcKXnbB9Elhdea/>_Jt=.b?UW-8aJk>kEHTTh]?`u1lg;II[Ngf=,I9]n",R4Sm=`H89u4)ifZ]RLg3^*&Y;$Oj=mE![EB#69W<7\L-)edkT5t&m01S7Zr[^0q7`*\%8N8cZlAg[\B4=F5MPj,Q_h&.r*B`>Cd>L/4*1rbMs%VOnII;:><Q4H7O:l:)OQY6Fm,:BlL)Q;`Xj\T,V`qAdca8Nf0If@aup/lqR*Wk(4G<sQOTuO>]j[Fd(%;/OqmhYWjFr[jLK#q,fVN%rbbKTeCH)>de5e?gp8[]'T1E&>hmHO<#O;[cY*M!W]=*6C(-h$o7TQ6crVV`ateC7iO5MAId1dj-"5@oWkig.A0R0^kZ06EEd$3J4hj-==K"%&Wb"aXc)P9$D(7N*rh1AiQ56KQGKN9'\CE/?F@1H_@n\&D!p)q0AeMYc?LaCA_Wt;'!RC6PAH~>endstream

-endobj

-xref

-0 327

-0000000000 65535 f

-0000000113 00000 n

-0000000263 00000 n

-0000000469 00000 n

-0000012253 00000 n

-0000012440 00000 n

-0000012682 00000 n

-0000012912 00000 n

-0000013142 00000 n

-0000013371 00000 n

-0000013598 00000 n

-0000013826 00000 n

-0000014058 00000 n

-0000014289 00000 n

-0000014521 00000 n

-0000014752 00000 n

-0000014982 00000 n

-0000015214 00000 n

-0000015444 00000 n

-0000015676 00000 n

-0000015908 00000 n

-0000016138 00000 n

-0000016368 00000 n

-0000016600 00000 n

-0000016832 00000 n

-0000017063 00000 n

-0000017295 00000 n

-0000017525 00000 n

-0000017756 00000 n

-0000017986 00000 n

-0000018218 00000 n

-0000018450 00000 n

-0000018682 00000 n

-0000018914 00000 n

-0000019146 00000 n

-0000019376 00000 n

-0000019608 00000 n

-0000019839 00000 n

-0000020071 00000 n

-0000020303 00000 n

-0000020535 00000 n

-0000020765 00000 n

-0000020998 00000 n

-0000021229 00000 n

-0000021461 00000 n

-0000021693 00000 n

-0000021925 00000 n

-0000022138 00000 n

-0000022876 00000 n

-0000023105 00000 n

-0000023336 00000 n

-0000023567 00000 n

-0000023798 00000 n

-0000024029 00000 n

-0000024259 00000 n

-0000024490 00000 n

-0000024720 00000 n

-0000024952 00000 n

-0000025182 00000 n

-0000025414 00000 n

-0000025646 00000 n

-0000025878 00000 n

-0000026109 00000 n

-0000026340 00000 n

-0000026571 00000 n

-0000026803 00000 n

-0000027035 00000 n

-0000027265 00000 n

-0000027496 00000 n

-0000027727 00000 n

-0000027958 00000 n

-0000028189 00000 n

-0000028421 00000 n

-0000028653 00000 n

-0000028882 00000 n

-0000029114 00000 n

-0000029345 00000 n

-0000029577 00000 n

-0000029808 00000 n

-0000030038 00000 n

-0000030268 00000 n

-0000030498 00000 n

-0000030727 00000 n

-0000030957 00000 n

-0000031187 00000 n

-0000031418 00000 n

-0000031646 00000 n

-0000031877 00000 n

-0000032108 00000 n

-0000032323 00000 n

-0000032992 00000 n

-0000033228 00000 n

-0000033462 00000 n

-0000033697 00000 n

-0000033951 00000 n

-0000034219 00000 n

-0000034464 00000 n

-0000034736 00000 n

-0000035027 00000 n

-0000035304 00000 n

-0000035578 00000 n

-0000035860 00000 n

-0000036139 00000 n

-0000036407 00000 n

-0000036671 00000 n

-0000036928 00000 n

-0000037179 00000 n

-0000037430 00000 n

-0000037727 00000 n

-0000038020 00000 n

-0000038303 00000 n

-0000038619 00000 n

-0000038909 00000 n

-0000039194 00000 n

-0000039483 00000 n

-0000039765 00000 n

-0000040045 00000 n

-0000040337 00000 n

-0000040620 00000 n

-0000040918 00000 n

-0000041202 00000 n

-0000041475 00000 n

-0000042076 00000 n

-0000042373 00000 n

-0000042667 00000 n

-0000042965 00000 n

-0000043283 00000 n

-0000043570 00000 n

-0000043856 00000 n

-0000044119 00000 n

-0000044358 00000 n

-0000044580 00000 n

-0000044758 00000 n

-0000044980 00000 n

-0000045166 00000 n

-0000045385 00000 n

-0000045780 00000 n

-0000046053 00000 n

-0000046343 00000 n

-0000046566 00000 n

-0000046878 00000 n

-0000047119 00000 n

-0000047361 00000 n

-0000047603 00000 n

-0000047845 00000 n

-0000048072 00000 n

-0000048270 00000 n

-0000048510 00000 n

-0000048750 00000 n

-0000048992 00000 n

-0000049234 00000 n

-0000049476 00000 n

-0000049718 00000 n

-0000049958 00000 n

-0000050181 00000 n

-0000050613 00000 n

-0000050836 00000 n

-0000051148 00000 n

-0000051390 00000 n

-0000051624 00000 n

-0000051866 00000 n

-0000052107 00000 n

-0000052349 00000 n

-0000052591 00000 n

-0000052832 00000 n

-0000053056 00000 n

-0000053438 00000 n

-0000053678 00000 n

-0000053917 00000 n

-0000054156 00000 n

-0000054380 00000 n

-0000054706 00000 n

-0000054996 00000 n

-0000055238 00000 n

-0000055476 00000 n

-0000055715 00000 n

-0000055938 00000 n

-0000056280 00000 n

-0000056518 00000 n

-0000056742 00000 n

-0000057064 00000 n

-0000057305 00000 n

-0000057530 00000 n

-0000057852 00000 n

-0000058093 00000 n

-0000058334 00000 n

-0000058575 00000 n

-0000058800 00000 n

-0000059142 00000 n

-0000059367 00000 n

-0000059679 00000 n

-0000059921 00000 n

-0000060162 00000 n

-0000060387 00000 n

-0000060719 00000 n

-0000060960 00000 n

-0000061185 00000 n

-0000061491 00000 n

-0000061781 00000 n

-0000062019 00000 n

-0000062258 00000 n

-0000062495 00000 n

-0000062718 00000 n

-0000063060 00000 n

-0000063298 00000 n

-0000063521 00000 n

-0000063843 00000 n

-0000064083 00000 n

-0000064322 00000 n

-0000064628 00000 n

-0000064903 00000 n

-0000065045 00000 n

-0000065289 00000 n

-0000065418 00000 n

-0000065624 00000 n

-0000065781 00000 n

-0000065953 00000 n

-0000066122 00000 n

-0000066335 00000 n

-0000066506 00000 n

-0000066735 00000 n

-0000066894 00000 n

-0000067074 00000 n

-0000067258 00000 n

-0000067448 00000 n

-0000067630 00000 n

-0000067813 00000 n

-0000067980 00000 n

-0000068166 00000 n

-0000068390 00000 n

-0000068559 00000 n

-0000068728 00000 n

-0000068918 00000 n

-0000069094 00000 n

-0000069285 00000 n

-0000069504 00000 n

-0000069659 00000 n

-0000069836 00000 n

-0000070006 00000 n

-0000070176 00000 n

-0000070339 00000 n

-0000070534 00000 n

-0000070763 00000 n

-0000070921 00000 n

-0000071099 00000 n

-0000071277 00000 n

-0000071454 00000 n

-0000071613 00000 n

-0000071801 00000 n

-0000072028 00000 n

-0000072239 00000 n

-0000072408 00000 n

-0000072587 00000 n

-0000072774 00000 n

-0000072956 00000 n

-0000073128 00000 n

-0000073349 00000 n

-0000073506 00000 n

-0000073691 00000 n

-0000073871 00000 n

-0000074036 00000 n

-0000074251 00000 n

-0000074413 00000 n

-0000074590 00000 n

-0000074758 00000 n

-0000074932 00000 n

-0000075106 00000 n

-0000075282 00000 n

-0000075457 00000 n

-0000075621 00000 n

-0000075846 00000 n

-0000076004 00000 n

-0000076189 00000 n

-0000076363 00000 n

-0000076553 00000 n

-0000076727 00000 n

-0000076942 00000 n

-0000077109 00000 n

-0000077293 00000 n

-0000077477 00000 n

-0000077643 00000 n

-0000077869 00000 n

-0000078044 00000 n

-0000078218 00000 n

-0000078367 00000 n

-0000078552 00000 n

-0000078786 00000 n

-0000078944 00000 n

-0000079132 00000 n

-0000079317 00000 n

-0000079496 00000 n

-0000079733 00000 n

-0000079905 00000 n

-0000080081 00000 n

-0000080251 00000 n

-0000080431 00000 n

-0000080603 00000 n

-0000080827 00000 n

-0000080991 00000 n

-0000081179 00000 n

-0000081367 00000 n

-0000081580 00000 n

-0000081720 00000 n

-0000082060 00000 n

-0000083987 00000 n

-0000085644 00000 n

-0000089104 00000 n

-0000092473 00000 n

-0000095769 00000 n

-0000098441 00000 n

-0000101022 00000 n

-0000103803 00000 n

-0000106574 00000 n

-0000109611 00000 n

-0000113392 00000 n

-0000117597 00000 n

-0000120616 00000 n

-0000123725 00000 n

-0000126396 00000 n

-0000129393 00000 n

-0000131807 00000 n

-0000134643 00000 n

-0000137832 00000 n

-0000140593 00000 n

-0000143624 00000 n

-0000146461 00000 n

-0000148148 00000 n

-trailer

-<< /ID 

- % ReportLab generated PDF document -- digest (http://www.reportlab.com) 

- [(\262~\267\007\250\024\326\216\224D*%\324\240\2522) (\262~\267\007\250\024\326\216\224D*%\324\240\2522)] 

-

- /Info 211 0 R

- /Root 210 0 R

- /Size 327 >>

-startxref

-150334

-%%EOF

diff --git a/pdk/docs/compatibility/android-2.3.3-cdd.pdf b/pdk/docs/compatibility/android-2.3.3-cdd.pdf
deleted file mode 100644
index d2a1927..0000000
--- a/pdk/docs/compatibility/android-2.3.3-cdd.pdf
+++ /dev/null
@@ -1,5584 +0,0 @@
-%PDF-1.4

-%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com

-% 'BasicFonts': class PDFDictionary 

-1 0 obj

-% The standard fonts dictionary

-<< /F1 2 0 R

- /F2 4 0 R

- /F3 139 0 R

- /F4 141 0 R

- /F5 152 0 R >>

-endobj

-% 'F1': class PDFType1Font 

-2 0 obj

-% Font Helvetica

-<< /BaseFont /Helvetica

- /Encoding /WinAnsiEncoding

- /Name /F1

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'FormXob.294f5b945901682cd975a2767b600f63': class PDFImageXObject 

-3 0 obj

-<< /BitsPerComponent 8

- /ColorSpace /DeviceRGB

- /Filter [ /ASCII85Decode

- /DCTDecode ]

- /Height 49

- /Length 11548

- /Subtype /Image

- /Type /XObject

- /Width 369 >>

-stream

-s4IA0!"_al8O`[\!<<*#!!*'"s5F.Y8OGjP:f:(Y8PDPQ!<E0#"70H8E,5RU!!$kRFE18L66KB5=s+('!!3-/!"JuF!'"CsF)XEA:eUihzzzzzzp=93Ezdk,!IE,5LSzzzzzzzzzzz!"O$O=]te*!A"3N!#0'J=]te*!C-Vb!#/mE=]te*!E9%!!#0X!E-)'[!GDH5!#/pV@:T?<!IOkI!%`.i;F:Ea!N5tu!"NX@;F:Ea!Or+0!"NI;;F:Ea!QY6@!"O0^B64+R!S@AP!&/;$Bl3nN!XJc+!'"M#F(51M!^H_c!+]V]@r22G!i,er!;^PLDe&hJ"/#Vo!%;>rEc_9]"3:HB!$kZL=s*eFzS#-/c9N;&m!jGd0=s*eFz2.HUdTBcIW)6m:H=s*eFz--ZDi'@d'_[`)?O=s*eFzo@O$D!!!!"('ntn1GSq1!!!!"$b$*9"d]2go2bnl#:TWQrR_)LqmZV*rMBPp"53_T_"M8\EcqE_z!!*,F!!$MOEcqE_z!!*,F!!$MOEcqE_z!!*,F!!%1PB64+Rz!!*'"d<#?g!!!!"zd<#?g!!!!"zd<#?g!!!!"!!$nIBl3nNz!&+BQW.4jJ;ZHdt1dD$@W^$Oa-C4]4'&*Bd:d>!\<'UEb1G]"41G]"41G`QQF(51Mz!")7n+A>Tf0K(cgzzzzzzzzzzzzzzzzzzz!!$kPF^kCOz!"o83!"<aS:/:ii!"o83!9eBD:fIDp!"o83!9eKI;agZd!"o83!9e$/7S*R[!"o83!9ds%6q[L[!"o83!9e`B6V[U]!"o83!9e$87T'3d!"o83!9e0+8l,Kf!"o83!9e!3<Drkt!"o83!9eB<:eUih!"o83!9eBD6;dd`!"o83!9e!878j0d!"o83!9e`B<*'&"!"o83!9eHG;H3\s!"o83!9e3:92Y`i!"o83!9ds)6q%(U!"o83!9e<::.tWf!"o83!9e-=8Q5Zi!"o83!9aDR!)NY<!)*Ah!&FU/!&ag7!!$kQDe&hJz,4GR4-BJ3-!!'kS8:U[?zzz!!%+PG]Woc!!#B)E-ZJ<B4uB06#^dZALnrqDIY:M+>PW)3<9*<!'ittBk@>F9hbU;!!!!)!!.jh!!E9%!!*'"!#bh;!!!!#TE5)r!!!!"!!!%>TE>/s!!!!"!!!!Rzs4[N@!!30%!<E3&!<E3&!WiE)"9S],!WiN-"9Sc2"U5/8"U,&6#71Y?#7(P<"UGJA#RLeE$46tB$OdCM$jd7J$NJi\6NI5i!WiE)"Tni1$3gY<$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$47+I$4?gK!"fJ:0`c7r!?qLF&HMtG!WU(<*rl9A"T\W)!<E3$z!!!!"!WrQ/"pYD?$4HmP!4<@<!W`B*!X&T/"U"r.!!.KK!WrE*&Hrdj0gQ!W;.0\RE>10ZOeE%*6F"?A;UOtZ1LbBV#mqFa(`=5<-7:2j.Ps"@2`NfY6UX@47n?3D;cHat='/U/@q9._B4u!oF*)PJGBeCZK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-g>V&OjQ5OekiqC&o(2MHp@n@XqZ"J6*ru?D!<E3%!<E3%!<<*"!!!!"!WrQ/"pYD?$4HmP!4<C=!W`?*"9Sc3"U"r.!<RHF!<N?8"9fr'"qj4!#@VTc+u4]T'LIqUZ,$_k1K*]W@WKj'(*k`q-1Mcg)&ahL-n-W'2E*TU3^Z;(7Rp!@8lJ\h<``C+>%;)SAnPdkC3+K>G'A1VH@gd&KnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!<j5f=akNM0qo(2MHp@n@XqZ#7L$j-M1!YGMH!'^J^eG-NC01u",nG`Ffa4e4cpM":c88PCn1>L,"M]>S:ok/CblnWoh&#FYmpsZ*f6h'8mIO]^cdki!c&P7/NgtMOeqa+M.%A^H91+Y[F`*5e<*0Mi!INs5)nE7bT"_o(ZnRPP2Nh[.g9G3_gNKo-lLr5u4W\?PoW5p3@jts8l?<$bImu"h-G_]Y9cn@#KZ+/=&hgW]6hUSBAOXXZQb5utFf-?0\bAC!hWk54??CH'+Xo;O,jZG?r;L%q4D\)X+`4lUfe,0a9]im!P8(?-k&mdiO\P%4N?n)n$Q%8b5Fp!n'):A!Ka'XdT$0Jnj:W*cqej&YZfjBR'Fe(>,CGj$GbqP,0%C8O#^@IG;jCJ**k\`QbG[BRlGD?)2bH'P!Mo.J7I.habPKfAp*E`N;/hl%*^`@[$cPM&TPC,dJ*Zp1[)*CitkYc-sl>I+ngHfO/M)V4C(nk#UJIB;1SYM_H:A!sdj,-^>D82D8Dl2B[R=?+S!,173r#XEH9g\0]*Zr/drfuTXdO0tuK)O\?6HlmA+5R1C$_NdeK?,m`.fH'T-XM&0?-thFr#p\uZgaIr8Zpk6)S!%tSk+OlB=:NoQP#<P2]:Wr2f="DrKb/,Hs9gg6Wro\]p?!I/9;=5l-Q5-Z-+3EN[-)A?ml.3+HLm^=5jbW]qG/T`EJmkoT+fW-h,o[rOd)oNn6P2=CTdF(LUlW7b[`':!8PYA<L,<_K!Qd4$>c/lfIC1APF]KP1DaBXi7%4.e$[]KU;Z<[db]32%;q>L"]b>JZ[uV==1hB9*0-'#9;<UJ:9A#k3q:d?OD68Hn^W!\u#+g/bYBLAZRMZD0h>MM%_$IUNI'E$j\(?NWGP4B3u0_qSMQI"n=4?iVB/9ID:Og%=j<7bA@^)R9b3iD:0%hP1do%p#`.@(VkB)$2ELUM*<9Vrk%0LCtK[W9<E)&G$2U_1Ft7L)CcLP2`<EVa0&A%[Y7.ZH'R9if!jdcZr'8(FbLN,5Qqj!5Qqj^kn4j[E2oZab]!RT-B\\/\V2Xfj]Ngj6R/@D<X4^P*C6NEHZ]A=<B7]^iTko40+?10fd<OX->571\j`2]`cCAdG81rWJW:1PC]=AIr!hV7'kr+(nHXkZ[FFl47[\$92t)PF@rNAdP!B&(al$d8WJeVjK9]&kMG6S-Uq)sd036duDVJI9FH,!&U:LOC<@p/JSfQC#Y;FKK?F%2Re)V+ugY6!ZZ<K?7(0+7)'=@8]k\Dn:.<lI(,!Wr,iWL1j>)SHGR+N%)B8=LT_/S.MS/gRl3N%hQ;c.V8'W3Q`G.!XMlL+:j/TbI53XR@&WT$,QBQmLC>2Hr(B/TVD9oN.T8J>?"EJ09*"l#0TalHI&S#^<a]_fm.i]oa^,D@!\!&Aso"6sZ5;O_]!9(CeE]'J*:O.qL]^aPq7!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!%=S!!9X82Hrf`t_7p8jN4`^a_VJg+@><Jio$8ff66IN^iE5Y9_ObP^)u^1+i/PZ._i7WSn4hD",-?@27R,t#BRf^t+8R0RpMUDk=_W=&e+ESsdPrA(as;]Y:a2Wf(]Y&2q=ZHV`7_U5ic=r$.QD0fGZ/h[C86u`hcVI5h$dMe.ZPt3a!^@8p4Mj1a/pu^o>;/G>?t>d$gS2=!TO]]X;OT1;mhAc,928sSepAkmHsDh_7h>/nA^aPm7159;`$;e>J+sodOE!EP"BTu,Ba&Hj!1#e>5>B$$2%e=DnL"f)d(A#e00Z]fJ`p[;H+^QO9lrs4U!t2'u\a@:0j+3`C3kH3h4`KQV)8[<i4s.h<b+-e^_)73f1j*lHKbGrX't@dnnS'ZIZZ1X&rTKiEkk+:*RgWbb0T>h\eV.f<K]lpo!'=L)pVaa8RC"/Z5>@P&12aXr75u`&!-"e/X%"8HYFP^\B3GKp;T;"RRl)[76bF?A([#?^V!d+CG^V%L,FN%maIXm=#!7-AgZ1qYJZ*oR^iK0cWR!R07Rl(qS,5:Cg&4+[/XqAD4AID)@]qrr>3(QT;sO2gZ=trX(aFE9GF>F/p&%"PlHP*o`C_*^/GQrr<N$:](TX]t<5,Xf[Z$T+,"-gS@]LK4mS@JNtOs,iF!3:ZGa^q\eWZ>X,Sc`!2,pJPDZd&_[g.*_Mp!"]P;n!"M'tkJgQ_]I#EfU&Cf(ou>P\KNBInc/%u6?YB;#F]1r&Ij:cYQi%O>iI8JC6)8:f):\;WXs?tNfbulGN0B4BJdS]\!<#"2V>PB/d@kppn8*P-f<i`%`1HcV+Lec4$V8G/a^`*o)tVB8*UCh^i1j<g:[n*DeJcjlEuqVr8bNV0)CHhPkXm;EYc5BUJ,)%,&,uX^Iae;s8M2N07hBYm:P@!^pknUD<s]4TKgc.eNBJ8!es=eTm$jO)Umo&TTCDC>"b4oYeUR'<.eKoq5IAaf5!9jc*<t*_a&0-u8TA6d(FCnW^,Al5-m_1)#UFE2-`m)]@:c;551&s#3mou1Mb1Ai`=`>SrS!iqgll)/r"=T%5PFU:Q*$!<$qAh:0uPuLb`FR;Hh6p5[uB>%P9$"5)iTe$SgnIfO0VUDk)4F];Jk*iWF*,DocW:=H_-Yqch=R3#Jf.r0+M`_(V5X+/0\#,Au_RRal'e9!#(!8!BbF^MW$-Oi1k`$P3!>NiV'Mj7DF*nF%%<%oa479jstZ9#OS@`Ho^`Xh[[:Pi![:3C)3Tshii9F._a`X'+qcq!?'g'jE@^Wq"OYiplFE1_`Q0JlJD[kdNZAf0Js7(VjKkP_u,&%Qt*LRGB>3b?8iO;Q!>@X'.bJK(s8,lUp/:1k)\/;DUmLhb=&rdC/qT`QJF*=T>qJ%SeTYgB7$h<)H:eC2B)7F['=t#gOhOJL6Hd=L$'ZuaMiDmlne1jZtO<j#rdV3%79(S!*>J2DW6ltm3"-\m&B%qP]f%crr=%1I08C<r0Y:_ra6Ybrf4Ri^[P"Eq')9*rJ`W5!9lAKD=+ZGhhs7;A8A2OgCMTXJp'jT;i5GjX/)6[D1+p"8u,be7Yci(4q8+X2ak.)o^-&]U\cU#CRCr*Ym)r(=3O&'mdg+2WS<TH#Eh4L!;?0<jm^U8Y6F]a(`$3%i;6-b`rXD*X5KSbmB&#]J'(-c&,Ps[rr>WeW;cj74'QM#!0=l)lu-9'@@DG9Q73Vj\soJu&_mplH("VW\@rm+T`l9*35lT[[_1+l.<g3t;,+M+HC%/"'S!r16#VM3TK)!?\BjfNA,&(ST>BD(r%?hSn:T#E']p@89=,!V%KJIr#oFe:#UCLj+E]Hmg"]`=T098oDXj+N#=).JN"mkiN,aaNVu@"XU)d1Q[]t4ba)to)!TAKCTuZ'rj^2@b'u]o$'4A%(ls+O0nS4ft&uO[Q_j]l=GJ;e"-W2`l]A2a;B:J@BpV.\3+hrRZ22'ML:hJ4Te0RS=6g$\$?rc;fbIIKG389C4UQEtijWp-6p$.&!f-Mg2DuTeb&+M%H^8Lu2d^Q(&J)qrA+8+oKo[bC:U;]6-%HV_;@iOPBdONH8[5o13n;jR#rmdA8!!hKQQ[l4;-0b9F`R*/ko\lXjLkqnd&*NBBPd$(!_dGA.k]8uHTH=a3oIks-rr<RAddABM?^&]gm77i0j@^.?4iod@:6gV3FoMH`;##87!+/WRkkH[ArOBW'gpMY.qR$8&dHOu'G?YZ:Tu<1po$_Q:4lmC5Qa+2fT3K8oVtP%O[>LGj9Zm<nIQL3m&&U;t%fZOf(t=K-)F>b,[5<HnAcsSRStM@o#GN.(^'B%8n?9m%>uL:3)K"TAl$$nVMoAM'7KfKGUuOO@+S>E*rl`(IDr)6/!3fB$!9d-`62pofgn#1UGd?5P?Sh(-N)OrFNO"N'e)%bXUGC*blBr[pX^tBiRWTU>MGDQs#sp-!bBl1\[sa-mUq%.cT$?fCj0+19"6anhmtpB`m[!_E>K729WGjOoTB78)5j=f%5j=Fn81'5V'Y&k+,`3HY(s!pG^2X)PJre"jn99V]1'$^@bX)ub!\on"`-u10LX?&$j9oW#!+)r1!9bW@O"AQGGciO?0GA6T:lQ8328%rs/&&\[$]LRRj4_JPn1PZ.hu3cJVi(-h$q&s4<q#oHnk3W+'#tiOOc$DD,b/BbB9G!23`j&Ib[7X2XgGjMJ&GR%/^^DPk2\rU-nKqPh`*d*Jb`@X(M4Q8%"89\QW@'sM4BcnJt8-9c*OnDl7.s[Bgpb<^5r9o"VpfLH)S]!XEZC"ZaY+qh((u[QgRfa80.5akRDklNd`AN5N2?ek4k(Bl6WgYiCP8@Fn6N"pt2j1NQ&@8EX"NL!(c\,paA"rXM4liY3!,^Q7[C`'SSh`#!$aWgGg)I$KchP+8IYK"TJJRY)iS_Uh77X]L0V_%.c#.0!oUS_pMIm/k$4TeXTQPV"NUDHKbo\LGEc@7oAdQp>+/G-@!PZ_B'He;m'@ge]OX\NuJ?L/V>U)E1o`mai>7C>PP])D1"><>N4Cu"im?P)R\[jm(IaTOi8!o3s.4\0[D]q*Aa4:h>@Jc\$YoRi<ZQ&dPX3+Z#[+B:g'G\@tEF?,bF(\?6/nqg=o@!@/NR*RbB]`/%nKlm!t<Irr<:<m?,F(GcZB1@5+&W5M%,0pt;j#fgaKOaj"B2m3d@br/`j7,d47*m!mrg?Opb]N\*W63kQ$1@S*>\.7t+V\Jb>2g@]rPrWpo#*^@V:X_h90>:$jRaH3luNK'E/Y3%:8!Pumo`Gm!.`MK]Wm+LA)Xt?E2i0)AV*RHO#c.kt&8a(?0%$&P%HLid)1H54FT2$rj3.uAQ!+3a'\aL/Mr];'O``J0Hd_a0>$%"O)bt5s@W4-nlIIHA>o7Lbhl#U1srX([D'Y&:lpj&r4&7QlI8`G_sHBeWnl'#C3_9^k/_4MPAGAZ7GD[L4tIF[\))d-d8,Xu<3+]Gk4ntR3%A%d"lZP6SB?N@_iFElbHharg(0E;-?r`TtqXh6Q?o3O7_dj"elJrs7H/Kms4,>KB$4O^0!\@+VXSkjb,Y%jA[)!/-qb\_`TC=C/PUBs4aN,5NZm3LG0>$fCeOE4B^.rTcV4ceX$m1\E=J@7A!G`iH8]?C0Q!+W7=<A)+-QZC"I>`^b`,k)9R1O]K+dd_^.eSZs\Itmg-NLdE[jOGk')?BR58!/b8aZ(/#E]_m@Ib#:cpV4,&_eV?WFI!eWYXr;d""U@c+KGU\"EB'$9OH[\BpLR?HA(Su(@\];b2!XD&kVp"9mm4OO3[?'-H7^?.Tfq$iuUVlh!YCngtTJam'c;n[-&p">nQ&04T3".)>HS;[ltbZ]JlhTVTre.H`6X()0In^2]^*C"D!)4N/hW0&,uWJItiD.nO9X92.$l/)F;')@=n(/j,t^33!)DP-jd]FJd-M9afK9]pa@Y"l?=rW)rQaQX4b;`>GHXVEXm%l1kn`8_8]ZkDt]dtorS('eb"^k08AlQ\[9F_`m[Q.:G?At43VA]WD3XW-'!8SJBg.S!#(^9Ge>A=*(MQFW@Tm$)(o\]Wj_V&f'`7Y``8OO;SU<M$faasmfn.JnDo$@nSu($Y%9=jg"IQ_B5fVGOoPK),k7#HO:REP!5lji(&n8%hc9[V^ppDBr"MF0D-Oe08thC8DhG%M&\?Gpk?g\oeeV'?Heg:?i\o%i,Y$\7)[^C+DVgc$)"b#<`8`hP2rZrK%g.`M)P.O>\*fMO-TH24gK(c:?dR33P+,%sa3XbcnF>rMrrCG*eN`OU3p?PYrnP6tIO"Wnf>4qB*i#Oe?d>n.bA^?]UlgZP)3j5cM#_K\-^$!Grr@Xi=P8`Cpm4koZ2L?Q_\&MKhln7cF4V9Tig9A]Yd0&E^V`3(.nJ6:od!,+;urOjjpe#FHu<bHACo)ao?K4k_Xog>XtgZDV&RkV;-HSiZhW!ErH;Q2$?]?+2UA3JU5JoRl9'"Yh"Y=;mtmYDmA'/_R.o39AuN1:=i)s?Z$C5HjcAD/=<40"1QH]B<f-]\r-6Z^HX/R-rL1,UM='5'jde!k@1j:lh6Y3bF,lYGoZ\-@\X*Z`/*@X'*!S<GC6`9Gbp^GD>drg<P0p=u8t0k`:<*V/1ZD3KYDIRBf!48MKlVEMh+A%UEH9''N9>18Z7@DcQN[!-)9%"%i*BFEa6]5SD\;2qHlfrPm'TK[,Zbc4nsJJDca$+'NEBSiS=pf**=d/`m1f.5'ua\I@;#8d`ta>LEN@7j^3+-;)^sFk92-&Mmnf9-daqHGL%0fT:WNJ8g1*XYphOC/%oLd&[04"&BeAHiPmj_)8J)Rl)p'D>\K1VRp:g<?ip4qD_o&&VnD9"EX53#$NJ^t2Vcu"%<@qd<\4$RW/BU#'&?gJU\<d:YphXJ\\@L1mMLpJMN+:$Jh5$d1[sJ%B[_7sT]=lF<LUqWjOl.5j8^q-&>[$@bd*E:a.-hMH&&<g(/,Lf@"3/%lq!7G`=RcoVD_19&^6*:#DBUa1jfTWUb@C:dg`3I^"`oW]r<5W<"tq+:iph7CmVP'2D(Rp:_j=`V6JN5gp,k;-oC-[Ur+5BL8@@rRLMo%!@FpUa'pK.`W+_u'9!1oJ&2VdtlWN,SoFfo+!RRsG>WdHZ[9"6k#dh)G^4WUArN:S\pnQk._T9AOi;Wd'YH7D1Y9SX5"Cbc<,\9=a!Q;U\rpDl"c>d2#e>\brR&hqu9%]SOO!7s&me4+jg3\*Z\J69`RbaQ<i,@?lj#sSu[*(FYB=lts+L7"Qe88^*<4Gp/6\)Eqj:6-"c?aT7?eJ)fh\3Xgn[$.u+$Lfl8pq=(7bUhN[CLj]B6bL7D+>P&.S'5h)'i_*I0&;$2I.9=g2<$88rm\a_[E2K$<7.h1#%T#:G:Z(_H$)jo.5:TX?EBs3'o&eQH?S%1U[(kpNt\T.:"qqf_J=^g2Fsfg#)Lkf7#1DGN!trM"LXcAb%.!#p`?QZ:MlT@>o*,KmmIQk8eRepoXEYI!#/*i*4N^[bnEOX(hO2@nA!_QSYjGFaoZM8cd'E8\c5?O0!#rWph>e;oE,6\W#c]X3,<Zq&o\;M=Dl=\ZGL1^CYKnWCo^+J&?bjhBhYMm%aR\$L:Tuo/0P;p$d<AIUXUqcB(FKeU`r<*"i`;?=3R@C4@-!-Be9dPMm8#3`X1spXd"-W3Y(^!KK!J5fnj%&Z-7`P&l2qqLXUtC2f.\j01M%4aBq-3.!KFMro_fXP6Nn)`EuY=mB(peMQt`IIWYSHu!g#G%a&l[d_9&RSqcCI7YP.":G@2gSF_H6P)/=&'V\,1;C9,_]O\\hQu1%ME_UC)>-X^$=i8PgHoM78<G0W`,"s(goMG83:2kmJYJnQ_,r6`?&c]nXHLP&p:")8-180YkrAA"mH,cf1tQg2aa\-QNi(Km&)!.D=c-WuBPs5*A#Wf`&i88elW_-.cbb/NGQYjpmu"c#Us5gmlh=5CXKIc1Pu8bKhW`QL1s@kd&'LIC7Xa#J;S_dn17iDS0[)9#`6Nt$,&r8M>h:O!]!^!]5uW0ddW_tfn*I79*uT<-j4D4T:LEVAjfP?1d]Kq4p?`hum^[O?)_`5I;B$jc)='bei%GuJ!5j9<GgUmpHJ1ZhBb$rIlsNX@A;#R^2M8Z@gRS2ZNbdi..FR.e*A"Z/K2lL+6Fs=kQYfJqjaLP/]Cc\F\Phe^I/EePp]nff/GOqgrr>pca+j%?#bf`nNo@)lg/.nB@:3Ug@6k7`,ie!)9'j</I03aE0C8]=X6I>>dOoI@I-YD\er[8e'j8ng#b[B4ahZg9H37KI7<I/?>W$/^5A8[#ifpnGD%99%pXF)LI,8Lorl8=kpo/PsX'Z-WYMk/'7[KlQq%.:BY40VW-L?8e3Wjm=b@_[m%.XTUO2#,lLAJZCY-n90%/`]-nFPJWdTkG-aV>\RiZn8aPtt\`GI@\Uq?su^=2dtfn)4erY7o+>%:&1EIJ(AtCQhB$8Chqa!6h_nJ8b`DN8l95-G6G+KcB"9(b*j7q9cKSdXK<7CO<@?FL"J@m^6o=9W@oG>4t-krMG#FBcdOhddA[#.5&:ko15$K8tfgM<!"%JgZ9]Cc8kRbpF_7-dB*EhrK]SG!8f!5GJbN,8&4R&l^%D&pH%0./`[DMHBm8[$a;W1ei8bqaQQA063sc2kH/1.gb"H*ES/K8=u!q3^ESXsc;cI;S_KC:GAdE\IumR*i7i"u$M]84f>\mKr$(q7j"%kMp`98u-2s`d*7cgFL-Ve[bT0;+&-m]Lp$H+)f8b4`p^cBAL-HV>DrV:3gHM%,9[BQ\P6Q56->?"^``/lZ*9/ED7npMB.*Zg<cRa;ib+")V[o+YJP47;*V4F-!ddPF'Wu4N,Z/jdZ4skZ)rM?k_:PQ;BZhC5n#1O9/RGjNb<&0H]8;ND3c>q-KduiP7^M5ufhC4*N<RAAbU1ohV\!ebpTX\8k#+:iI!K!@D%E*-/[mOKp79heieYA*"mOiX_@\B^2\AgY9=1+e;QL=56e[*qBmdAcSHmR3ZoH/d9):8%\G)GS._tHo3`5;a(8.f!#d"3e1m7InJrrBB,m2+cC*U'+'DYur$pk%Mb8>`f(Q/a;M^2O-Ee[@NI</)CNj,=oQb)5i_Sem,qKu1]lGu:VrBu4R2eYC<fH98=qg(c)ba][?<aaY**3dc2IjkuVhL";m&^8k^#3MI/1/ZpC9,`<cIFD;WS7EZ?p!W(EWp`JG&SJUYQ@IS'l4@.sf:eaY^:ct]bR7UI"AiCibaN=V+Y=5BI4Z:2]dr%!j>1"rSDW#bW@$G55NIb,2*Phl>`jrDC':p-^>8rXA4C)]drKk89`]TT)`Mfh?^#*Vh.+>M>]<gYKqZ_:;g.+j^j42tu"j';o;6_3@Z7%*X!k=kRIK["PH2DICh@\1`;&6\GP?g-@Q+5e^=A$Li$NS=VBu)ola+<P8hsaEKJ_*tD>f!OeP1^kt>Bhg[.2_\Tn?ZWi8b]C*i7I>+n@RV5V`q`OFM>B%RNiBWeLhV=MDKia![9&<##6u/3$_SC;W'*39]$.WQ=!Do)AQa[;cW!YnUnS+Mb,O5QF>8`a\dH-g=GjT5MA'3*]3C'm7$O1`*+OC05e/o>FS!&HO[SL:jH,S=7[C?-53#@)<VmRYAs)]M^O@/-`VE7$._&b2!OCj7i;S=2F'h,h-)X:l1c6R%t_a[.s!_!C0]1_Vn/X7DnOml-Jrn)rr@\d&AC:+bZ\VPnETK9I_XBbC+XH!M!\eZYuO/J@n'U"pL=>Qnot2M&T3%WIb4QPnG`KDDZ1+%BJt0acf\V>>=tq/85m`VRRBsP=N1m\Oq1KA5/O&.6iJ7c,$B;6b.3L'?rLFEjat-E\WhBfk1stN)>b4f="OrTIr7INps[8%hgl``4rCu_<o6`aNo@)lg//0"[jkXD\thgYESt[o,/*GEJkMXik1UQnaTJOOj!:T*VkUoG#EdBLk.&WWADFFpQWdO46]kU'C@5c.Pah)c-gVH'Ii*D`_0Ys&]>Ji]A'_3U_]A@R(4D$o+^:*136j3K3'8*dg;h#.0_%*@hhJ_7LV,KkHZ*]#ip(l(%#G5Xi-`U9g`'7R>6>4Xi7GY>?;u/2#p'hZOo&:.3&nWh0)963Ssm'*6@G$jI"?q8BVLC]"&P_L-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ii[!U5nkC5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Tg$Z~>endstream

-endobj

-% 'F2': class PDFType1Font 

-4 0 obj

-% Font Helvetica-Bold

-<< /BaseFont /Helvetica-Bold

- /Encoding /WinAnsiEncoding

- /Name /F2

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER1': class PDFDictionary 

-5 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (mailto:compatibility@android.com) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 55

- 626.125

- 145.135

- 637.375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER2': class LinkAnnotation 

-6 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 55

- 747.2637

- 0 ]

- /Rect [ 70

- 564.9375

- 117.5275

- 576.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER3': class LinkAnnotation 

-7 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 55

- 458.5763

- 0 ]

- /Rect [ 70

- 553.6875

- 114.1825

- 564.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER4': class LinkAnnotation 

-8 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 55

- 441.1388

- 0 ]

- /Rect [ 70

- 542.4375

- 107.935

- 553.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER5': class LinkAnnotation 

-9 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 55

- 357.86

- 0 ]

- /Rect [ 85

- 529.1875

- 190.045

- 540.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER6': class LinkAnnotation 

-10 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 55

- 216.735

- 0 ]

- /Rect [ 85

- 517.9375

- 172.12

- 529.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER7': class LinkAnnotation 

-11 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 55

- 140.4275

- 0 ]

- /Rect [ 100

- 504.6875

- 161.6875

- 515.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER8': class LinkAnnotation 

-12 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 144 0 R

- /XYZ

- 55

- 521.615

- 0 ]

- /Rect [ 100

- 493.4375

- 178.3675

- 504.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER9': class LinkAnnotation 

-13 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 144 0 R

- /XYZ

- 55

- 521.615

- 0 ]

- /Rect [ 100

- 482.1875

- 184.6225

- 493.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER10': class LinkAnnotation 

-14 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 144 0 R

- /XYZ

- 55

- 457.615

- 0 ]

- /Rect [ 115

- 468.9375

- 221.725

- 480.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER11': class LinkAnnotation 

-15 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 144 0 R

- /XYZ

- 55

- 91.615

- 0 ]

- /Rect [ 115

- 457.6875

- 195.46

- 468.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER12': class LinkAnnotation 

-16 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 145 0 R

- /XYZ

- 55

- 677.115

- 0 ]

- /Rect [ 115

- 446.4375

- 206.7175

- 457.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER13': class LinkAnnotation 

-17 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 145 0 R

- /XYZ

- 55

- 581.115

- 0 ]

- /Rect [ 115

- 435.1875

- 200.47

- 446.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER14': class LinkAnnotation 

-18 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 145 0 R

- /XYZ

- 55

- 516.2975

- 0 ]

- /Rect [ 85

- 421.9375

- 180.0325

- 433.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER15': class LinkAnnotation 

-19 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 158 0 R

- /XYZ

- 55

- 710.0475

- 0 ]

- /Rect [ 85

- 410.6875

- 160.0225

- 421.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER16': class LinkAnnotation 

-20 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 158 0 R

- /XYZ

- 55

- 622.49

- 0 ]

- /Rect [ 100

- 397.4375

- 197.53

- 408.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER17': class LinkAnnotation 

-21 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 158 0 R

- /XYZ

- 55

- 249.49

- 0 ]

- /Rect [ 100

- 386.1875

- 193.36

- 397.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER18': class LinkAnnotation 

-22 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 162 0 R

- /XYZ

- 55

- 698.7975

- 0 ]

- /Rect [ 85

- 372.9375

- 194.2075

- 384.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER19': class LinkAnnotation 

-23 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 162 0 R

- /XYZ

- 55

- 531.1725

- 0 ]

- /Rect [ 85

- 361.6875

- 157.5325

- 372.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER20': class LinkAnnotation 

-24 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 162 0 R

- /XYZ

- 55

- 105.5475

- 0 ]

- /Rect [ 85

- 350.4375

- 196.285

- 361.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER21': class LinkAnnotation 

-25 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 172 0 R

- /XYZ

- 55

- 678.0475

- 0 ]

- /Rect [ 85

- 339.1875

- 191.7025

- 350.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER22': class LinkAnnotation 

-26 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 172 0 R

- /XYZ

- 55

- 612.99

- 0 ]

- /Rect [ 100

- 325.9375

- 147.94

- 337.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER23': class LinkAnnotation 

-27 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 172 0 R

- /XYZ

- 55

- 494.49

- 0 ]

- /Rect [ 100

- 314.6875

- 161.695

- 325.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER24': class LinkAnnotation 

-28 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 172 0 R

- /XYZ

- 55

- 387.24

- 0 ]

- /Rect [ 100

- 303.4375

- 144.61

- 314.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER25': class LinkAnnotation 

-29 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 172 0 R

- /XYZ

- 55

- 214.24

- 0 ]

- /Rect [ 100

- 292.1875

- 143.3575

- 303.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER26': class LinkAnnotation 

-30 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 172 0 R

- /XYZ

- 55

- 161.49

- 0 ]

- /Rect [ 100

- 280.9375

- 174.1975

- 292.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER27': class LinkAnnotation 

-31 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 177 0 R

- /XYZ

- 55

- 632.6387

- 0 ]

- /Rect [ 70

- 267.6875

- 197.1325

- 278.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER28': class LinkAnnotation 

-32 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 177 0 R

- /XYZ

- 55

- 528.2012

- 0 ]

- /Rect [ 70

- 256.4375

- 159.6025

- 267.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER29': class LinkAnnotation 

-33 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 177 0 R

- /XYZ

- 55

- 444.9225

- 0 ]

- /Rect [ 85

- 243.1875

- 147.5275

- 254.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER30': class LinkAnnotation 

-34 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 177 0 R

- /XYZ

- 55

- 292.5475

- 0 ]

- /Rect [ 85

- 231.9375

- 160.45

- 243.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER31': class LinkAnnotation 

-35 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 178 0 R

- /XYZ

- 55

- 394.7975

- 0 ]

- /Rect [ 85

- 220.6875

- 160.0375

- 231.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER32': class LinkAnnotation 

-36 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 179 0 R

- /XYZ

- 55

- 521.9116

- 0 ]

- /Rect [ 85

- 209.4375

- 155.035

- 220.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER33': class LinkAnnotation 

-37 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 179 0 R

- /XYZ

- 55

- 303.2866

- 0 ]

- /Rect [ 85

- 198.1875

- 147.1225

- 209.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER34': class LinkAnnotation 

-38 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 184 0 R

- /XYZ

- 55

- 517.3887

- 0 ]

- /Rect [ 70

- 184.9375

- 174.1975

- 196.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER35': class LinkAnnotation 

-39 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 184 0 R

- /XYZ

- 55

- 275.7013

- 0 ]

- /Rect [ 70

- 173.6875

- 155.8525

- 184.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER36': class LinkAnnotation 

-40 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 188 0 R

- /XYZ

- 55

- 657.2975

- 0 ]

- /Rect [ 85

- 160.4375

- 170.8675

- 171.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER37': class LinkAnnotation 

-41 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 188 0 R

- /XYZ

- 55

- 580.99

- 0 ]

- /Rect [ 100

- 147.1875

- 195.0475

- 158.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER38': class LinkAnnotation 

-42 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 188 0 R

- /XYZ

- 55

- 279.49

- 0 ]

- /Rect [ 100

- 135.9375

- 171.685

- 147.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER39': class LinkAnnotation 

-43 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 188 0 R

- /XYZ

- 55

- 237.99

- 0 ]

- /Rect [ 100

- 124.6875

- 205.0525

- 135.9375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER40': class LinkAnnotation 

-44 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 188 0 R

- /XYZ

- 55

- 173.99

- 0 ]

- /Rect [ 100

- 113.4375

- 183.3775

- 124.6875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER41': class LinkAnnotation 

-45 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 191 0 R

- /XYZ

- 55

- 710.865

- 0 ]

- /Rect [ 100

- 102.1875

- 201.7075

- 113.4375 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER42': class LinkAnnotation 

-46 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 191 0 R

- /XYZ

- 55

- 504.7975

- 0 ]

- /Rect [ 85

- 88.9375

- 145.03

- 100.1875 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page1': class PDFPage 

-47 0 obj

-% Page dictionary

-<< /Annots [ 5 0 R

- 6 0 R

- 7 0 R

- 8 0 R

- 9 0 R

- 10 0 R

- 11 0 R

- 12 0 R

- 13 0 R

- 14 0 R

- 15 0 R

- 16 0 R

- 17 0 R

- 18 0 R

- 19 0 R

- 20 0 R

- 21 0 R

- 22 0 R

- 23 0 R

- 24 0 R

- 25 0 R

- 26 0 R

- 27 0 R

- 28 0 R

- 29 0 R

- 30 0 R

- 31 0 R

- 32 0 R

- 33 0 R

- 34 0 R

- 35 0 R

- 36 0 R

- 37 0 R

- 38 0 R

- 39 0 R

- 40 0 R

- 41 0 R

- 42 0 R

- 43 0 R

- 44 0 R

- 45 0 R

- 46 0 R ]

- /Contents 321 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ]

- /XObject << /FormXob.294f5b945901682cd975a2767b600f63 3 0 R >> >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER43': class LinkAnnotation 

-48 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 191 0 R

- /XYZ

- 55

- 450.99

- 0 ]

- /Rect [ 100

- 730.6775

- 152.95

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER44': class LinkAnnotation 

-49 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 191 0 R

- /XYZ

- 55

- 313.24

- 0 ]

- /Rect [ 100

- 719.4275

- 192.9625

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER45': class LinkAnnotation 

-50 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 191 0 R

- /XYZ

- 55

- 213.24

- 0 ]

- /Rect [ 100

- 708.1775

- 173.785

- 719.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER46': class LinkAnnotation 

-51 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 191 0 R

- /XYZ

- 55

- 117.24

- 0 ]

- /Rect [ 100

- 696.9275

- 182.545

- 708.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER47': class LinkAnnotation 

-52 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 670.2975

- 0 ]

- /Rect [ 85

- 683.6775

- 127.105

- 694.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER48': class LinkAnnotation 

-53 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 428.24

- 0 ]

- /Rect [ 100

- 670.4275

- 169.195

- 681.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER49': class LinkAnnotation 

-54 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 312.99

- 0 ]

- /Rect [ 100

- 659.1775

- 169.2025

- 670.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER50': class LinkAnnotation 

-55 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 197.74

- 0 ]

- /Rect [ 100

- 647.9275

- 136.69

- 659.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER51': class LinkAnnotation 

-56 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 196 0 R

- /XYZ

- 55

- 144.99

- 0 ]

- /Rect [ 100

- 636.6775

- 157.1125

- 647.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER52': class LinkAnnotation 

-57 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 708.865

- 0 ]

- /Rect [ 100

- 625.4275

- 155.86

- 636.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER53': class LinkAnnotation 

-58 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 633.365

- 0 ]

- /Rect [ 100

- 614.1775

- 165.8575

- 625.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER54': class LinkAnnotation 

-59 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 569.365

- 0 ]

- /Rect [ 100

- 602.9275

- 159.6175

- 614.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER55': class LinkAnnotation 

-60 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 527.865

- 0 ]

- /Rect [ 100

- 591.6775

- 177.5275

- 602.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER56': class LinkAnnotation 

-61 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 451.7975

- 0 ]

- /Rect [ 85

- 578.4275

- 158.365

- 589.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER57': class LinkAnnotation 

-62 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 386.74

- 0 ]

- /Rect [ 100

- 565.1775

- 155.8675

- 576.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER58': class LinkAnnotation 

-63 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 245.74

- 0 ]

- /Rect [ 100

- 553.9275

- 185.035

- 565.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER59': class LinkAnnotation 

-64 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 198 0 R

- /XYZ

- 55

- 192.99

- 0 ]

- /Rect [ 100

- 542.6775

- 152.5375

- 553.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER60': class LinkAnnotation 

-65 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 210 0 R

- /XYZ

- 55

- 742.865

- 0 ]

- /Rect [ 100

- 531.4275

- 213.7825

- 542.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER61': class LinkAnnotation 

-66 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 210 0 R

- /XYZ

- 66.25

- 193.615

- 0 ]

- /Rect [ 100

- 520.1775

- 215.86

- 531.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER62': class LinkAnnotation 

-67 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 213 0 R

- /XYZ

- 66.25

- 745.7975

- 0 ]

- /Rect [ 85

- 506.9275

- 130.015

- 518.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER63': class LinkAnnotation 

-68 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 213 0 R

- /XYZ

- 66.25

- 658.24

- 0 ]

- /Rect [ 100

- 493.6775

- 190.8625

- 504.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER64': class LinkAnnotation 

-69 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 213 0 R

- /XYZ

- 66.25

- 522.49

- 0 ]

- /Rect [ 100

- 482.4275

- 192.115

- 493.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER65': class LinkAnnotation 

-70 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 213 0 R

- /XYZ

- 66.25

- 286.74

- 0 ]

- /Rect [ 100

- 471.1775

- 193.375

- 482.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER66': class LinkAnnotation 

-71 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 214 0 R

- /XYZ

- 66.25

- 633.865

- 0 ]

- /Rect [ 100

- 459.9275

- 186.2875

- 471.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER67': class LinkAnnotation 

-72 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 214 0 R

- /XYZ

- 66.25

- 569.0475

- 0 ]

- /Rect [ 85

- 446.6775

- 169.6225

- 457.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER68': class LinkAnnotation 

-73 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 214 0 R

- /XYZ

- 66.25

- 503.99

- 0 ]

- /Rect [ 100

- 433.4275

- 223.375

- 444.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER69': class LinkAnnotation 

-74 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 214 0 R

- /XYZ

- 66.25

- 332.74

- 0 ]

- /Rect [ 100

- 422.1775

- 212.1475

- 433.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER70': class LinkAnnotation 

-75 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 218 0 R

- /XYZ

- 66.25

- 745.7975

- 0 ]

- /Rect [ 85

- 408.9275

- 115.015

- 420.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER71': class LinkAnnotation 

-76 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 218 0 R

- /XYZ

- 66.25

- 605.7637

- 0 ]

- /Rect [ 70

- 395.6775

- 166.2775

- 406.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER72': class LinkAnnotation 

-77 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 218 0 R

- /XYZ

- 66.25

- 372.0763

- 0 ]

- /Rect [ 70

- 384.4275

- 172.945

- 395.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER73': class LinkAnnotation 

-78 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 218 0 R

- /XYZ

- 66.25

- 277.5475

- 0 ]

- /Rect [ 85

- 371.1775

- 140.4325

- 382.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER74': class LinkAnnotation 

-79 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 218 0 R

- /XYZ

- 66.25

- 200.4225

- 0 ]

- /Rect [ 85

- 359.9275

- 186.295

- 371.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER75': class LinkAnnotation 

-80 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 218 0 R

- /XYZ

- 66.25

- 123.2975

- 0 ]

- /Rect [ 85

- 348.6775

- 178.3525

- 359.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER76': class LinkAnnotation 

-81 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 221 0 R

- /XYZ

- 66.25

- 710.0475

- 0 ]

- /Rect [ 85

- 337.4275

- 212.56

- 348.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER77': class LinkAnnotation 

-82 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 221 0 R

- /XYZ

- 66.25

- 325.5138

- 0 ]

- /Rect [ 70

- 324.1775

- 183.79

- 335.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER78': class LinkAnnotation 

-83 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 221 0 R

- /XYZ

- 66.25

- 210.235

- 0 ]

- /Rect [ 85

- 310.9275

- 182.5375

- 322.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER79': class LinkAnnotation 

-84 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 225 0 R

- /XYZ

- 66.25

- 698.7975

- 0 ]

- /Rect [ 85

- 299.6775

- 144.6025

- 310.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER80': class LinkAnnotation 

-85 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 225 0 R

- /XYZ

- 66.25

- 535.1725

- 0 ]

- /Rect [ 85

- 288.4275

- 180.88

- 299.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER81': class LinkAnnotation 

-86 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 225 0 R

- /XYZ

- 66.25

- 425.3888

- 0 ]

- /Rect [ 70

- 275.1775

- 148.375

- 286.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER82': class LinkAnnotation 

-87 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 225 0 R

- /XYZ

- 66.25

- 198.4513

- 0 ]

- /Rect [ 70

- 263.9275

- 119.605

- 275.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER83': class LinkAnnotation 

-88 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 226 0 R

- /XYZ

- 66.25

- 747.2637

- 0 ]

- /Rect [ 70

- 252.6775

- 200.065

- 263.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page2': class PDFPage 

-89 0 obj

-% Page dictionary

-<< /Annots [ 48 0 R

- 49 0 R

- 50 0 R

- 51 0 R

- 52 0 R

- 53 0 R

- 54 0 R

- 55 0 R

- 56 0 R

- 57 0 R

- 58 0 R

- 59 0 R

- 60 0 R

- 61 0 R

- 62 0 R

- 63 0 R

- 64 0 R

- 65 0 R

- 66 0 R

- 67 0 R

- 68 0 R

- 69 0 R

- 70 0 R

- 71 0 R

- 72 0 R

- 73 0 R

- 74 0 R

- 75 0 R

- 76 0 R

- 77 0 R

- 78 0 R

- 79 0 R

- 80 0 R

- 81 0 R

- 82 0 R

- 83 0 R

- 84 0 R

- 85 0 R

- 86 0 R

- 87 0 R

- 88 0 R ]

- /Contents 322 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER84': class LinkAnnotation 

-90 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 419.365

- 0 ]

- /Rect [ 125.8675

- 663.865

- 170.05

- 675.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER85': class LinkAnnotation 

-91 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 221 0 R

- /XYZ

- 66.25

- 325.5138

- 0 ]

- /Rect [ 237.16

- 579.115

- 272.5975

- 590.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER86': class LinkAnnotation 

-92 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 392.865

- 0 ]

- /Rect [ 401.8075

- 567.865

- 445.99

- 579.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER87': class PDFDictionary 

-93 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.ietf.org/rfc/rfc2119.txt) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 189.625

- 407.1775

- 297.1675

- 418.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER88': class PDFDictionary 

-94 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/index.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 205.45

- 393.9275

- 369.6775

- 405.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER89': class PDFDictionary 

-95 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 167.965

- 380.6775

- 254.6725

- 391.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER90': class PDFDictionary 

-96 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/packages.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 184.2325

- 367.4275

- 363.4825

- 378.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER91': class PDFDictionary 

-97 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/Manifest.permission.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 172.9525

- 354.1775

- 413.8825

- 365.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER92': class PDFDictionary 

-98 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/os/Build.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 157.96

- 340.9275

- 358.885

- 352.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER93': class PDFDictionary 

-99 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/2.3/versions.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 186.715

- 327.6775

- 373.45

- 338.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER94': class PDFDictionary 

-100 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/webkit/WebView.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 171.7

- 314.4275

- 400.96

- 325.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER95': class PDFDictionary 

-101 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.whatwg.org/specs/web-apps/current-work/multipage/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 95.005

- 301.1775

- 307.1575

- 312.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER96': class PDFDictionary 

-102 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://dev.w3.org/html5/spec/Overview.html#offline) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 159.955

- 287.9275

- 327.52

- 299.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER97': class PDFDictionary 

-103 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://dev.w3.org/html5/spec/Overview.html#video) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 131.2

- 274.6775

- 296.68

- 285.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER98': class PDFDictionary 

-104 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.w3.org/TR/geolocation-API/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 172.045

- 261.4275

- 300.8425

- 272.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER99': class PDFDictionary 

-105 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.w3.org/TR/webdatabase/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 178.3

- 248.1775

- 298.765

- 259.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER100': class PDFDictionary 

-106 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.w3.org/TR/IndexedDB/) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 170.7925

- 234.9275

- 283.75

- 246.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER101': class PDFDictionary 

-107 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/ui_guidelines/widget_design.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 114.5275

- 208.4275

- 374.23

- 219.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER102': class PDFDictionary 

-108 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/ui/notifiers/notifications.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 114.94

- 195.1775

- 346.2925

- 206.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER103': class PDFDictionary 

-109 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://code.google.com/android/reference/available-resources.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 148.705

- 181.9275

- 368.8

- 193.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER104': class PDFDictionary 

-110 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/ui_guidelines/icon_design.html#statusbarstructure) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 162.8875

- 168.6775

- 477.1975

- 179.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER105': class PDFDictionary 

-111 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/app/SearchManager.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 129.535

- 155.4275

- 371.7325

- 166.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER106': class PDFDictionary 

-112 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/widget/Toast.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 96.6025

- 142.1775

- 313.3675

- 153.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER107': class PDFDictionary 

-113 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/resources/articles/live-wallpapers.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 127.4425

- 128.9275

- 351.265

- 140.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER108': class PDFDictionary 

-114 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/developing/tools/index.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 245.845

- 115.6775

- 453.865

- 126.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER109': class PDFDictionary 

-115 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/fundamentals.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 164.1325

- 102.4275

- 364.645

- 113.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER110': class PDFDictionary 

-116 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/manifest/manifest-intro.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 117.8575

- 89.1775

- 349.2025

- 100.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page3': class PDFPage 

-117 0 obj

-% Page dictionary

-<< /Annots [ 90 0 R

- 91 0 R

- 92 0 R

- 93 0 R

- 94 0 R

- 95 0 R

- 96 0 R

- 97 0 R

- 98 0 R

- 99 0 R

- 100 0 R

- 101 0 R

- 102 0 R

- 103 0 R

- 104 0 R

- 105 0 R

- 106 0 R

- 107 0 R

- 108 0 R

- 109 0 R

- 110 0 R

- 111 0 R

- 112 0 R

- 113 0 R

- 114 0 R

- 115 0 R

- 116 0 R ]

- /Contents 323 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER111': class PDFDictionary 

-118 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/developing/tools/monkey.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 138.7075

- 730.6775

- 355.06

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER112': class PDFDictionary 

-119 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/content/pm/PackageManager.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 179.965

- 717.4275

- 452.1775

- 728.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER113': class PDFDictionary 

-120 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/practices/screens_support.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 167.8825

- 704.1775

- 389.23

- 715.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER114': class PDFDictionary 

-121 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/util/DisplayMetrics.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 161.6125

- 690.9275

- 396.28

- 702.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER115': class PDFDictionary 

-122 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/content/res/Configuration.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 184.9825

- 677.6775

- 443.02

- 688.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER116': class PDFDictionary 

-123 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/SensorEvent.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 157.0525

- 664.4275

- 407.5825

- 675.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER117': class PDFDictionary 

-124 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/bluetooth/package-summary.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 119.9575

- 651.1775

- 388.825

- 662.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER118': class PDFDictionary 

-125 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://source.android.com/compatibility/ndef-push-protocol.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 143.2825

- 637.9275

- 348.37

- 649.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER119': class PDFDictionary 

-126 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.nxp.com/documents/data_sheet/MF1S503x.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 142.03

- 624.6775

- 336.2875

- 635.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER120': class PDFDictionary 

-127 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.nxp.com/documents/data_sheet/MF1S703x.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 142.03

- 611.4275

- 336.2875

- 622.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER121': class PDFDictionary 

-128 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 136.6

- 598.1775

- 326.68

- 609.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER122': class PDFDictionary 

-129 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 136.6

- 584.9275

- 367.1125

- 596.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER123': class PDFDictionary 

-130 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.nxp.com/documents/application_note/AN130511.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 139.9525

- 571.6775

- 350.89

- 582.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER124': class PDFDictionary 

-131 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://www.nxp.com/documents/application_note/AN130411.pdf) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 139.9525

- 558.4275

- 350.89

- 569.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER125': class PDFDictionary 

-132 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation\(int\)) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 152.0425

- 545.1775

- 474.6625

- 556.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER126': class PDFDictionary 

-133 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/reference/android/hardware/Camera.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 161.2075

- 531.9275

- 395.47

- 543.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER127': class PDFDictionary 

-134 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://developer.android.com/guide/topics/security/security.html) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 220.3975

- 518.6775

- 429.6475

- 529.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER128': class PDFDictionary 

-135 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (http://code.google.com/p/apps-for-android) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 129.955

- 505.4275

- 269.1925

- 516.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER129': class LinkAnnotation 

-136 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 379.615

- 0 ]

- /Rect [ 460.615

- 290.115

- 504.7975

- 301.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER130': class LinkAnnotation 

-137 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 366.365

- 0 ]

- /Rect [ 470.995

- 107.49

- 515.1775

- 118.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page4': class PDFPage 

-138 0 obj

-% Page dictionary

-<< /Annots [ 118 0 R

- 119 0 R

- 120 0 R

- 121 0 R

- 122 0 R

- 123 0 R

- 124 0 R

- 125 0 R

- 126 0 R

- 127 0 R

- 128 0 R

- 129 0 R

- 130 0 R

- 131 0 R

- 132 0 R

- 133 0 R

- 134 0 R

- 135 0 R

- 136 0 R

- 137 0 R ]

- /Contents 324 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'F3': class PDFType1Font 

-139 0 obj

-% Font Courier

-<< /BaseFont /Courier

- /Encoding /WinAnsiEncoding

- /Name /F3

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER131': class LinkAnnotation 

-140 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 353.115

- 0 ]

- /Rect [ 336.2725

- 709.9275

- 380.455

- 721.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F4': class PDFType1Font 

-141 0 obj

-% Font Times-Roman

-<< /BaseFont /Times-Roman

- /Encoding /WinAnsiEncoding

- /Name /F4

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER132': class LinkAnnotation 

-142 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 339.865

- 0 ]

- /Rect [ 350.19

- 633.9275

- 394.3725

- 645.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page5': class PDFPage 

-143 0 obj

-% Page dictionary

-<< /Annots [ 140 0 R

- 142 0 R ]

- /Contents 325 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page6': class PDFPage 

-144 0 obj

-% Page dictionary

-<< /Contents 326 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page7': class PDFPage 

-145 0 obj

-% Page dictionary

-<< /Contents 327 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER133': class LinkAnnotation 

-146 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 326.615

- 0 ]

- /Rect [ 381.61

- 664.8025

- 425.7925

- 676.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER134': class LinkAnnotation 

-147 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 313.365

- 0 ]

- /Rect [ 307.5925

- 391.8025

- 351.775

- 403.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER135': class LinkAnnotation 

-148 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 300.115

- 0 ]

- /Rect [ 183.8125

- 359.8025

- 232.165

- 371.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER136': class LinkAnnotation 

-149 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 286.865

- 0 ]

- /Rect [ 122.125

- 346.5525

- 170.4775

- 357.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER137': class LinkAnnotation 

-150 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 273.615

- 0 ]

- /Rect [ 108.775

- 333.3025

- 157.1275

- 344.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER138': class LinkAnnotation 

-151 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 260.365

- 0 ]

- /Rect [ 343.435

- 312.5525

- 391.7875

- 323.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F5': class PDFType1Font 

-152 0 obj

-% Font Helvetica-Oblique

-<< /BaseFont /Helvetica-Oblique

- /Encoding /WinAnsiEncoding

- /Name /F5

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER139': class LinkAnnotation 

-153 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 247.115

- 0 ]

- /Rect [ 110.4475

- 301.3025

- 158.8

- 312.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER140': class LinkAnnotation 

-154 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 313.365

- 0 ]

- /Rect [ 160.4575

- 141.3025

- 204.64

- 152.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER141': class LinkAnnotation 

-155 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 300.115

- 0 ]

- /Rect [ 183.8125

- 109.3025

- 232.165

- 120.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER142': class LinkAnnotation 

-156 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 286.865

- 0 ]

- /Rect [ 122.125

- 96.0525

- 170.4775

- 107.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER143': class LinkAnnotation 

-157 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 273.615

- 0 ]

- /Rect [ 108.775

- 82.8025

- 157.1275

- 94.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page8': class PDFPage 

-158 0 obj

-% Page dictionary

-<< /Annots [ 146 0 R

- 147 0 R

- 148 0 R

- 149 0 R

- 150 0 R

- 151 0 R

- 153 0 R

- 154 0 R

- 155 0 R

- 156 0 R

- 157 0 R ]

- /Contents 328 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER144': class LinkAnnotation 

-159 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 260.365

- 0 ]

- /Rect [ 343.435

- 730.6775

- 391.7875

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER145': class LinkAnnotation 

-160 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 247.115

- 0 ]

- /Rect [ 110.4475

- 719.4275

- 158.8

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER146': class LinkAnnotation 

-161 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 392.865

- 0 ]

- /Rect [ 125.4475

- 642.3025

- 169.63

- 653.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page9': class PDFPage 

-162 0 obj

-% Page dictionary

-<< /Annots [ 159 0 R

- 160 0 R

- 161 0 R ]

- /Contents 329 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER147': class LinkAnnotation 

-163 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 233.865

- 0 ]

- /Rect [ 500.1475

- 730.6775

- 548.5

- 741.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER148': class LinkAnnotation 

-164 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 220.615

- 0 ]

- /Rect [ 515.1475

- 580.0525

- 553.075

- 591.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER149': class LinkAnnotation 

-165 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 220.615

- 0 ]

- /Rect [ 55

- 568.8025

- 63.34

- 580.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER150': class LinkAnnotation 

-166 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 207.365

- 0 ]

- /Rect [ 313.045

- 461.5525

- 361.3975

- 472.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER151': class LinkAnnotation 

-167 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 194.115

- 0 ]

- /Rect [ 448.06

- 429.5525

- 496.4125

- 440.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER152': class LinkAnnotation 

-168 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 180.865

- 0 ]

- /Rect [ 124.615

- 418.3025

- 172.9675

- 429.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER153': class LinkAnnotation 

-169 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 167.615

- 0 ]

- /Rect [ 132.535

- 354.3025

- 180.8875

- 365.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER154': class LinkAnnotation 

-170 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 154.365

- 0 ]

- /Rect [ 217.9075

- 181.3025

- 266.26

- 192.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER155': class LinkAnnotation 

-171 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 141.115

- 0 ]

- /Rect [ 73.7575

- 117.3025

- 122.11

- 128.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page10': class PDFPage 

-172 0 obj

-% Page dictionary

-<< /Annots [ 163 0 R

- 164 0 R

- 165 0 R

- 166 0 R

- 167 0 R

- 168 0 R

- 169 0 R

- 170 0 R

- 171 0 R ]

- /Contents 330 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER156': class LinkAnnotation 

-173 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 127.865

- 0 ]

- /Rect [ 499.5925

- 581.24

- 547.945

- 592.49 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER157': class LinkAnnotation 

-174 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 114.615

- 0 ]

- /Rect [ 257.9875

- 560.49

- 306.34

- 571.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER158': class LinkAnnotation 

-175 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 101.365

- 0 ]

- /Rect [ 373.0375

- 560.49

- 421.39

- 571.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER159': class LinkAnnotation 

-176 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 233.865

- 0 ]

- /Rect [ 493.5025

- 560.49

- 541.855

- 571.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page11': class PDFPage 

-177 0 obj

-% Page dictionary

-<< /Annots [ 173 0 R

- 174 0 R

- 175 0 R

- 176 0 R ]

- /Contents 331 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page12': class PDFPage 

-178 0 obj

-% Page dictionary

-<< /Contents 332 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page13': class PDFPage 

-179 0 obj

-% Page dictionary

-<< /Contents 333 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER160': class LinkAnnotation 

-180 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 378.895

- 538.4275

- 427.2475

- 549.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER161': class LinkAnnotation 

-181 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 127.865

- 0 ]

- /Rect [ 207.1

- 433.99

- 255.4525

- 445.24 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER162': class LinkAnnotation 

-182 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 69.925

- 127.865

- 0 ]

- /Rect [ 239.6275

- 398.24

- 287.98

- 409.49 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER163': class LinkAnnotation 

-183 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 742.865

- 0 ]

- /Rect [ 98.3425

- 362.49

- 146.695

- 373.74 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page14': class PDFPage 

-184 0 obj

-% Page dictionary

-<< /Annots [ 180 0 R

- 181 0 R

- 182 0 R

- 183 0 R ]

- /Contents 334 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER164': class LinkAnnotation 

-185 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 392.7925

- 666.6775

- 441.145

- 677.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER165': class LinkAnnotation 

-186 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 716.365

- 0 ]

- /Rect [ 258.0025

- 600.8025

- 306.355

- 612.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER166': class LinkAnnotation 

-187 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 703.115

- 0 ]

- /Rect [ 462.835

- 246.5525

- 511.1875

- 257.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page15': class PDFPage 

-188 0 obj

-% Page dictionary

-<< /Annots [ 185 0 R

- 186 0 R

- 187 0 R ]

- /Contents 335 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER167': class LinkAnnotation 

-189 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 689.865

- 0 ]

- /Rect [ 259.42

- 321.8025

- 307.7725

- 333.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER168': class LinkAnnotation 

-190 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 689.865

- 0 ]

- /Rect [ 381.79

- 246.3025

- 430.1425

- 257.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page16': class PDFPage 

-191 0 obj

-% Page dictionary

-<< /Annots [ 189 0 R

- 190 0 R ]

- /Contents 336 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER169': class LinkAnnotation 

-192 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 689.865

- 0 ]

- /Rect [ 304.7875

- 704.1775

- 353.14

- 715.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER170': class LinkAnnotation 

-193 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 468.19

- 581.8025

- 516.5425

- 593.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER171': class LinkAnnotation 

-194 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 676.615

- 0 ]

- /Rect [ 382.21

- 361.3025

- 430.5625

- 372.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER172': class LinkAnnotation 

-195 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 676.615

- 0 ]

- /Rect [ 382.21

- 246.0525

- 430.5625

- 257.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page17': class PDFPage 

-196 0 obj

-% Page dictionary

-<< /Annots [ 192 0 R

- 193 0 R

- 194 0 R

- 195 0 R ]

- /Contents 337 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER173': class LinkAnnotation 

-197 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 663.365

- 0 ]

- /Rect [ 297.6025

- 148.8025

- 345.955

- 160.0525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page18': class PDFPage 

-198 0 obj

-% Page dictionary

-<< /Annots [ 197 0 R ]

- /Contents 338 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER174': class LinkAnnotation 

-199 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 68.335

- 666.6775

- 116.6875

- 677.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER175': class LinkAnnotation 

-200 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 650.115

- 0 ]

- /Rect [ 162.1075

- 483.1775

- 210.46

- 494.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER176': class LinkAnnotation 

-201 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 636.865

- 0 ]

- /Rect [ 194.605

- 394.4275

- 242.9575

- 405.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER177': class LinkAnnotation 

-202 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 623.615

- 0 ]

- /Rect [ 289.645

- 394.4275

- 337.9975

- 405.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER178': class LinkAnnotation 

-203 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 610.365

- 0 ]

- /Rect [ 195.85

- 381.1775

- 244.2025

- 392.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER179': class LinkAnnotation 

-204 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 597.115

- 0 ]

- /Rect [ 286.7125

- 381.1775

- 335.065

- 392.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER180': class LinkAnnotation 

-205 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 583.865

- 0 ]

- /Rect [ 226.705

- 367.9275

- 275.0575

- 379.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER181': class LinkAnnotation 

-206 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 570.615

- 0 ]

- /Rect [ 320.92

- 367.9275

- 369.2725

- 379.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER182': class LinkAnnotation 

-207 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 510.745

- 313.1775

- 548.6725

- 324.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER183': class LinkAnnotation 

-208 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 77.5

- 301.9275

- 85.84

- 313.1775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER184': class LinkAnnotation 

-209 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 729.615

- 0 ]

- /Rect [ 331.5175

- 245.4275

- 379.87

- 256.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page19': class PDFPage 

-210 0 obj

-% Page dictionary

-<< /Annots [ 199 0 R

- 200 0 R

- 201 0 R

- 202 0 R

- 203 0 R

- 204 0 R

- 205 0 R

- 206 0 R

- 207 0 R

- 208 0 R

- 209 0 R ]

- /Contents 339 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER185': class LinkAnnotation 

-211 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 557.365

- 0 ]

- /Rect [ 304.42

- 357.5525

- 352.7725

- 368.8025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER186': class LinkAnnotation 

-212 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 544.115

- 0 ]

- /Rect [ 436.81

- 107.0525

- 485.1625

- 118.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page20': class PDFPage 

-213 0 obj

-% Page dictionary

-<< /Annots [ 211 0 R

- 212 0 R ]

- /Contents 340 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page21': class PDFPage 

-214 0 obj

-% Page dictionary

-<< /Contents 341 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER187': class LinkAnnotation 

-215 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 530.865

- 0 ]

- /Rect [ 218.395

- 309.4275

- 266.7475

- 320.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER188': class LinkAnnotation 

-216 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 530.865

- 0 ]

- /Rect [ 476.8375

- 232.3025

- 525.19

- 243.5525 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER189': class LinkAnnotation 

-217 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 530.865

- 0 ]

- /Rect [ 369.7225

- 132.6775

- 418.075

- 143.9275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page22': class PDFPage 

-218 0 obj

-% Page dictionary

-<< /Annots [ 215 0 R

- 216 0 R

- 217 0 R ]

- /Contents 342 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER190': class LinkAnnotation 

-219 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 530.865

- 0 ]

- /Rect [ 102.1

- 719.4275

- 150.4525

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER191': class LinkAnnotation 

-220 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 406.115

- 0 ]

- /Rect [ 334.66

- 164.99

- 378.8425

- 176.24 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page23': class PDFPage 

-221 0 obj

-% Page dictionary

-<< /Annots [ 219 0 R

- 220 0 R ]

- /Contents 343 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Annot.NUMBER192': class LinkAnnotation 

-222 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 117 0 R

- /XYZ

- 66.25

- 406.115

- 0 ]

- /Rect [ 326.365

- 719.4275

- 370.5475

- 730.6775 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER193': class LinkAnnotation 

-223 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 138 0 R

- /XYZ

- 69.925

- 517.615

- 0 ]

- /Rect [ 199.5475

- 469.1775

- 247.9

- 480.4275 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER194': class PDFDictionary 

-224 0 obj

-<< /A << /S /URI

- /Type /Action

- /URI (mailto:compatibility@android.com) >>

- /Border [ 0

- 0

- 0 ]

- /Rect [ 205.0825

- 147.0525

- 295.2175

- 158.3025 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Page24': class PDFPage 

-225 0 obj

-% Page dictionary

-<< /Annots [ 222 0 R

- 223 0 R

- 224 0 R ]

- /Contents 344 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page25': class PDFPage 

-226 0 obj

-% Page dictionary

-<< /Contents 345 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page26': class PDFPage 

-227 0 obj

-% Page dictionary

-<< /Contents 346 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 320 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'R228': class PDFCatalog 

-228 0 obj

-% Document Root

-<< /Outlines 230 0 R

- /PageMode /UseNone

- /Pages 320 0 R

- /Type /Catalog >>

-endobj

-% 'R229': class PDFInfo 

-229 0 obj

-<< /Author ()

- /CreationDate (D:20110222144351+08'00')

- /Keywords ()

- /Producer (pisa HTML to PDF <http://www.htmltopdf.org>)

- /Subject ()

- /Title (Android 2.3 Compatibility Definition) >>

-endobj

-% 'R230': class PDFOutlines 

-230 0 obj

-<< /Count 17

- /First 231 0 R

- /Last 231 0 R

- /Type /Outlines >>

-endobj

-% 'Outline.0': class OutlineEntryObject 

-231 0 obj

-<< /Count -14

- /Dest [ 47 0 R

- /Fit ]

- /First 232 0 R

- /Last 314 0 R

- /Parent 230 0 R

- /Title (Android 2.3 Compatibility Definition) >>

-endobj

-% 'Outline.2.0': class OutlineEntryObject 

-232 0 obj

-<< /Dest [ 47 0 R

- /Fit ]

- /Next 233 0 R

- /Parent 231 0 R

- /Title (Table of Contents) >>

-endobj

-% 'Outline.2.1': class OutlineEntryObject 

-233 0 obj

-<< /Dest [ 117 0 R

- /Fit ]

- /Next 234 0 R

- /Parent 231 0 R

- /Prev 232 0 R

- /Title (1. Introduction) >>

-endobj

-% 'Outline.2.2': class OutlineEntryObject 

-234 0 obj

-<< /Dest [ 117 0 R

- /Fit ]

- /Next 235 0 R

- /Parent 231 0 R

- /Prev 233 0 R

- /Title (2. Resources) >>

-endobj

-% 'Outline.2.3': class OutlineEntryObject 

-235 0 obj

-<< /Count -8

- /Dest [ 138 0 R

- /Fit ]

- /First 236 0 R

- /Last 252 0 R

- /Next 258 0 R

- /Parent 231 0 R

- /Prev 234 0 R

- /Title (3. Software) >>

-endobj

-% 'Outline.3.0': class OutlineEntryObject 

-236 0 obj

-<< /Dest [ 138 0 R

- /Fit ]

- /Next 237 0 R

- /Parent 235 0 R

- /Title (3.1. Managed API Compatibility) >>

-endobj

-% 'Outline.3.1': class OutlineEntryObject 

-237 0 obj

-<< /Count -7

- /Dest [ 138 0 R

- /Fit ]

- /First 238 0 R

- /Last 244 0 R

- /Next 245 0 R

- /Parent 235 0 R

- /Prev 236 0 R

- /Title (3.2. Soft API Compatibility) >>

-endobj

-% 'Outline.4.0': class OutlineEntryObject 

-238 0 obj

-<< /Dest [ 138 0 R

- /Fit ]

- /Next 239 0 R

- /Parent 237 0 R

- /Title (3.2.1. Permissions) >>

-endobj

-% 'Outline.4.1': class OutlineEntryObject 

-239 0 obj

-<< /Dest [ 143 0 R

- /Fit ]

- /Next 240 0 R

- /Parent 237 0 R

- /Prev 238 0 R

- /Title (3.2.2. Build Parameters) >>

-endobj

-% 'Outline.4.2': class OutlineEntryObject 

-240 0 obj

-<< /Dest [ 144 0 R

- /Fit ]

- /Next 241 0 R

- /Parent 237 0 R

- /Prev 239 0 R

- /Title (3.2.3. Intent Compatibility) >>

-endobj

-% 'Outline.4.3': class OutlineEntryObject 

-241 0 obj

-<< /Dest [ 144 0 R

- /Fit ]

- /Next 242 0 R

- /Parent 237 0 R

- /Prev 240 0 R

- /Title (3.2.3.1. Core Application Intents) >>

-endobj

-% 'Outline.4.4': class OutlineEntryObject 

-242 0 obj

-<< /Dest [ 144 0 R

- /Fit ]

- /Next 243 0 R

- /Parent 237 0 R

- /Prev 241 0 R

- /Title (3.2.3.2. Intent Overrides) >>

-endobj

-% 'Outline.4.5': class OutlineEntryObject 

-243 0 obj

-<< /Dest [ 145 0 R

- /Fit ]

- /Next 244 0 R

- /Parent 237 0 R

- /Prev 242 0 R

- /Title (3.2.3.3. Intent Namespaces) >>

-endobj

-% 'Outline.4.6': class OutlineEntryObject 

-244 0 obj

-<< /Dest [ 145 0 R

- /Fit ]

- /Parent 237 0 R

- /Prev 243 0 R

- /Title (3.2.3.4. Broadcast Intents) >>

-endobj

-% 'Outline.3.2': class OutlineEntryObject 

-245 0 obj

-<< /Dest [ 145 0 R

- /Fit ]

- /Next 246 0 R

- /Parent 235 0 R

- /Prev 237 0 R

- /Title (3.3. Native API Compatibility) >>

-endobj

-% 'Outline.3.3': class OutlineEntryObject 

-246 0 obj

-<< /Count -2

- /Dest [ 158 0 R

- /Fit ]

- /First 247 0 R

- /Last 248 0 R

- /Next 249 0 R

- /Parent 235 0 R

- /Prev 245 0 R

- /Title (3.4. Web Compatibility) >>

-endobj

-% 'Outline.5.0': class OutlineEntryObject 

-247 0 obj

-<< /Dest [ 158 0 R

- /Fit ]

- /Next 248 0 R

- /Parent 246 0 R

- /Title (3.4.1. WebView Compatibility) >>

-endobj

-% 'Outline.5.1': class OutlineEntryObject 

-248 0 obj

-<< /Dest [ 158 0 R

- /Fit ]

- /Parent 246 0 R

- /Prev 247 0 R

- /Title (3.4.2. Browser Compatibility) >>

-endobj

-% 'Outline.3.4': class OutlineEntryObject 

-249 0 obj

-<< /Dest [ 162 0 R

- /Fit ]

- /Next 250 0 R

- /Parent 235 0 R

- /Prev 246 0 R

- /Title (3.5. API Behavioral Compatibility) >>

-endobj

-% 'Outline.3.5': class OutlineEntryObject 

-250 0 obj

-<< /Dest [ 162 0 R

- /Fit ]

- /Next 251 0 R

- /Parent 235 0 R

- /Prev 249 0 R

- /Title (3.6. API Namespaces) >>

-endobj

-% 'Outline.3.6': class OutlineEntryObject 

-251 0 obj

-<< /Dest [ 162 0 R

- /Fit ]

- /Next 252 0 R

- /Parent 235 0 R

- /Prev 250 0 R

- /Title (3.7. Virtual Machine Compatibility) >>

-endobj

-% 'Outline.3.7': class OutlineEntryObject 

-252 0 obj

-<< /Count -5

- /Dest [ 172 0 R

- /Fit ]

- /First 253 0 R

- /Last 257 0 R

- /Parent 235 0 R

- /Prev 251 0 R

- /Title (3.8. User Interface Compatibility) >>

-endobj

-% 'Outline.6.0': class OutlineEntryObject 

-253 0 obj

-<< /Dest [ 172 0 R

- /Fit ]

- /Next 254 0 R

- /Parent 252 0 R

- /Title (3.8.1. Widgets) >>

-endobj

-% 'Outline.6.1': class OutlineEntryObject 

-254 0 obj

-<< /Dest [ 172 0 R

- /Fit ]

- /Next 255 0 R

- /Parent 252 0 R

- /Prev 253 0 R

- /Title (3.8.2. Notifications) >>

-endobj

-% 'Outline.6.2': class OutlineEntryObject 

-255 0 obj

-<< /Dest [ 172 0 R

- /Fit ]

- /Next 256 0 R

- /Parent 252 0 R

- /Prev 254 0 R

- /Title (3.8.3. Search) >>

-endobj

-% 'Outline.6.3': class OutlineEntryObject 

-256 0 obj

-<< /Dest [ 172 0 R

- /Fit ]

- /Next 257 0 R

- /Parent 252 0 R

- /Prev 255 0 R

- /Title (3.8.4. Toasts) >>

-endobj

-% 'Outline.6.4': class OutlineEntryObject 

-257 0 obj

-<< /Dest [ 172 0 R

- /Fit ]

- /Parent 252 0 R

- /Prev 256 0 R

- /Title (3.8.5. Live Wallpapers) >>

-endobj

-% 'Outline.2.4': class OutlineEntryObject 

-258 0 obj

-<< /Dest [ 177 0 R

- /Fit ]

- /Next 259 0 R

- /Parent 231 0 R

- /Prev 235 0 R

- /Title (4. Application Packaging Compatibility) >>

-endobj

-% 'Outline.2.5': class OutlineEntryObject 

-259 0 obj

-<< /Count -5

- /Dest [ 177 0 R

- /Fit ]

- /First 260 0 R

- /Last 264 0 R

- /Next 265 0 R

- /Parent 231 0 R

- /Prev 258 0 R

- /Title (5. Multimedia Compatibility) >>

-endobj

-% 'Outline.7.0': class OutlineEntryObject 

-260 0 obj

-<< /Dest [ 177 0 R

- /Fit ]

- /Next 261 0 R

- /Parent 259 0 R

- /Title (5.1. Media Codecs) >>

-endobj

-% 'Outline.7.1': class OutlineEntryObject 

-261 0 obj

-<< /Dest [ 177 0 R

- /Fit ]

- /Next 262 0 R

- /Parent 259 0 R

- /Prev 260 0 R

- /Title (5.1.1. Media Decoders) >>

-endobj

-% 'Outline.7.2': class OutlineEntryObject 

-262 0 obj

-<< /Dest [ 178 0 R

- /Fit ]

- /Next 263 0 R

- /Parent 259 0 R

- /Prev 261 0 R

- /Title (5.1.2. Media Encoders) >>

-endobj

-% 'Outline.7.3': class OutlineEntryObject 

-263 0 obj

-<< /Dest [ 179 0 R

- /Fit ]

- /Next 264 0 R

- /Parent 259 0 R

- /Prev 262 0 R

- /Title (5.2. Audio Recording) >>

-endobj

-% 'Outline.7.4': class OutlineEntryObject 

-264 0 obj

-<< /Dest [ 179 0 R

- /Fit ]

- /Parent 259 0 R

- /Prev 263 0 R

- /Title (5.3. Audio Latency) >>

-endobj

-% 'Outline.2.6': class OutlineEntryObject 

-265 0 obj

-<< /Dest [ 184 0 R

- /Fit ]

- /Next 266 0 R

- /Parent 231 0 R

- /Prev 259 0 R

- /Title (6. Developer Tool Compatibility) >>

-endobj

-% 'Outline.2.7': class OutlineEntryObject 

-266 0 obj

-<< /Count -7

- /Dest [ 184 0 R

- /Fit ]

- /First 267 0 R

- /Last 301 0 R

- /Next 302 0 R

- /Parent 231 0 R

- /Prev 265 0 R

- /Title (7. Hardware Compatibility) >>

-endobj

-% 'Outline.8.0': class OutlineEntryObject 

-267 0 obj

-<< /Count -5

- /Dest [ 188 0 R

- /Fit ]

- /First 268 0 R

- /Last 272 0 R

- /Next 273 0 R

- /Parent 266 0 R

- /Title (7.1. Display and Graphics) >>

-endobj

-% 'Outline.9.0': class OutlineEntryObject 

-268 0 obj

-<< /Dest [ 188 0 R

- /Fit ]

- /Next 269 0 R

- /Parent 267 0 R

- /Title (7.1.1. Screen Configurations) >>

-endobj

-% 'Outline.9.1': class OutlineEntryObject 

-269 0 obj

-<< /Dest [ 188 0 R

- /Fit ]

- /Next 270 0 R

- /Parent 267 0 R

- /Prev 268 0 R

- /Title (7.1.2. Display Metrics) >>

-endobj

-% 'Outline.9.2': class OutlineEntryObject 

-270 0 obj

-<< /Dest [ 188 0 R

- /Fit ]

- /Next 271 0 R

- /Parent 267 0 R

- /Prev 269 0 R

- /Title (7.1.3. Declared Screen Support) >>

-endobj

-% 'Outline.9.3': class OutlineEntryObject 

-271 0 obj

-<< /Dest [ 188 0 R

- /Fit ]

- /Next 272 0 R

- /Parent 267 0 R

- /Prev 270 0 R

- /Title (7.1.4. Screen Orientation) >>

-endobj

-% 'Outline.9.4': class OutlineEntryObject 

-272 0 obj

-<< /Dest [ 191 0 R

- /Fit ]

- /Parent 267 0 R

- /Prev 271 0 R

- /Title (7.1.5. 3D Graphics Acceleration) >>

-endobj

-% 'Outline.8.1': class OutlineEntryObject 

-273 0 obj

-<< /Count -4

- /Dest [ 191 0 R

- /Fit ]

- /First 274 0 R

- /Last 277 0 R

- /Next 278 0 R

- /Parent 266 0 R

- /Prev 267 0 R

- /Title (7.2. Input Devices) >>

-endobj

-% 'Outline.10.0': class OutlineEntryObject 

-274 0 obj

-<< /Dest [ 191 0 R

- /Fit ]

- /Next 275 0 R

- /Parent 273 0 R

- /Title (7.2.1. Keyboard) >>

-endobj

-% 'Outline.10.1': class OutlineEntryObject 

-275 0 obj

-<< /Dest [ 191 0 R

- /Fit ]

- /Next 276 0 R

- /Parent 273 0 R

- /Prev 274 0 R

- /Title (7.2.2. Non-touch Navigation) >>

-endobj

-% 'Outline.10.2': class OutlineEntryObject 

-276 0 obj

-<< /Dest [ 191 0 R

- /Fit ]

- /Next 277 0 R

- /Parent 273 0 R

- /Prev 275 0 R

- /Title (7.2.3. Navigation keys) >>

-endobj

-% 'Outline.10.3': class OutlineEntryObject 

-277 0 obj

-<< /Dest [ 191 0 R

- /Fit ]

- /Parent 273 0 R

- /Prev 276 0 R

- /Title (7.2.4. Touchscreen input) >>

-endobj

-% 'Outline.8.2': class OutlineEntryObject 

-278 0 obj

-<< /Count -8

- /Dest [ 196 0 R

- /Fit ]

- /First 279 0 R

- /Last 286 0 R

- /Next 287 0 R

- /Parent 266 0 R

- /Prev 273 0 R

- /Title (7.3. Sensors) >>

-endobj

-% 'Outline.11.0': class OutlineEntryObject 

-279 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 280 0 R

- /Parent 278 0 R

- /Title (7.3.1. Accelerometer) >>

-endobj

-% 'Outline.11.1': class OutlineEntryObject 

-280 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 281 0 R

- /Parent 278 0 R

- /Prev 279 0 R

- /Title (7.3.2. Magnetometer) >>

-endobj

-% 'Outline.11.2': class OutlineEntryObject 

-281 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 282 0 R

- /Parent 278 0 R

- /Prev 280 0 R

- /Title (7.3.3. GPS) >>

-endobj

-% 'Outline.11.3': class OutlineEntryObject 

-282 0 obj

-<< /Dest [ 196 0 R

- /Fit ]

- /Next 283 0 R

- /Parent 278 0 R

- /Prev 281 0 R

- /Title (7.3.4. Gyroscope) >>

-endobj

-% 'Outline.11.4': class OutlineEntryObject 

-283 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Next 284 0 R

- /Parent 278 0 R

- /Prev 282 0 R

- /Title (7.3.5. Barometer) >>

-endobj

-% 'Outline.11.5': class OutlineEntryObject 

-284 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Next 285 0 R

- /Parent 278 0 R

- /Prev 283 0 R

- /Title (7.3.7. Thermometer) >>

-endobj

-% 'Outline.11.6': class OutlineEntryObject 

-285 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Next 286 0 R

- /Parent 278 0 R

- /Prev 284 0 R

- /Title (7.3.7. Photometer) >>

-endobj

-% 'Outline.11.7': class OutlineEntryObject 

-286 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Parent 278 0 R

- /Prev 285 0 R

- /Title (7.3.8. Proximity Sensor) >>

-endobj

-% 'Outline.8.3': class OutlineEntryObject 

-287 0 obj

-<< /Count -5

- /Dest [ 198 0 R

- /Fit ]

- /First 288 0 R

- /Last 292 0 R

- /Next 293 0 R

- /Parent 266 0 R

- /Prev 278 0 R

- /Title (7.4. Data Connectivity) >>

-endobj

-% 'Outline.12.0': class OutlineEntryObject 

-288 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Next 289 0 R

- /Parent 287 0 R

- /Title (7.4.1. Telephony) >>

-endobj

-% 'Outline.12.1': class OutlineEntryObject 

-289 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Next 290 0 R

- /Parent 287 0 R

- /Prev 288 0 R

- /Title (7.4.2. IEEE 802.11 \(WiFi\)) >>

-endobj

-% 'Outline.12.2': class OutlineEntryObject 

-290 0 obj

-<< /Dest [ 198 0 R

- /Fit ]

- /Next 291 0 R

- /Parent 287 0 R

- /Prev 289 0 R

- /Title (7.4.3. Bluetooth) >>

-endobj

-% 'Outline.12.3': class OutlineEntryObject 

-291 0 obj

-<< /Dest [ 210 0 R

- /Fit ]

- /Next 292 0 R

- /Parent 287 0 R

- /Prev 290 0 R

- /Title (7.4.4. Near-Field Communications) >>

-endobj

-% 'Outline.12.4': class OutlineEntryObject 

-292 0 obj

-<< /Dest [ 210 0 R

- /Fit ]

- /Parent 287 0 R

- /Prev 291 0 R

- /Title (7.4.5. Minimum Network Capability) >>

-endobj

-% 'Outline.8.4': class OutlineEntryObject 

-293 0 obj

-<< /Count -4

- /Dest [ 213 0 R

- /Fit ]

- /First 294 0 R

- /Last 297 0 R

- /Next 298 0 R

- /Parent 266 0 R

- /Prev 287 0 R

- /Title (7.5. Cameras) >>

-endobj

-% 'Outline.13.0': class OutlineEntryObject 

-294 0 obj

-<< /Dest [ 213 0 R

- /Fit ]

- /Next 295 0 R

- /Parent 293 0 R

- /Title (7.5.1. Rear-Facing Camera) >>

-endobj

-% 'Outline.13.1': class OutlineEntryObject 

-295 0 obj

-<< /Dest [ 213 0 R

- /Fit ]

- /Next 296 0 R

- /Parent 293 0 R

- /Prev 294 0 R

- /Title (7.5.2. Front-Facing Camera) >>

-endobj

-% 'Outline.13.2': class OutlineEntryObject 

-296 0 obj

-<< /Dest [ 213 0 R

- /Fit ]

- /Next 297 0 R

- /Parent 293 0 R

- /Prev 295 0 R

- /Title (7.5.3. Camera API Behavior) >>

-endobj

-% 'Outline.13.3': class OutlineEntryObject 

-297 0 obj

-<< /Dest [ 214 0 R

- /Fit ]

- /Parent 293 0 R

- /Prev 296 0 R

- /Title (7.5.4. Camera Orientation) >>

-endobj

-% 'Outline.8.5': class OutlineEntryObject 

-298 0 obj

-<< /Count -2

- /Dest [ 214 0 R

- /Fit ]

- /First 299 0 R

- /Last 300 0 R

- /Next 301 0 R

- /Parent 266 0 R

- /Prev 293 0 R

- /Title (7.6. Memory and Storage) >>

-endobj

-% 'Outline.14.0': class OutlineEntryObject 

-299 0 obj

-<< /Dest [ 214 0 R

- /Fit ]

- /Next 300 0 R

- /Parent 298 0 R

- /Title (7.6.1. Minimum Memory and Storage) >>

-endobj

-% 'Outline.14.1': class OutlineEntryObject 

-300 0 obj

-<< /Dest [ 214 0 R

- /Fit ]

- /Parent 298 0 R

- /Prev 299 0 R

- /Title (7.6.2. Application Shared Storage) >>

-endobj

-% 'Outline.8.6': class OutlineEntryObject 

-301 0 obj

-<< /Dest [ 218 0 R

- /Fit ]

- /Parent 266 0 R

- /Prev 298 0 R

- /Title (7.7. USB) >>

-endobj

-% 'Outline.2.8': class OutlineEntryObject 

-302 0 obj

-<< /Dest [ 218 0 R

- /Fit ]

- /Next 303 0 R

- /Parent 231 0 R

- /Prev 266 0 R

- /Title (8. Performance Compatibility) >>

-endobj

-% 'Outline.2.9': class OutlineEntryObject 

-303 0 obj

-<< /Count -4

- /Dest [ 218 0 R

- /Fit ]

- /First 304 0 R

- /Last 307 0 R

- /Next 308 0 R

- /Parent 231 0 R

- /Prev 302 0 R

- /Title (9. Security Model Compatibility) >>

-endobj

-% 'Outline.15.0': class OutlineEntryObject 

-304 0 obj

-<< /Dest [ 218 0 R

- /Fit ]

- /Next 305 0 R

- /Parent 303 0 R

- /Title (9.1. Permissions) >>

-endobj

-% 'Outline.15.1': class OutlineEntryObject 

-305 0 obj

-<< /Dest [ 218 0 R

- /Fit ]

- /Next 306 0 R

- /Parent 303 0 R

- /Prev 304 0 R

- /Title (9.2. UID and Process Isolation) >>

-endobj

-% 'Outline.15.2': class OutlineEntryObject 

-306 0 obj

-<< /Dest [ 218 0 R

- /Fit ]

- /Next 307 0 R

- /Parent 303 0 R

- /Prev 305 0 R

- /Title (9.3. Filesystem Permissions) >>

-endobj

-% 'Outline.15.3': class OutlineEntryObject 

-307 0 obj

-<< /Dest [ 221 0 R

- /Fit ]

- /Parent 303 0 R

- /Prev 306 0 R

- /Title (9.4. Alternate Execution Environments) >>

-endobj

-% 'Outline.2.10': class OutlineEntryObject 

-308 0 obj

-<< /Count -3

- /Dest [ 221 0 R

- /Fit ]

- /First 309 0 R

- /Last 311 0 R

- /Next 312 0 R

- /Parent 231 0 R

- /Prev 303 0 R

- /Title (10. Software Compatibility Testing) >>

-endobj

-% 'Outline.16.0': class OutlineEntryObject 

-309 0 obj

-<< /Dest [ 221 0 R

- /Fit ]

- /Next 310 0 R

- /Parent 308 0 R

- /Title (10.1. Compatibility Test Suite) >>

-endobj

-% 'Outline.16.1': class OutlineEntryObject 

-310 0 obj

-<< /Dest [ 225 0 R

- /Fit ]

- /Next 311 0 R

- /Parent 308 0 R

- /Prev 309 0 R

- /Title (10.2. CTS Verifier) >>

-endobj

-% 'Outline.16.2': class OutlineEntryObject 

-311 0 obj

-<< /Dest [ 225 0 R

- /Fit ]

- /Parent 308 0 R

- /Prev 310 0 R

- /Title (10.3. Reference Applications) >>

-endobj

-% 'Outline.2.11': class OutlineEntryObject 

-312 0 obj

-<< /Dest [ 225 0 R

- /Fit ]

- /Next 313 0 R

- /Parent 231 0 R

- /Prev 308 0 R

- /Title (11. Updatable Software) >>

-endobj

-% 'Outline.2.12': class OutlineEntryObject 

-313 0 obj

-<< /Dest [ 225 0 R

- /Fit ]

- /Next 314 0 R

- /Parent 231 0 R

- /Prev 312 0 R

- /Title (12. Contact Us) >>

-endobj

-% 'Outline.2.13': class OutlineEntryObject 

-314 0 obj

-<< /Count -5

- /Dest [ 226 0 R

- /Fit ]

- /First 315 0 R

- /Last 319 0 R

- /Parent 231 0 R

- /Prev 313 0 R

- /Title (Appendix A - Bluetooth Test Procedure) >>

-endobj

-% 'Outline.17.0': class OutlineEntryObject 

-315 0 obj

-<< /Dest [ 226 0 R

- /Fit ]

- /Next 316 0 R

- /Parent 314 0 R

- /Title (Setup and Installation) >>

-endobj

-% 'Outline.17.1': class OutlineEntryObject 

-316 0 obj

-<< /Dest [ 226 0 R

- /Fit ]

- /Next 317 0 R

- /Parent 314 0 R

- /Prev 315 0 R

- /Title (Test Bluetooth Control by Apps) >>

-endobj

-% 'Outline.17.2': class OutlineEntryObject 

-317 0 obj

-<< /Dest [ 226 0 R

- /Fit ]

- /Next 318 0 R

- /Parent 314 0 R

- /Prev 316 0 R

- /Title (Test Pairing and Communication) >>

-endobj

-% 'Outline.17.3': class OutlineEntryObject 

-318 0 obj

-<< /Dest [ 226 0 R

- /Fit ]

- /Next 319 0 R

- /Parent 314 0 R

- /Prev 317 0 R

- /Title (Test Pairing and Communication in the Reverse Direction) >>

-endobj

-% 'Outline.17.4': class OutlineEntryObject 

-319 0 obj

-<< /Dest [ 226 0 R

- /Fit ]

- /Parent 314 0 R

- /Prev 318 0 R

- /Title (Test Re-Launches) >>

-endobj

-% 'R320': class PDFPages 

-320 0 obj

-% page tree

-<< /Count 26

- /Kids [ 47 0 R

- 89 0 R

- 117 0 R

- 138 0 R

- 143 0 R

- 144 0 R

- 145 0 R

- 158 0 R

- 162 0 R

- 172 0 R

- 177 0 R

- 178 0 R

- 179 0 R

- 184 0 R

- 188 0 R

- 191 0 R

- 196 0 R

- 198 0 R

- 210 0 R

- 213 0 R

- 214 0 R

- 218 0 R

- 221 0 R

- 225 0 R

- 226 0 R

- 227 0 R ]

- /Type /Pages >>

-endobj

-% 'R321': class PDFStream 

-321 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 1786 >>

-stream

-Gatm=9lo&I&A<G1rrL0KdieGHa/tAm\=&0o-WZEPH@\XY7SAjN7+mcRT*6[c,V,!2S<:f9;cj%3n*Sj56kOtdD>n-?K\jr"lZX%?L1YKp"VteF!PP%pSpY>1F?<_7`#+L\f^tb6oSW(.iL"T,,^MR9JQ_^l.#)@h:*PO,bO*'KL0HOTdOe+\QX-7kkc\[n0:Mjjm,1h6rjM^nBt0ib9efA_pB5CM7rIAT421[30TiHEHi:+QbJ1)>bYg0^GH$ZQTi&\4*+i5Z)rF);bTi-#Wb)cs]nEr$FE<%l4N=c$EPM,sn+rNbn!o`J\cWGP4RcFL31B?'@R6^j];$@dghdNtgkMFE3f*c<RG5mF&0?kWX5ut(k0=[<rf/W'gm"Zo<B1--@(2(gU=4s1k@6UAoB#4.$(iCmA-142;$mtW\URGKgS'hH#O9.2o4msSR`0]7raCs67O\'Q>uoLMd-,nG@<>NaW#;g/<j/oZcoGt`GFl:E\TtJuN;cXjoIrCE`pVIM$C=F3k/db7N"Zf"rs+m!(@ep-*&urPZ\+XS>jT$d;g7/52$])`>*np9)cI%L,cN/c>o3SWQJcimA-<l_ET^1$j`+3;_fr43U]=+kkL"tI'72"Bkm2WD/16gGMc:'G`P@Yj<r")sB1*9sVkFNoc[&l6Co5foj#BN;e\$?1<ekW!#XC^aiM7Ds81mShB5DiP1F[I0G;Qb`-T-+!JEU==;D!!Nc>MM5F_EmjX::nbfjmVW#W%A?67R:TV^-$+d>R:a7s2s6n1jXT6Zfk6)5mOFa4W*Cg$[i,R+uAe2![$gI=fPaiUCGhMB(G#X-U?JG1)%&.0WoIEo=b++Q+Gq"Mnmjr!3Wc%,*oaM`mGN0aAX0q&pgP'2VRH;d[J<?3Uan7=5efk8_I'?NrPN!:f['C36mf'dcjSkI(YA@*/+UIXKMnRX@a*SC%uRY(8FqQ(!q2B-i(D[ShCJf(JPB::#Z\*/Cb1TV)]-Pl$cE^4[+Q*D>'uM'rMu)F/YrcdbjJk?!*+i[j-s$'rnT49]g64@B0p!pVZjJ,Z\e/f>c[?]9G]?78rDc:;Oj?QN%h_ZJ!XZGo0N8aNEl]WZ+hJ\aHafcW"7I97,H([fL:`q.&Sg*CPKif1ZR&#QY4GRgBDC[<QI0h,N/XZ*K*Q-/MhWLpM!K$dqc3)7rh**.D@KqRH9lOk@FTJ5b/@F.N&V[!kag#\gkKi1_3p"QDJg)1gW6R<iW19?2(gWP9_%=obC`3%#mRSH4D^<fgO1NBF7?.EQ$/\@5,h:Y(ES)$jL"Dsc2:a[W'KIlrWC<'CU'J$RPfY:/09p4G@ih-ENmulBdnPL_"d?o#Ps"XSZlaB,=.f3!n9Y'XgBaF"SVPqa;k=3-ER;'fqlTmb'S!1?`3Y+gh1b9iTOLQpbpJ<[p,_U\b80J"8ksU$_S'SB#Ui(1rFZ,[bDX`,ML!IJAr&j$KfZrDll!j_2cSi>5ctAa'k.o11nU*:pK7]+D$R/smLNUgno\R]+89tr>aIe[Q:tdSpK.\Vb3tTO!)1;OMq*1.hh:9cnZW`5?boGNY8Ds#/l%7<Hp[L?.J@ZP/]dhNUUrjZ_>.(q#LDW8?>T/'ddSVQ>\gG9qZ3D<TFgj(k*=.@6f)0+kFHHYo3Y(IBK^4)::)=PP6?J]"X\3m44#`(WSaJ5l<f_DT\C.cJ8:\DXG8ZY\O;7S/akP'T<S;]@;XF/Qd2G!jX/S`mB*?bM?gQI&cEaOup5%fU;\L4"S_EtKK(,CqK$AG\C/[3N1'`j\#<Y>N-U.U:Muk@~>endstream

-endobj

-% 'R322': class PDFStream 

-322 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 1514 >>

-stream

-Gatm<hc&8h&:S8Hs'[#(RmC[YQ@D!u%1I;J9:KnpdMLpLU8r.-Z301&^Qf+^9nTPTL;8>F)gQYBDnfR+"SbF?T6U`^14qg;-r:,S>G*,G@J2WRAqpUUgDA\5M\$^MYs=r<3JA^SHq*+G;^UG]n,P[qCI&8u`?^9Cbf\2&G_`si-Gj(.ZsVr*5-U)%q[[:gZqp2!IJnQmjm1(pMGia73)=IA4$Pj++;>@kKEVYd;aMCdZu]'ZFNBRjB`7!_3I4/rF#N#N@si4T9+qpcSYHeKLkO*`1/(j6Uil#LgBL/>6jHXbgJl4H&PCt7\\?IZRCA%1(;cB1Dor?5f%!Wm=8;n]BD:[DCQu!Agc4O8_[j;\a#lZi1OD]a)_!:6eT04<lE^^;0>J1?mVqRURg5L3a-`X[olQtr.'T<g_b<a8<GSog"/F8"7/03'J3[2E"^X`5g,U&P?HdV<7opJ1cIj%JfbX#_68I@;N&V0UK6r.E[oV7i&`4))Bb4Zd]VnQP;oF.7%RQsum)Ns4"H*N,SOBXAk*FfCGqKJ=F=A/CL5Er&__8@.8iCSLM!+B1l'N3kq0[%$Sa3*lZP<U<1<500YY-OC.G_(8!`ocs(g)C07R*nN2<t]_I2ImEj3?tH#+4T;IJOITi`"E=E2os2k)Hsmn9j6$IDE0&opBUL)>c.X#:/56Wf;$P\0nV:'lE*Pm&4bi"2#Dn]o:%u)7"S!d++]hp2,r@(R)rDP.$LipCI;(1\L_,QlC)CUf_%Qd*6%D(30"MB'/;Na^U:o.a(hgnlG3LZp(jU^JpIJ=!`;bo:X>=36dcBN@I',)>HmYIDm!JT^TcXN:&MQV9+*!5K*$"%_%Z1HrfAmhbra['V5m(-\379RLDi^qg9nF<PGlnb]6_>D5o<!8ms`$AouT$Sell/2B6(0^kl=Se@SL9qHi.3l\eWGC0m=-a3fJRIf$KfB=s&*pH_"noVF+H=[Q67@G5CYh<c'\`^?M`\);?o)0pj4+;;V#:su]sMc3gCY3EJBW:,]'4C0Xu9nS/a+uAdafa[^\;1mm%?6'^B[-Qt57i4?`]V[:W@P>dbMd8V8HQYV@FC6i$mMN5#V_km:PZa8EX/JZBp1p,,o1SJ&RBMPi>;,YS(1XN-=iGRNfi1!^KZduK>t#$)HQn-28f^>+?+[LT3'%H!ENS+&OmqB'EQpu9W'RC/3u5/%FZhVnV3]lf(SBE!J."n#lP_Bj?&\cT-+2`RV@$J0lUI3.(S^aG(Ut&W=X.AGLu<!:b+uUM."EW/OjE+*C#[aKqh2hTa6=/-*4lP1o.\_(bl`.34sP$*XrC>bNu2$Z^"mhic$j:Gl/Ois8JLs9S)I>6%)EnW/+/d.`:pGqL$;2eK2RGqM"]<N'`O4ah5]G9*3HcBjDLfV[O$)2cj-3pN;SDVg>=2:ENWSSB-J>%!\]fFEB>'5IfLBKf+'<T]pr_0G#QI65mFAt.u&+bQ8`bGfNGFBZC7ga3/43a,5DA$[^44[ql\XO3&j%q+4@nm"o~>endstream

-endobj

-% 'R323': class PDFStream 

-323 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3279 >>

-stream

-GauHOgN)%.&q*PUrW2,+fORVZn"Q2Y>fOCT8p2tuG5SStRY"($_Ls*M!jptcqX"J?+r/k,Cmc"ck!3IPEDGP92kb5I%=]AhDnI7Sh4.R`%WP`/?P:DW5+-mE^Wp3#phkPNqY%]PY"QY4T';4rjP4IhBP;aQ)j'I1(LXYa_kAb"db-H"o1f1U0F,lAdK$2Qc(AH6??r`rr%Bi*]CFg'oCKZ+pjM%nd$[cfi<)9[CnC#iUHPO5Y=m]N(KN^gF?0eFY?^(3'Wq'KF"$jOks?_.XG+k>E3o#nF;E9FHOOfc:sA';Th$BfEl0\-GQtnjVR[msbt5adQ_NF5&IpKh2Pni4_9%FI+u1@#KGS/J$aPm&O`HVgAVL^g]IB/9S8#6YnZC/Rnhs,J.2(W<Nt02Q#`lfpF'7=Cq2^jq1(r:@#8ik,5<uLcQ@R]$JWsF,Eu\&eB*a*ZP_p-b,\ID/fqeI=123n,&/2]WCR1jb7<=5fb;)e8=1]g\5la-K*o=-U1W$GNSB2bgLo"_eaNK,8,jXKoo*_9Lgq\fCJbN0]QQkGrP')'?hK>?Er5X1e/JAq>ad"E8R&^O5g5i8ArV$Shgu+;W4UUkk$:-W:dbPJ+&4XqXINr;s`$S8SnFGQI6C")6#2gYZi$jM&$pQ8.M>o:uQ@K"-b$8I-\7Z7qDHXe--'oN'LluIdmOQF2K:?&O]+Ifprp5HG^?8-P-E8Zl^gp%qIdpr.01"ZYaih?Rq3_j<%7&8B+tt0aihOTXIp^Gd@R+FP;PCb]$45KBs1Y'iUdEt%%iFa:btM;A6l)\3@`Zc2gIP1L+dPPL;=>-<,8eY3"J<#f*s&Pc<:W6^hQA1c1RC.$&ct;*-FjWE)8TlGAn:.tk<4;eB/YVcjArmui'fP`U><oio>b,0dn)g<+o12F%1(NhZD@U)*gphS)A8"K)cU'u7E+A[-s^hV.Z%[(8J5nT"f]LXp!#h)8m-ad_$ij^#*S*^,':/b+C9)I`]?:KV/c-?KkR4bEYm&$=mY]\oq[FNr^/)nOgGq1P['S5_P@?J+=Rs[9bZm.jZFbh7V0].6N..HHUrn)I2U&D/0rGHXf.7X9EqWR\J`C-f67[*>e<:1GO-t%6kD3[MN_kAhSREFE.Y4-%-DN+O@q3`T=-.qMS?0"[7DVEUTo?jV,Cp/9AH)Np$Sp*@1LR@B;A]WJ=F=UDO<s4hS1W&jq)'f>d(ER:i]Ks"18@$j-XCgI@C=&>`0F3lRcjJ_=No1YRj/A94>(CppsCXr=pK$H,1Wk&0eLa,n[.C"_%sZ@^&CZJNH2E.j1rI0Q4j!jT<o9(<3,/KUWUZ>`-$b@4<;Q#jnkd2q>LK(Uq#T>aAuZ27jGC?0PWlC)j9)JJQW3H7,MhM?t-4Q1,0RljN(uftAkhhML6m$^'D:-<R59W\BBWTc%\,QBl:]6C/Fu36+M*qLP;c"P1G>jJdrh#(3)">_jX+dMKCkPWi?2IF(.W;7Z*Yg%4Q=ZM,[,\6!iu4IDS!H(e2?m4q4!("p]h4Y.^<;W\9QK<cY?6FLYAYOVFt?TsVeb5m\q8k^,[R6WBtC]Gd:`=ik\D[COkc(/LPSF:!&EW[e"(s<;<+t"o0./=4X0>fK8m-_]N*5a[@\VB4c)>a"`\L9<<nUA;rhPh,;Bi[rFeT8\D#&5a\$E8@&)D1G1"h9F7il)AkFIX,nV5+k$iVqLWkT4^3mZt$iU(KH:\oI0Dd%VG^d&$W^(!egHm91pi`r[U#^PP"OHT1mre"^19C-M1pUKkLcY7T8gkAMne]A6B$oo_WBD\^G4s.Th"J*=^6HaDBR.(b73%Vu-O"1%(im,=p/DDkFCo0[t4'l66dK+2rJq"?nQX8&Nm/gk&U>.s94$0YB=d'_`+_k@V>")iohL;%jKIG!)t[.g"3K"W29-\hY]ioUNjLLWDgkW$rcLS8i8OOB_LGkR*mZ]ef*$$"R;<#%o%6C<qr5(oE&]'+_#<nUO!ibqZjW?^HWT8f]'_19$*TqUh*+3`s8FPtc%rIl%,W,)kC/V9#e^)j[GZV2pD%&J5brCAQREJTu'-Gi6'l0SK^BK-S3%?+34GGRiodnq6QALnmZ]BbEPmGWTl"e9T/WHHe:[3sW-=J\?&,e*P@W@gu?Ob?'ph?rCQ<X"sn;d^\=!%@1nps0.Xd$08jo_kGp'i#D:>JBkZ1qi%05G3rYE=/95;a\=*C"5,&_r$H*Z'%@oO9"18[b\"A"/t+0;jE[KS:CMP4B/.qTip0R9V&>,*\0YPSE7;eiY"<19V667n]fdPW>7K>gu3C94*/GVP3`2NmmEu>TcCX#E/.oh;/E1I1/EY?:#p>_MN!adjijZWi"#uRh0K9T%-#(,?o9gV$1)#6HO]Q/*Hr""0V+3"p<MW?24RRRf;gsZUH]D"2^74DBXW3ooZ"u4J.I6o<8JM>^d>#7qu,+L!M0&(/'[+i\$!F=AAr+0Wu$]h@dHAqWb@c,>+LGoi?@N,f_b)MY@n.4Y:dNplU('fE;H*GK8(aI1NQGJ)#;HEO$qf``drM&?g@hON;E"^>U+pJ#Ppr<c,,YTmtO3d54V7[EKqc&q;(H)#lsn=dMq_9r#lDQZBT`KnJZHrC2nSQnYU@SAPSV:-W6LfWsN4',fZ@>aB1S8;s4BTK(O"l)FRDtK`1<E?eCl2MVmRl[7F>'+'Fu79$!&oF$?M';Z(6`YZu`Wd[9qgiC^3J0*dN3`0j&hWVPM5'f_'JY-(0CD"J-moNtMb%d"g"MjCo0OV96$VP%(oYA0h.THp%f_oL^G2M,ISpU>rK:L@&;%S:HkG%X;=Z%?^Y=&Q2!DYRnVekR=Akh17/(jc<'dmN$Q4<5T#4'K[Z$"c?Nnm1HnUM%Z^=.8AOOa!lL+uV)sDBVH9n3<J*&IWH"AaC4Ek$>2Xl(X-KLSr0)k=6aC)u"<8*;VM]qAX-@6gknWm>A4o?:1a=fSUJ@I20]kgo;pV#+r,^]]iOd`]`*.@rlJ\CY3#a]d(gG#;\-%9HBW"ms$9oo"AUn4b3a7Dan0nE8)ADeG&hK6kCNfd(=]=2k4-Z1sHneqt4&<l4d^4!otkcM\PNKDd.Qa@)J#Eat<%3<][PNXFCj)c-2EM-KMK25+e,rm@ROEYHRH]3%S2tbJA3^+\At:?XH#Ejm9_2CuIeINmmj"pk&8\M6-ea35gi`J%?WIl1!`(iT44u%^Q!O=UObS-2\ZsIf'e!YBF6<=i(U9knEd;bSr.7*'SM">&b=2I80=4CHk1XDiTV_,>W#^2RT7Pi`tFA\T80(jQ2=""8;IE49~>endstream

-endobj

-% 'R324': class PDFStream 

-324 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2992 >>

-stream

-Gb!#^CNJ7A&cJ;hr!1I5LH6F^,5;l@2r?T/4h]#2NH@7QWB2/iKHrB"_#TQ2s8+FaLIaWt=d%<1*'Z]/Z.sDDpFIbF/GM`ZpGbP(QPg]i-A^;f2Fk^)/t2`r50_s!qej,=Fh6`[gW"dLf6#RM)NoCU#F7_n%rL1<"09Za"N+Dna1d=@=nO0/Tm$sMVmj(X5I!HimKYTG&"<I9Gjr?@qHj3mqdYB_g[4O0jbC0cTs\s?4__?Sn\BkGA)iu#X*'o.l*#Sbs"6fO#7c8G5'FUor6174=kN;7KbR7*"ieABS7J<rdM&A^cbIj4Uo76D?Qd=5qD0n`Q$2g\9;RN<8#(a?C!$f5E0M`%ZNS<2)_G)AU%L,o1"%E0-o6&:;IsR%_Q`.O1Pe/F"5H'R)F6"p"Lo'?*AkV5PFr*+WURDK6]:pZM.@8+ME]K[XTXpQ=!lJ`TFl9@"jLO<W`DVEcP=^TW5qFe;>`"Lcq0J>GB#T=IQ5pQEu(RkrC@M>O2lDK.`]N:F)mqNX.nOh,gBkb.TW>Z9k-J'/e:OH6:A(f0pNtd)S)'n#"Kdl4qfJU5:i+]IF<hgL%(*u%SIhqQ!u2V@^8P"LC$t4`NOsVC%>r$UTV]`^^8)mg5TV0;;ab\5"_=7(gH^'iDW`#%$_9OjS>;t<[(G#kGKeL@!L0UHj!L,pe8BB+a^#JN@h=AQ"OU1NS_cl*7Q,a:s?I@=<8oKA.cfQ=GW8CD]=u85HQdT%S+S4cIIFb],)M1P_.L%DN9A,!h<WG'a:_9QK[o%qH-;VCLa-6e-/4Mb-FPXU#:==4qB&:^R>@`d]ID1k[5bt3@8+95(,mZ/%J&,Jh%nW/>a_#M3rH_Jc>mQWdC$eoe=N%3Zf,FC04H4E08?T6\:9Cena&i0EQ&ND(*D-#eY_QSm6cZr;$^o5*MsY3WFI5M9TXbo,i[;+Q;i?K5)Z%8Yi(B\YN2a.K_mFO2'eIX+,BoQf/I8%=`=jpq>$<>D(R<Z7":CLECW2IsN!f"Q-fip]if'p?)4h6Q_!EM0o72s![;S$7=gCg2\S3p?NnUQS@pb4c-q%2nbY$Ne-YiXnqc&k[U`U*joGfO2JHDiUR@r/<@G!"eq_^=_u*4]::B4Wm)NDK%B/K!MOu_s.=i"Sd#>l(_@fJBBfV;s3McQ-[%R"\0T#,rrtpVA!Bh&+YFU"ejT-E6UNZMQ0->in0^e-oo.t@m;BBL/6B;&%KjuLc\'k6ZaZ"_7uua4B_V.O6ll%``4-6G>9J)+.&?>1c0933+1_cc3%+(P'"HS<hs^[FPf>3SK,T?oU)PR;-7(?OU*f/\49ej!?nhq<b'<O$iCLLfGc&L@p(-/6DEOK(6X3=%2lLtf73U'K$WQ*X&f<?!-sgl,8?%06ctu8_iQ>S_cB1tRHH=q:]k?f;*U'/Fq.,PqU6@!T5^\UAP"H't/Y>F%UgH#+<3S5S:r3?p<=7mq`:E&o\_rmiXpuqeZ%JoTIik%'fW[2$pCtkRH)upQPen_3l<HUk:QaZ!;O0[dZa'h@*0qeF:&J/FEPA@d5l&nF?0=b**(LX3gajVXi$'Mqa7eO+F@G@DB>uFrX>fDcT2>plXI+U/A27<oWi\"`2!9GmW3bla?@L`]"T-6$lu7.M_A00e.!MPLXXT"gkSL8h1,nru:_g67U-e?,S=c$i9t,73_Fg?$oV(K?YGjg^Ac;V%4@,;M*CU6R&IDHHaL6)8.3NlUC[ajD,Sh`eh/saJ"X;/$TC<@PK'bWca["3-g5b-bNJN3E@llMh0UhRCdbSSTru@Y=_u4*9VrP-o@:u3n'$OOT#Ap4mLMPNbFV(JmNCRU;VC#JOah`-\2oMXr+]T_.cP)LrOq3*h.9uJ.KQ-j":-rt902Wu(:Tht>$mZpjU7&a,!IR9'LFnX)0#_M$P6:Z9=fTTA%I*"nG1R[uqj?a!F9?eX(S].%c?%'XG%3l_Zf,Oj"djoN"*4MLSC2N_Y&1_PXfiubNJlMnQq&k7eh3^TirV?UU2'r`/1XWPUm+925Gg6C3Ksu:R1P]7;nfH."IZ6^bb"2BmS@`@+a]=*nm$Z,IS+Jc#@YSg+1J4Td\b3(K$e,PKPi*igKtnsZp&tdakgpLY2u&]d@*#LYe7*)]'nqtUh9Yo`Dr/*fsfp'eEl8i"/8"F`Y^nfI*Df?23b\,C30j"oSWp\VFq]&[,&)dMqs-@oXQ3XZ3#6V9YZL(#hMoBp&ZoJ-`ZR6P^FgGWs^5`>B"Odk<do(,Z]1smU7Zs\,24XqmL[s]4qD,F,'*^4ZRjc'c4QS:4p.Tk]TcMdQl]FDN1cNRVoP1co7Q\e`^A$K[A=S!=Y(E*%F8Qp\riWHhN#,mH.Q-aZ^n\=,aol2FBT:b/EF>78<ko';QE!^c0@NH201a!L1ece#teOZ1CZU#Gj+0jhJVek<iR+!W"%<KrUr+/838i\i<#VK5Z-9,I9bS]HZ]cJ&a`]fOm:"=.uN7.++2jT[=ef*SWTSB24ZC)p%P\6cl3VQHdKA)i^@;A!B(`Z;H:P5oN<SB]<sOXpl6a86*dZ!`7G/7e\6^TC-mLJH_#YLt$c"3Lf45e-MmsW&&W1(h[XN\d`=joVLt@1!LrZq#4rh:k+4<[sg>7$aNENF[Z6Q0[KDPq_hnV/,geC3E8c_m5-FOZ\Agum9nZ`;TV#+%.`+_+5d[[>Hs+sGn-7P'jH=%S=;.('q(p7!1Y^N3iph=/ZoiCJ\P0+P%?2("Iomr;6o"e3^(D00(:7O8s>J(BdhQT?ZfP@mL'GjWBK)]l.VT2XUH_bfX-O)_22T=8)TY1X48J=2mA6-s*Rk7<I%UU3/:$]@b\*6pWl(7BQ;4Eat9/%+O=4%D"dQ4P4o^:Fd*^4E#<nW"E6[R]mQmY!,8cO[+D;S+r,5\/3cjB\6>$?^pk\r)*(]mT`iBERpN'=[NXCcXtYYakUo<_4])pW$WkiR6,V87Q&12m-M@@<p;9;GTbpHCOXc&f>M7L:a\]tjRdQmhHN3EJh;ush~>endstream

-endobj

-% 'R325': class PDFStream 

-325 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3266 >>

-stream

-Gb!SmlZ:gj&c\Gjr!sXjI;iAH&kP7X9sNfMg;N^,b0@<VlO?6K(,(%`Hs"epoj*(n#_MMEENcc+0hL^aITYqhFr)VH_QV,]2]RM-D:%317B2)#4/@n$&__UtbK]?S?e@S#+Wlc,VCBtKnDq<aW3<)UPj)"G[4s_VIK`V0KrVqtWA9s%dDeaa@1G?a<#O/!L[<WB6C6^kB_+=>r.Q<hM>d=755ZZ.RVJU968U5^UD;2?M?^iZ?"DV8]#R!X84`ZO#%J_4A>Uhnn\p.HpTIr78-;%m$K&7Z1*=hMN=OCEYqd4*T5=.]'2Z);IAl@H<57*"ZuAasZV7a9?NnMk%6H<O_T7_,/b+t46\ab.+a1a'GqKGTKBZiaUSmZ8E@aHH!eokj+lF#?,/_DdJ::o/0h=A(RKQsX)^OX@#p5%er<b@>&7M12VNA;70i@-XP6?VYD$e*g7(uIP&3`9^##Wae96]Xki-WccXFjuk!oOT9a<B3Dgo"FgUM"C5,XC#O4b+:=,Ki+"_uWaU>/8^!F+edR'=9'oG>+8(I&:UT)JgXj"JK`ON$Hm!cLW&Me[;0U!D00s1OR6VAaCoo7NXiXCaa<R7qlgb.VuLV<9MKN;FN@Q(u2pjOSQI7G^@N5;hl9P<Fn"UWNtWk_-rOGNSF7EGGfVBd`1;`K6H?:F9c"GH)rddQ=n0:ih<Yn.6fK;&$*<HA\J#G>WaRLBi:KOPBdDOjc<m'dO-.L_%Di`XP$F<d3t<0@1b$!E6qeSf^oT7(L/0SUt"Aj;kJF`7MLG5oC*Kb^s/Dk3%9'WIH4eFmh9Lm-][!q_Sk:<d*<gHhjLD0nM:3t-0Zu1Tg<YaZs8tiG*WM%aE$U`fMi>j/cD%'^h>o4e1TKs<eG_.rd-#&)U7nlk251RqX1cm#?u!KHsa,Z)])W+5i@"rpQfak&(hCg#TjPbA[%O1dFa*Sk/R#'9MNq!$'CYhQ^=*S77GP*-TFS`0qik?CXE*NiFR.Y[9e;ehJO)N\lm"VUCI7dO81>&DeD@oA4qlp(D%C":MdZ(!uZ7lc?nm!`QXoUF>siLg0"X;n1Dft]3/Q+13$1%#SlB0k&bsZJJ86-NIDR,#Qcbl>.Ye`fajQ:5Ro\.622=%2GS',Os^B[I\<>;$;Uo2Bq'R-1%SL\d0'WgRFL@*@Mt'1a>>::;&o*%OJIQDB7gu)qZM4$!>$XaBT>&;$nTJI+tiCO-C71Z`?`m._CAZVkBaAJ09P?Pc1>HqeT^#^H-e],P'f..+cMUS/'P!;NGP(nVUC9A!7+Car8ZnX`T*F?4pe*_bV]9PIIc4M@X[(S$[)D!#CSP_RqR\ZT%!?FF#m=4*f[<dc,05-2ilIER*"G8QM;EF";Y.Ri$E#$UL3(udYB9i6YPcd&4,NBpaLGoV!O:k5amF1/6FEBiN-H9EL(uGqcbc>`P^5@Ktogdfg@/0W*#ZS75jiOq0MPp3Tfl(7kE">rq-Zes0:efF4d*8^#/\$rq2&)6BTj<&[XQge1^7rlc!^"8'n-N(HIL^ee)/cU(W[M-=V5F!P>6N7(ObEF8oWn997aX<5K6UH\d?0!cd$`:`Z$f6%a7(9pu^X"mY.q>hn0+,IQ5+`*`]E5!'ec7Guj2CY-X&U:cDW5G)^V8T`g0[>es,07R;6FfP^(odgDs$\oQ0gTBag-Nib-=AP&$BCB5Q`COj;+9;a1LP1s\!jGAQ#*67o$]\nLJ8M"PUF@=]$7YTH="IEc?k1oSAaT/&Fo-Wu^0e']2t^"4nPl-A7SH_VS/AIkR?dDrLT!F:L@e"5o+rQA-HacfaL/`M`'.aHF:]BkOt*Y%o^LnsV[qC!/V!rL"ku(0aUP"T#.X8@g9kH8T^Xqn&=;90A]lFn_rE%)=s)W1i:28EGQ$c@'>MJ*jmgT"Ga;N/0u5?u.Oc?IY0B3!'@P.brPRY7fiFM>d)qf)`RMlM+_&>4"6UAFhLJT?QBD/p$cVmK\\=M-#J**j^STJ@8[d$q+='8*s%H0Rl)`BaGG'HF+(-%@WZc536P0G6%bRF/$2`?\=W+X$+V,RDO56@Nbuo+D22r8d,J<]@8_acr6tJZAMe'N`'9=(r!Ho]O(KXrfd\@QF+aV'T\==TI,)@O)?sJh0JnW&SZkt9`he;rIPUput+DkVUGhCS9R'Ihj)CcE&i2kfpaS^;Wck'KY,>m"`P)/\r@3^7N1KPpjd_b.F!(Q&RTjSkIhPO(F+M5Tt%[Ak:>LqV.F$cnAd5TS2>[mI(HT"do%f:;_,?f5j35uW.K:0Jf\`&DTR`6<tUis#$+)oUIHt'u*,a?nl2TDMK!TV;(>sO;a+WkIJK'\&*Ml.YWdk36tLj"<n@\#IJSr\';Gl*ET+'J^4a[K77#<Cb*J-l?r(XhG3^=a6C9CLq&KF=hRmts''kH@@^ibe>^op:_`f?8%pj"t-??`ZY/#8CB[?"KUHJW5&#]qZNR1D"GjM4\=uc(0Lpj&4ND*d;1:=D6mLs%Gc#(2,Q;(Y-'n0+[_\ei1!?b<e@YGa;C2LAj[:rcd#/$2p89q(KF&Uc*4g=-'ST&GfLudt*K!AZtIKd:Jg3Lh+VO8is-8Bb\_YUT7o5"@WVH?)/_ma2Fo5:6hO#``cG#N$T\s8gm&j@hR2MfZU\O3+7.C8YYKl<(Fn5dX,n&U_`K2"@WWbN[1Xs[1Z22PDs5m91DaB:kg=;<7nI%m5.Sj?:0mS3ZZaJ;$)3Wm"j-m*eBt4Ja5k$iieV\MOJ?L6WjPDU4b9Y3MsZReSD(&_Y+n27+LM"QAQ9M(Vbu$/`OkXM@qZb8Q=qi-(:PT)pp@*N1_Sm$r)aRhQ[:P1eu\06^"B/*S""a!e*`)LsuJIJY4EBlU[c0YE`dYRVYAZ=Tj>NKJGAEVS\ADCSu0hp)9)^e``rtMA#F5/4ZKOn-B.c$!]t5'n<>R;q,>&)Tj68'IB!;aYCn!etASR$/95d&lk^%=t3"7$7CTkbZNA"jN*Nq3g-GkdMQ8ja[S+G7Erg%Ai)LpH,gi1dl:c_%8!;ZFAtb!$'Ipb8#-mHnDPQMf2%DRH)X2/e6i@cb.rdjgdMnY6Xbc8[F$[.>E.^^<9g9BJdo_Z=XTsX&Yt%7B;US,7Jp%<]<&-gfbncj.!$/:(Wb^/W*+Q9,jdFM'2bla.Z1_IV>V#S,85ufA5)./C)):BI]f&@ekk2HEH)kWaaAf11ZF#KX&iRc6`ZK1!ijgX0eTmfKTGrc"Wu[g9uhu'ZUfD@R"\EIMq#:?@[^bUTOKbn,+DVtZ3b<(qaK`AX+(4FL7uH~>endstream

-endobj

-% 'R326': class PDFStream 

-326 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2764 >>

-stream

-Gb!;f>Bei3&Ur%dq%%OgqV\^n_i$-jqW-:#epEQl2c:^*Fk["\OG'"1!2R$fYO;mE&P7fl[<5a/<s]^Ojr;MEpkH)i`,A<KFT[0'1O/lT!m?>O!j&(MK\8k?2gbA[]Df'Un^.nagR*q=9Wd-&JQ9&p'@X5Q&Zf?R^fa;:bJ:QCEBYG[/BH_C%amBm7\nVbhf9$9j&[r3#.$O0$\$Vjhhr;c2@USX6^iq?(GfaLYMTl,1,U,bJu0CL&.Im[CdQP:k$]qjN4K$uTdM)D)3H]2VS`(d?bUp%rd$F`J?NF>4W8#Z7l5-c1J`:!LLbSGF:%]c:H>qc8F[8R)b=!L4FSqg%O-^W*q1lB'&4m/Qj?-j/0q_I`RJ&+57:W0+X0dE6hY+hREg=Y?`,]IF',7>$O;hNO3N+0LO#>=:tp8i"@DNsV3htr"p>hUHJF,V:4=kkR`r\c8/7K6J/PB.:hY8D_*W+u/*AG4ndmAtNPH6%#'5pBjn.j##&muo@#;MDek3YMI3sOF*_Wk+6t%h!lh=05_6`"5rkSg=\K(P'**a?ZIh2PSQTt/M>fFs#7^pacU=[+5SD@`RYn9+1r%L8cHnG4=_m]ie\M2$(VjMV%+CG;j@jY?1J`.!%kf%1-FZbnP(#&r[,*aQ'_8@]U\5T*,.%"fM_#&ohJ^N[Fo[6QmA]VR!a62]m<scQ\^01fZ*t,c&Z>Bk6*a:ia!)9NHH64g>DEb`q/cL43Oi<V73B80KVV(JQ&TF"C/5W:I<u>FYTKqSLWKc1"`Sk=M3.LRRs6Z0%*:>e5D?pbn?F<'<gP46q)sDNgWL1;,Ypku9VBN'PR:LQJ/]9E`SV6Pb5I0kPT5@MPqU=W2+0T+lmdZeRbHjptTIQ.6'W<tu4fp?Z!bWf>rnYN0ANj@2CJrdc2>uf73E;-#[iXotpcmMPqK0CDGZ`^H@.0Dfh*[e-WV?17cI_<m0.3U3^bea]ZMqm$W*+&2)c!luW45l*(r4C=&U=0>m2:)O1l29^%T;'K.t,4LP(u.]*DsD,L,,pB`.5Y\0Z'[dSdMI'7:Blqfs@1\0&='WmWsib.gM<^j!7QZJYclFDkH]b(T+oBB%(QYLm&:H6rHq<T(RE=YDraB%6p&K^S(bMoJM3^s">J8\_=<^p/XFb[Ifp_0W!?_3RmHg^Y32FjMdcc8@R>BHS2rmZIW`NlpbWajiH)&SJa<;&#8?(Ki/Z,?FN2R[CTX"aVK<LEBBVu_H"iN>]NA&-fieag9A'YlRmUX%8*=oik2<HC5]^XY@$bMg@38dX]dLKC5glo\s7,Y]+s^al+8(@%WB>!^L)1r2n,HEW[]Xt)WS9)CBE1YrL+[S3M]f9(4D0^]:(7u4!&<-I7Q^QjL#<JZ+!;$Vj$;8g#sS^VimCsh@b6:^tIl,Y3)U*%V[7mVm76^e@ZOQnTm:^6Q/!/Y>3H!]qp4*(cfjCbhSIIH5*d^Tg]>\RCgm)/X];]S#p@-VEBU3(fnJ[\)(aY]Cgj;"\<]Qn^64,4un@73!S/7#q:G+.#@D^4Vth'2VmeOB]F&Jm^].%(tkb2@<T<[j[9,fFXfnSLf,pN,ri1A5=4AiD[(*D,2)L.SSX_CQoRsn**El3@inj/VA;1_;;B\G*`oKYF.Bjc!L2BcDN,NXaZYDs6RiggM2o=@Pm+iLN0*rM#A`n66M9(BoPu[^0nKa]&9&EIQcBm,VA7$)\ecDo=2U1_>p=rK>XQ)1::[0?Fj'@Q.tV7Kae>2:Nb'A]R[a)u>_HGG;g_Ln<hO/sRijWMHNKI/l&hb$bDEoeB0)1s$7G#r&OP>00\Z&GJ%6#=,)3[5C@8'$+-6;fdFL`F2G\G'%/:[=!bVP9r&7d`O"Wo"f.p$P3NaCN&XUjE_n-F/`<B]r(9`OgH\2&up&S;T%m<CcW/C!%!mdY*Xq*guOQ+2BgQ38kJ;TEh)0!i9+]Sh?"eRDsUY:gU>[mD3eZFA08C.X"YRk"m:%*(`c@O8iG:'(ToD;>2)YXl(IZlj4O6p'olMSoj+`YrMekkG,=-R0_bLibjM?PV3T(Dd,"^JXElu6"5UV9R7HXHq&Gp8>[DQToXKKG,b$YtFf"u2=OA(28%1HuZC*?(ZHE-];-NJ;rH_:ef5DFoUPjSR>n2QiLn`7iUG$=-AQY0MYDF4<Z*4K-B:kmkiR*^[4U7`G336;p3am5V_c-5151=nD\)(pCK]K.B0,n%(lobp2QKAC8,Vd9:PC*U9n(r5g.rb.$c`;!j2"Oc.pl`p0FGnVU(,HbNF?Hlc,U1UoNnn`75-laqZR^H57S<LtS`&'W(`<d./I&,4WQT*J=[RPTH9R<2Ndn_30P''r,SL@4>[e&JhV?&Y@+ek^D.ljhOPSnY?&Gs[S!:Y:.iW&n;9\3$%*#_mTjZ3qjurR@SiUJaLZ.LQFY8u7&%4q]))eE%Ao(,TpY]f;SCN;=DB4kE#48aHL]KbX,8g![`DrbV*6s#lBQ_S$unCdS@<2Q%&qBVj4Q*u^JAMkQKYPkVbq%Efgm?OBVuXs!u(m&RVVUn#S&e`YmC/!PBa.%j@["\de384N'b60<'p(Q:sK9qQ>%Sl+h=e'-U<$g&trlaPB81@A<K#0U(T1WA-]c"</6>T$^m=J/9.o=@f@GF@/N>["R)hL1fQhHh9XR;Quko]MgsOn:?Cfm`,7MB-P,qcBTOGnC';4d'k>id&hV9M,\ed[1denE*PnX]\LL6B"+s8&_qQ$S^US]lH3HIKg$?5'`+HZX&lh5GO8bDDI!U??l;*^E4nH@f~>endstream

-endobj

-% 'R327': class PDFStream 

-327 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2591 >>

-stream

-Gb!;f>BAOW(4OS'rkk/<XO>g]W4R8GHqWbUZ.hlrfH&:[+;0hKPCN^bEn+OSEr_At0!QfP3tmT:[R:_C\UEAG:a%[c-Zjj5']<F'Dr66[[U:qCYS2+dF:6]qf<7BMh_;gYgOWBUk]_$kg@Z"P_r=kHDmmPa(S4sJ_Hk>H_>pe4K0c[KUGRIYB@*XVTM*<`h2e-oU]1NfT4%;dPMgZZqmgtAqkcWlr`OZ+%XD3>^'WUr4jhRbSBG"b&VDdQ,k/Q"QUZoI%eGA,M:1Vp`-`^P%O.Gk4QY"3D;`=Pi<WPKW$gLSR_]G>Q58W,il;ZgT5`%d`,T8n6QTC(,d`2)cjiCH$H=(8JnlstQqJ8L_9R^o:ZkF+ARWmhS'M`[0j8>o(sP$NF(7(?BdpKZj)UnMN<7D5qLg5AYmg#5B]kaY=I.V>Hs)NBHdp#<d_j:S,ZoYFM1nLqPT,e:/</cU::^?-R6b+*GT=a?lZOs0TJZ)U(NcpV,#l%%M,l'aKoC_UdW%t#^l6B5H64SM[7XIi'RQ$4:d``Y-H:X\.Ksot9Q:"W=eZ"m,`>N^EG!>;;HZOY.P*Uc%uZ-Mj2@LI#6*S%VNg'9#?"4T>!-Q:ctZ?4J`\CUbPgU7)kN/=a4rjuoL4Y7(22WK%Em:uLbi!Cn"Q?]9/d:r4G0UB5]tB_a*2SP[ThJdnIaLc$M!O\<&7$kR/-kB42EiXr0e+d0^+3J:k&(Bgum(90t/]"'rc;XU^pU?@A]jK`n_g6;dg"AljKpt*&1q^_]FG_!X]7qr,Qn#Is4f%rUP>XrVleWs#OO9oY-&M^'$h]/O6J3J7)]Di(&l_]`WMi(8dfqTg^EW9=08`=tj2$4gHL@2bB(o8<fX1nFfM>Sh_boFq?+p/*6U/9-r.@oL']]D*0Q>&/t*+Lm=_aZid*ii#B:lPj9Qs4(uAWWU9uHNd0BU24p@?U8BD]FR7eNEuZZ^=UKUd$O-p$du95,,tOZLG\_'f%T'F^rkFXh-eO<dqP;OK^UfA+PJ#][g,30B4,%C/R7;Js(6sNqo;.<Vf9W*tE`M?k`.=;c#Ycb*,KpHmmkrg2`cV-s0Q>FQ7STt2c/h9*,mbEb3u^3>:C6P>%ok8HfB:4X$/rhG0\o0_MhOQNl5##BJOu/83l`)U3e1A)(BECa\Coh#+PAHh7Tt`k]Lpl@`8T7M&?@3(WBJsN41[4-$[Spf4WOaODPoE1CcO@h#5tmBpM)>uoZN'7ICpVbR,m[3\-7ZZheq@-2l0'`WZ^%LD*&0[hlaV?;7?@P<&*K&s-O==-=oro="IL17u38HW@jpn"s_K1m-[;\01>0Kd:K"OHpb^3O"_/Ff!md:qXtp47eo[kG50r.;80>pS9UUUbFiH.RUHL<fh>mr_a;!c$522h9P4YHY?9`&/jjo`146!`,q4P'@#,a_PXdO/O<Bl;Abs<M=%G^Z".>uqar1pQYGcOd,h'rE4Qn7X!tUC_M];9WVD(ECj5&7h-cIs@\6Jn)?+Y&B",#CA^&79Xl1lEf5G-pf_nc7_o@llE26`U>TNmuZ3%N(aK&\4eB;iBdJQ+XkO]jK$Lo[gJ=;_$bs7,et[9L2"$XpftQ8[r$9$L-:!"r/:#EW;\rgpGj;9GAE5$-ILLnhO,f*RFg*jYgKX\HDlfVctTV47^_#@U'n1K('6s,.sU*l>Y[PtA'jM"aAB*Ol@I`:HD4=LHF$%8[>+3CQo1#nd/3=uaX)5M)i9X@s5A^=pZ]Z31Zsk*N]LLGu7dN8m3)7&GET@1qEeTY!SV)nP(+EtFsYH/=N^POV"-"A!PhcB,XfkXLH'<d3ntBRN04V&7U)QNOF\1MHbJ',l:cLp=s"KhJDJoh_f0lY\3Y%uC2QcIOP(16"9udtHj9i5lUWlu#c#>,6JVk!3',$D)E9?m1na^W#\2CSjdEObk=nOR<(dc*fU'WegMSBFe?rEjW!jmB:%eG#ZHbXso:C<De=D0ulgj?rojiaa:L8P$r,D]%&s"n%U5;k6W1IArMjbX1[f^Iu`fN:i`9R$Y'(@?m9$t._/u3c4Ee'B8A2rkk9eVcG$O^l;ec)7F=qlCf)c-&Um1C_^dY7I8)m;.Iq%]?2`3F2<Z#3I:Dc'O9@4p/@%n%qpk*nO-ZeBgD&15).q>6B\r+u/U)RR;PYjHWsgY2qPh3sS^,X6AQY2"k4nU,``E(piJkN)<B3(Wj#\0n*YRgJs-R6o2_+hlr9oM[bmbC,LM2a*lWBj@>/prL+"np57>+&V+1XR#q=&4h&F4[Drr)6WE"W(pq17[,%ukoeDVj9foao!5H&*43K4Dp9ZU/HV"KfR8d+_d=IEs7MIXg\Vcc`rU$mtR/THAb^GB/L2]&>@W_^?n1Ra#J%P;0)Of%?Q80dDe?LPU^#)ITL!m#u>Y)%+PrTo.RfOD)GlkD2-mQt95_;H+&U_RD?\IXtMgi+&UC@AQ0]I,S\uX!_,,NS(8.f_Vh%G!L-HV*;HXI/$H>m[N')7ZUg<JL+t$N-K[PK@EG57B9FY7I/E5(<>j*1q"#Ri7[iIK>)*,q(T^7b=WV0ok6?7`Y,EE>_>N@X%30bBPDnS^SLaW\aMRB2dM0iYPnR-Fl`;~>endstream

-endobj

-% 'R328': class PDFStream 

-328 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2812 >>

-stream

-Gb"/(D0+IA&cSAir.k6tR493\(>hNjl#aq*SVqi<gl%EPAEnVo-qHZlOU=BHnbr=P!['qZZ;'SR]1]&3a,rUg=?QKI.idd3O/)_E$\6\<*5-@-EFC[-a(ISp0&_3Mr7Mnble'ek+'b.d!RB@:GMo;rNj5hO3Gni_kKe+tl4&O-=NC^F!(I@n(&+A,6Pe%W4oLShTJLfnU]8-n03Wt"o^A.;_bX!X6H<SQ"kkOIr]=_PdmC9_4I7Q!;*(C8M^<fmb?3o9+;I:c*lfIma^iEL9q"@3a3dS"PpTdu3N.4,`"Nsq**`iBM[@,7F-qcKN!.5@1):7[j<@O<1BATDhgY]mB5',ZDa>XG>%E"MZVi39^r`;RW`(J=7DTe0<D^+\;34Q;4c&2Zj-^Sg5:P<SO&J.IXu$sb&f4V<ei4=i5RZ<rkRTf<4j47go`Dlm(u0hZa26l`@,GULd":_PR]+-m0qZ;.@LTI+Ejce5%2`fo*EUJ&pHLciQ@S/l=l07pa4q_m\,\0-\adpZ/;E,3>e?&?^4WJpT\U>YDM]Y`:7%Ch$0lH>N+HObS-^H3RV5EV`LO+Wda)Z7_fPIi/!oY]ln"D8[MIoL11uF+7k*$_[;,FG6nqaMrhU\RM+O$-66Qd_Tt2qV*Z6^4%9(Mt+Z&+j#*QJYjn`PRDXl9Fg7TrI$C-g+PXLH6n0gq,NY<X[PMZe'EZnqa`OB.2H<r.Cd=hbXBU/W>'#qGsR`%K2`JGInM>)[_?$'RF,dmE)+A4OM_;MD'RMP@m&&T!N/rC$Y"<:I@'TsLL59+NFQRjr7@4h)](9]LYo'e-"k%f&Jh+D.N6:2Z<o!bBpbMZsMQ^gl?%+]Y_`(2&8<0YM0+BK8TlTOUIk<ESApJH@*kBHAMSLiRD2Qk_QR%4J1B+I(B@AdFmH#;QlBL=5Y?A\l?g/OLd8!YU+?TdJ3(`+riTZ/[%J;t]).p#YuPmoN/'bR?GJ_M=GP;J%D"sbt*MF+hBoe"aF1,6go5_1O(BTB*S\^74u[5i*B<OYNO7<`AEe"j?J$IhsAE[mgnUW8),:l#<c0p"s7pOL8$(W&^iqq(Opkb7m&Qk9#ejVjN,V"RF4pHIfr3+8a3,I&<OfgFFjg[MH%8cAI(?aS;<TiW:VKhfP*RDAE];l\0BF./q`SW9c!CY^K0%7@2EA6e7O(fA^lQEr1Qj5#GT9'!pZBote/)qW1J3C+sc,,6eiq%]g[85snu]:N8Ko]/ps=m8-qN'QVoraLq+"%C>[/RVo$4C+`DOB9C$XbpfKS?A!$G<H!Kj,Q4]Z^%b1O,J0]agA=[E`.6km:1`'B^Mj)13+I,W+.9RX6@E^%!2d!HIIgncgblNj;#A8&!0t=$_A=/VR+i&I$O[Tj-UnlX9U\T9:6K$?bqM!'o2d1e%rD:G]E]Mk/AkIG'X&_jRV)T\[jsd^V"gmVo5b`*'!n9EHua!!f'N)T+XW<7u#_VSKB;8FtmM+]^\Z[M!/o;msd/Ks2[\rY#:3T!eu)[.CPZ#1ob^[$c5()<26786<@1A"O"L0AK,?3`T':Le?1<s,XJDG*>\E::dU=H'?P(ZF^(hS>&hb=b2/atSt?G;gY2jFAl!e5V;\n?"\l)QQD2",0"G:t4a_VTiURCCNA8],03o!i.FVOq<GMP%G[jm58b&p^C<;a\4IHpt\R#0Y/s;&?3ABJ'dFFt0at'7&-)Yd<'dQOL0fW6$REV>;K(/Dn33DYo!(rULK_3kh[`<KnjQF.je9^M[`:W'U+@,[Jk_9"GWjnr-i<BQ*[2YVIh_6VfpUJPdYVt"t5TJ;5)V"mF'a&/:&_oEu1.bB_P!Z].$5?P.R/*D$FNO>Ta5H_f`rKa*Z+QudKY`pIjFU;,]-TltT;oP!.>?\lHdk(,)^kZu^l2-i1m5GhVQ4DUR40o6j0c'4]YN:>/bQi7q:+*U\-"X^nNQOH6O'("SGm+gF5bLFCTY&K&V;NndciTcb*;`uB)DZ]42%M[gEZ+[p8ZWV2:DGb2/m^?k*+=Y$.-W1^M+QH.le3@q=o0Tq<UCtS\kJO_oGq?^F?s3=`lP5Yb$c758CsiO]"O:-tD'\!VFZ)GMjRqEHVQhk'I..c]0S4Sqm<:5#u/fLVF!Do$e2Z!f#/k2qB`h[&rsq-51)#nOL68'f1[;g)V:6m(K9N&f/]5X[/!E5ok5F*Gso94.!-;`<@%*?cD*mo[-tBjt<aZ*eGkgGaIR0>i"%+KA'eCLUJl?01s6jM1T_.Th?35cH.l6-k-q</XT+*q$Q0F7^R8k)>48rmLJKd3i;UmPabmMZ+poF4l8q\.3tbIRuiWGNl/6Fl!C:=TXKPpqaLX`*X?gd%n]&[TV`QDl>Ajr_*@^P&#2fNF8McWpa/m9G?]8*-=Y,UfUf]iWYA#UPU^G\F+HXh@XOBM^/^p3oEu%/8T*6`Wo3E<hA'n@#Ag"')t_9Y#,e?)IpfJ85sOtQoZGqEX;F<^OjV]>lcBIpT/2T8]$f")-@=RT<r*GpEnMH`>b-8rl=TTZ`V,T#EY6P0N#]0.8<FJ5\DrE_!]#")G5^oK!cj09aRo3>9K77=M.V\*9tJ+16E[]_9&=-F;Vj)^Fh,^C0:+erL1pO+n4r`/S>1'=KP!"S\u,nt&uIgGqN%Kfq_3F'="]pe5m=:!eFs]hhn#T9BQO--$+._rh0gLCI<g/MK6#<Eb5O-]qbJ2smid.NOuJs)>\J"nFnMf\^$U(5R]::Xl?(4f1?O_M&6@oI[Gm`lm<>NITma%F$*5Fg?R/Nmogd0+s*'C>j5(h_h#Gu^HfH(=s%qO3n%M2kiJGn=q6U)&UPg=-~>endstream

-endobj

-% 'R329': class PDFStream 

-329 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2771 >>

-stream

-Gb!SmD/\/g')l41s'a8-QPPTrq'C3-%u3g4m;<G_gPtq;LWb+=-/)r]M(0r7p&4`8L6O!p[M,K='\aft@T+I2S9a7b(P^G[:[%dI.FF=s4anGM32"rV_GN"]fh;0UG5pD(pD[/:O%2#D"HtS&m#6^A)K*TI8UhQe`cQY/*`fE##Qp#[K'CsUAngoQHgn2%@*IC!h2b^ean\;m]qa7*-c*"SpVZ^BYFc.Ykmr$@DA)c#^\rQ[?:KS31`-\Bp`H#eV`7XJ_r4`PiK*Y66C11Y(ls<s#k*E[]\jS3qnlgq%"(+JV3!kMqn]Lp2D3uk'hW*_8N&_hj]Y*9<150iQ!#:*Oel-o?d?`YH*0k-`CeQ3ZWAg#O8h(b9%S*$$Z3g[d`'rWoH0u90*Es.S$]a`OgI7YL\3I<om_<6ZC!7oH1UpVB8;i2Rd/s&(<_aoIeMjR>t1IS&s+&Xr-Z.?rQ/h\88KOY'%UoU;t/IOU2rLVf`I<C'3gpk=@l0&@"JuYFimV8OpXnkZ.=XJdI^V2Q9om&UfWlCa';)fN-U,fN-$O@OHCVWAMAr/\^":]Q!o&;(+$E/_A<$3?I2+V)m/,X"r-MmphV\k_OE8"#6")UCc^B>;:lC+k7\B$Z[b@)E&?4!Wf<f_0FjUqT#d1!/#XSaV`5,>1foM`2Vf[6UC96U^_-U7oY(9p"f'6?6;Z"]YT@cOZ[:Et+:L@,bRB;q=,4/!'.KXjs(<ab#)Z+bbZp^7+p/>7*a-0)HB^]1C["\,Qs;eM['U"&K%5E'>Hlea<O$QPj[Lku@8-%!j*%1Q[tTqgh'/R_S'GSgl5]qak]];H9cgY(Q2t8H-nSi,(+Ne[$[9gnD+u)NTt<n6EH$(W#^8s>F*Yq/kA65`cD(nFY/8<!$-#kkJUm:7O^c:]YM[PP>)@&ESIr:a+T,CLHP\/P\e6lUJ0<LKSQ.O2%r_'k,H1Qm]"1IM?/9$eD^$VqOK>lY/S)5F'$5H8^3lZk>Sqi;'4ID$nY"^R9@=SK?Cf^]c3Jl+9#LQ!kTYVJ!MM['O&Q!]UXpu]VBKJQ7)@EkmO">q*;P#$kWO[Q>aeVpN]<Z-UA]kbd;@`i(jl:$G/I!*k(q1\)422e2q*IJO-(q!c<\VDpnaNH75Kde02%!MiTfLglk2ut@*"L2bD\Fn=sM<n>]s*:ELqtqThS/S;tC'"i!sPrBO2HL#UEY@P9;j<GSMH?cG?0:UftBj!:2q=+?='<a#7X@8/3',%71+uh1^Nk4sU:'>dH4q?flR'm:Uo>3beu%/?Q8oEr9+'NhPC=:l1RWJ(I<J[Okdg,Xfs9i.WUC1'076&<T8?dsCUk?%WGu7=,O.ScFcIUYop`5A*1YGqDqH:r)6T98Lj)f0.0%U+7g6NO-u'U9?`F+RXSOiAi]N&n0`HgJ`'/ZA(L^e76$c))@BN`_H=89[>0-dYKaAUc8C_PZS2d<MT1/1mNnnfr0$kGTu]@J[+#p#GKd(==W16W#OT>KnVOT:6DG-[duL/8G3Q6OF:3:['hu,I5otEK,KZGh^&6:K8kIQh2_lBr^J+QTCh/LN]IGak(Q%e8SsmOjdc;6/No%Wm6O0@lukV[nGM$'.9JA#r6t'uR#JWNXUZlCApN8TUL'3S8K$EZ1`VNnCU&:\jj)iAR>Y7M-6G2<EfO7gCq(:W/Q@P=!U3=eP<@Ck,_E/Aff?ige4XAXdP4fu5#cTt,e-R%\B1^_'2sla;>FUgHP&\34_LI!'&2h7e<%;&hk?0;??,N([W0FuV.-`=[2j.tYd&Qsmn1o3pt+ZJ>S6dT-L*)SPIafq5Hdf".FdT?D/)c/$8TnG%O%[\f`pWWn'\[gdQnJcLNOpAbI5qHBK:\(AJQJigr=[DJ+ESM?(pp'A`KoqeWt"5f.!Tk@omVuQAtU1NVd(tBYL,Ea&Mkbb>d%M2_5>8\p@+;[8gcYb6[2XK=rm'+8gP`@eg!q]6TGu%lPh]6'WI,@^ZZfJ6p%S\2p^6I]Z=l>BSjmVG(;tZtcV\;f,2e>RAcA!djtRk,h-DM#t**/d*qlSE^Nog*$Mn&-*>23Pl>K'J],]RR48G\;/.<]uINbm=82Z/V3l46RnV_+o:*Xisq[#K=c5up/T4`)jRkYBo>k,>g?KCOkRBepE<76WirHi'T2LQo'07FA581&?]%PUcY;2m4'H7V:)CAHDZg]rkG5&HRo?\jf#pGcO'KG$V2BV`[7ifJ_nj[e*?\o\Ym-j'](Bq3%9rLE]1Gs#[PmaJ]=L"$df-'HdXZKolkK3]%c5oV'/A7m1$Q!JE5ufto'O/nn($/LND^;F`YS0WLitC%ZGplcK't0%2)iCfL>$"=3K9]?\,In.%:W0<#-1d&$?k;"NN.oJ@=;#I=#Y/O=7'_0Z6/mHokFrF'@8XM8]mp'@u/QHG-UQ2D,o$dHJsSp-a$"$$k'qGQ^c0&gtffq7cDrHkSK#5%`IEt1Mo)[@GGhZ;eNCR;!rHjWnqD&*habXOW=`X?^-CWd7'Hl*c]uNE?;R+V7h%OXJUn-s'@kTm<(+`?K,-k<E+WYf02I5lU&kXZ=7L;"/8uN<^kXiMulebR-YaEei0]B07"lfKV,d6!R,D+4D3)B(70:p@e2ZLl*,[:Q25RHj`K#``ebo^3kW"B7c,M8nY,[9G+Xe;"Z(WHm#Lf*Ie8V-/)<\=CcT,08f::(El.&qP#Yb&n&Rt;I6$K=F-V#,XGecu/'gZ8Z]a3\[k$\=MN69!>@]M&m7udOolVV_rDT,Y'FDGcd7RuUo=['<^\7u$S5#:~>endstream

-endobj

-% 'R330': class PDFStream 

-330 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2785 >>

-stream

-Gb!;egMYb:&q(:PIjk)'S;"lr.I&h_jD;+X!Ks"3Q(8qSpRt0eUgB7$VRpPFIm6rX4"VnG'*MFi80kJoeQ&MBSSGbj_&q;.)^YQgfC8Na]&7n=hLOoR5-3YZg\&`+TBrac%\NRTH-TlRF#qWQ(q\<SB/,gch@0*2?f7sW#hQn*$YMJl_)a$[iZ>Jm_O8f['DnQ5E:$D,_>8YcrgPe(=8VloqXA:XU4qb@2lV&tgQ+!pUu;,+a7XH;h!o#Mr'(4320GAV1#-p^0c>:f2uGsp*(5t/4Q38J7`\QHLQAo[d!:pKA\dXlD"9Q?2_9Chp[Im=LUghZbi/!dc.i9R]n50MGUOdH3ocpdLsW:,/<-Z$rt`c</;=Zdgkc^Mnq<i/KGsis/hH?9PCDOqjsoG<"R`@?=.&klkD[0fcCQ[pB;i"pJ*crO3cV$(i6].k44'\\*5@.]di,p<,@DE&*f2usK2`E*rA_Y+_AnFEKJMA>D6A-F7O*K'YseV4?j:)cZiPCMiAJ[cY*;J"TJ7G">^>V'AQ`8-`.?,!gPP=#[L/#TO%-BokNN/YHG6ep2QggOFDUoB`0k4mF/'C&^%nGV!nZD=$[+'IghK6[[7O^*S=/\:c_mc.9P49O\U8uAGN(/SMZP5HLGI?<`2c/P7`s4`3q-!f"n,@,eV<#`rumR7cPD<Rh)a>#GNR,_B7R[2qoWp7!=3$W*SdHQOs5K/AnE8f![8*64Q79d9K7`aa"kQ-h>Hh=(EoS6m@-&'6GAZS*iJ!FiY[*jL*r(H917m)PDCO/eL8<%V*_Is(,-GGD30.4MW!O,_?dbJQtmrD>EFF6:mj3cbk"=e):DIe!C#6K#L@5JgTY$iG)eAepXK-E)qTYu7C;/G%lXno4WG];i\R2@`Q)1DX1J-YSOr^@/O1[!^eY>c<Qn]/;nr.bTCshYXhYeD%>IOY6Rk\`R3G\I*&;ET&E3dp!1u_)h%Cpudo^F2GR.g9_Ph@9OG,-X6#'R-Y&:PHnGF#cW9(OJ`RF'4<l<FX5H/;B:8a^?T#.V#"c@6.ii2lEeB+1"A+6)OBt2&T>G`0+W!@H"%_P=R?(@%)5fVPE`7%R?Jd9-dNNM7_Kl$U9k#I2fYYgcO1il04?5/@Wg#9+MNr'fj)F.Xnid1rZp$%..M!BfA")W_5N=@_&nO8=a`T*;9D?<^_s6a&MaA=Hqgq@adVDYh$Wo<ZLT0L&>;oJun>f:5*db<TDg-Ri;3IG@G=p"1m8?2aA'tB2K*04MR'G!ocYXMpO3a(4jZ+dZK3<a\#-GkuuHbuL!cm=%7;`+W].G0noEMeSIUS5&)^SKmV<^pUl4pZ6A6]%0bbNLO>2t.51Za:he>%=ju908Q``(OBX!MUD%c\[@Z_"XGN6FEs;cMG9D?XR30[(R>4]K^11pN2""-$;#&^5)!1MYq5O3j0E!El=X[.uI[2DHd\m7(I9>RohdahkP#7L1*.q40%"ljO/RUj3b.`6dZE=0,2H^n*s,D7[d^$-p)U*eRuKM(4iDb9WfOHC,kj_bLHboUE/)<p5Y=sp_1[u6gGtDqD>L,G-7La=-dT*HGDs?XQJ[K_3`UD9b[p))EG,HOKK_-H4X(s)_uP(ob#qZ<C)01)@6Cr@"X$45tnfH-?QJI/L)=i:m\P&Tm.&Fb<D^kd*053;6:H%Rc0`t5[k3/fPOCY3k+m!+C:1oCY%j<0$DRC4h)-5Em`:gGh#flKZR8e5G8"T+oeG-*Kqr..("e;kL@ebD!C)=ebZt;#6$$T"J[g<$rr9W=Q<'j+D"oA/;W!<b2^#p4a#\K1Y&_JkO!<gB?KcK=tlMTP8FNb9DWlgM8*Xd*bF^pB_Ed$1nWq*FuuV(6gH@%F>Ro;+$FoJ*JtkL=?X2acSh'iMlVlEfYW1]H--j6$rJsq7jJ_r#ZSL9.gkj@gCBqh"KEbt<%0dX7QF>I2;V7Ip12QJ3DrD>:H>6u*[;:9>L%k=l+ubQlQSo'4V-;8ilKYp8rl)(ajOlKCbUlp<q4s+9'E^3Z71!O[i8n7%[HpUS6G^!8\cRO;^,H6[3enj)8!-Vo=4@:YsY_<+.P$V^V$6)4hI2NH!c#M>"SZ.7Wp24UFoT-q?''M=]L(c;k1g:,H/Rp5se[_`-tbApm'=7gsiJhDd2n=.<?lCZ%\T0YQk3,:=cUW)D84f0fB6'M#BLX'n41ne\+jh=s+nq^Ve3Jh$Y8mjXE3p5\6.%`RmRJf[me]EHc_!C2$(ndOgKaC0DPiG&O^ZiqATsWlA\h0KgQ:48'f$+IAX-@/X6j2=,Tb)ID1<dk0CG=4q/-@rp?3;Q.6sr&3/\Va=*0pJ,8,6o^;8a>uV)qV<r[*Sp+Vo<d<"ol*;r_'i9fcAa!$D1`Iq_?k$\,%.9j_1=Y&d]15:IE2*up#eWto/:hOMC!X'ebuGV.]6?j!)G"5Lh)n)7ii]nG;]C)>/eO>+dp(&$IPFA(YI9h.dl)5<g,tMS+Oe?q:G$\g\FE\0:7[8Ps+Gu%EmRMfqM?Fc7'O<Y?8#%BVhZaO_@I#3_$]Rb%;@Y]^B,8Q70[SLb;(/YROT]"p%d(%?NK79j&e%5Z"&cp9#tq!a&]X4LqgM\$r3NhTFS;ffTOGrcnOd.Rh$l!A=?82n81@3UiWoL#8"n1Ia68\:Kjco<&lk=C!tG=Vn+0"etJco[4XZ,au)i*4tJr[XEp:"7S*jg#.-O]@,QI[PG-f,aCjFQm%XE[Q2n_&M^]1$,bIsctSHbN(liB0ST9FN!c`RjKX5JjJ[L7d>02QZtu)+G:.jJ.`0@FIfY^11^s~>endstream

-endobj

-% 'R331': class PDFStream 

-331 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2270 >>

-stream

-Gau`ThfI79&:S8Hs'^\LdZ-==960Ah8m5U0,ph]Qdtb8OM@Uu'\2u"t^[LT^,Y*"`+p73XPLuf1Z+&W"hsMtG3W;GE2lcq-h8%Ls,D[,>.3M5N!h7g2gZIII:])/Se'eF8$ZV?hRaH?_:SN;3SBU#,Oi#Yd#Is(R,8)tZ,$)l$2HBJdc_+346qYMFq8ZgWj!aaA2BQ>u$_-W%s*j5tr,l]#Ek)f]/\:,c)]+p[1(dA?i>+)Cc**pCTH.R?Fui]*jcISRDG(/1!38_OT<H)>Ffjs;..sEg.p80tCm9(8$d]qre2.8Hr,BXaY-d(PD=Bif^%<3R!`MJ6eermuV=rLsO<,Yg-QS6*iOsR[(KOSZ9!<ttA:BC4.Zd)m1=(:b^JbnYe!)m$-O=rsN)%k[i$?tJ=3b@B7Q6HPrmZlc!H0*edd:XCag*jM2V:J_CF]SRF/GJ&HTs`A&%K_^HEZZm2!.E`)3(kE4LDN?1=^XCBka`#Y6T/6o[Lst0daKGM9;r.#^GJ9dh!)`=]S7rB&F(=E<oeqYCSfd'Ak^JL)7$:&p#gNJcG4MY<I;RJ5nIq5dkAG`bR6cok6G*#*H*KkBd]76"G`9pmq&0Fh(A0Vn9BON:g#TV:TB3gOc;Ek<%=r!#2tUHj-r"S^C_N^PK(JT*rTb#M'mdKC(t=3n&@_Y\h%@\0K90JimAr-cef/)m-"Am]!eI),c.WXUpQ]:1'iRgLDHKjN;%7Din=GCN/#'bI?qITC-nd>V+h,F8)mgA:::ig_#Cle)=M)Gk:o^"+S&@ggS-C5j"22Y3o$gkiI&\/D%p5/Au!8T*-^r@37sK!DtBR]+H.l#2c"XE$hoPnq-f>gf+`CD)J<JACK"k<%pV8d4%2*pYt.a)Nl?Xko.U/,"]oA$Bk'KXHWTR$0MQ&SXB)a5W]0Ef?TTXUPptncg':(S\lZqRu`W'cm=E/,(?5#QLc*)f,W>%UhorR,`F0DjiTJo\`7>".!2=t3UCp<q?QrCD@ED+<UZ/.Xj'C%(\-uG=T$Ke\th%fhst);?d-p6jOqLEX?3=5dR_<uIY=7u6QE5H4<@:XQV.poO/=6Y<XnZ>BPOhVMH-)dbakCXnQa#]+a1>)9S&%hL^=*HAk=;1#iId18Ie%S%=#UL[4[^8GHO`&f4171Q0"kALb/*H1V()4LZiE,I<f7;,s@S"Y0D,lK3ZOaO;tDs>NX:7F\+@LG6[Y,TQ+C7eJ"O+]]2*^DJ#uhZ6WtqOE\!*"&PEWi8.ri-".5Y4.+Ts4f\o@!G\.\2U5fh<#qW!H69dS@oLC*`cHWMd',JY9Tq@5@uYW_cDt]+X<d*FEHe4+04@QY]V4&P;Rr+f<7<*qM0O&6nD/`]p/ifu&im6nF/5AWrhe#e?@=Qcp4CIk3L!>D'sHXl-n_eE8TpcX<akA5aO2C58h&*)_4[caonH+C,kON`,q.2Hh9=H__)2$CP"I:k4iW*u,:bD#g0>RNX`%CXYGX_j3cL(A+1ZUJ.@E+V>582%4(IrgfJ<(tW(a6l.*FpPll.@36Mr\JcdQF8=rgOd/l't<K2IYI&3-n&bhi[Dgl[rMQu$0C>5[:N,idPKMo]n^/["'F6s1LmG%!ug#>rMFA<=mYOI-;85"8E8QXX$H4M0+-n-O59G\Rrt3ZOU;mGG.V;,btWOTRUSH)@#.F"6FHS9$T=1M]1I=jr3?a6To?ji<1t)+BOZ.QTC^:j4qoKeXAi4UC;=]=4+DapoX5rN%<EIYH1#nVrO?6@ZP^2n[TO$uM!'U91lZC3!UWD>p>nemf4@WT2abh2aLb#rOSl3MGe,$\`@%6Zt44A::6M6X+n^$1kg+`gshO1Tqhl$Y7j4i63&+K6(j=K:pSJ\?hl5LXYtfd@W\%iR*Osbd\\#l;ObJCq^>O'Ubt,T?0I7/CgT88)9,p.J%KC2AYW?J'X5d>#+N!PRE?WH"af^NI$KqR;&ap@B2Q+5j=e(%X+?p.YH1ur_,fd!?:_9]nPD_m!dc5bNSZ>8dsqm]pc>GK'9.0dHm!mep]l;CdE?d9HpUYFOt;"B2Q-V,o_/5_*o$#.DWcsk51S&D>&CqJ/FS\FcOMk4!1QG0Or=QWt#GY:gr1E[[k.b;'FXTX1KgX)Dch`1rD)M2j7T&OTH<RoQHPnNpkgm9rH>n'jp?0^JdlGZI11'cZXV@_R`K9DbY^lAf<.XqNc^M#P2ml-F/e:=tn(/l3V&%NIn%N/K@H4Fn=c=^%m5C*Y2Hb8M+IAJ).&UbgqncW86p1Pi1MQIfV^;V2k~>endstream

-endobj

-% 'R332': class PDFStream 

-332 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 4195 >>

-stream

-Gb!#`=]aB<(4ORiq%%csdpQ_>Y3!mNA0XZA8E`m@mYAHB.RVu?gU,.TAq'\lYr5fa8O1gWE'fiXG8K(^-#9hr!:dgkrkGN7GdROl-S^Dh=BpG;NDd"U#i72*5PprL`]ZFW!CG0j_`V+J%$"e'(/83MUC>pAItjd,6lb0kBf);i?r?T(Yn!LN)J);gV#T.!E"Jc\@.>%8r/7$5)u]`)J,!ko;)4aU@736p5uf#!U`bE!6:e'ck=eE0&;iL:O9FASJfljK#)t/)o&m#h*;*1"KI.g-F.s\5j`grZ1?8Wbe!U607Z%eAGS9DPg7Rr9E7A&gMm@.`-G:k>]NfCQX@d*pI]PRZf>[:GVT-'p712kZ[`UZr)gO,G&gcR-H%.=R:%IDhfAP]Tj,],)TV/#n*8nQ5+#V6*Gr1@@9L!CZk4lS>g7eU@m,t,25Zr`P^>i3R=>n\u=m')De=a>TRkCmGH+O+oAI$r%.n%Z&r4E5>"6'Ui5;')t=NChco'1O,elMo?3P\)2h%iEgAqV=urHS@WTYs4HBbUeo9cad3ZRG@#Fn4te%"(-mP,mne05)(rcecAt8kE0.SK<ZG7TGn,HP(g)%G:Tk^2DX7>W+2-fIao7,%-cic^3Nq"=5poc$#].n)#0p4)\S51&Ud4:^a25Dg&gJ#[:E\ht).sXMB6Xc-g:rR*Rck%rqI-kgQT:hBAHI-bhP)@baY)H@_:d-;>:FLp^OBDQuG+,8)lHOm^&h>&+P)H@ga[OS_NGO2.]hO@SS'j$%)r34Ndo$;;YtEL5MOL?&D.U0/h;hj98.^qG,754$,G&',!CmaSPkZQpq2ijibUZ&^9&3[C(5,maJdG6l?)TI(n6%X\$EX"X5[LnAB?H!BDICGDVJ^r^Ub1(/`K&l;]%lol'K@@[Ou83GRRLN`OQc%iMc8Z**FP6[-mZ.36%G?s.qA4RD)i6B;`n?lpgGgn.i,,RaBJNlq+f[-V.^]SuT2%lR'Fg-NhNa5R"j9m%(b:NRs==cWWIp)\p#X0nJ*`?G.BsDPVG<rbTB48]B7r2e;]4aBoX$[Hs;dJD_/,TX5*CY*XXu?e$FXH=\laerC[bX1*?;N#J,Kcn,8ZC\a_GaKZTc'Ibl3,GkL!Nh%i+peJPb'[,T(P0(%#!`i?5uBXHZ^&A_g&oe?L-tNBit.>s"=;EA";3aCL`PQ11A.Cd3<K02Agei1j`Mp'o([mmWUe6^!5:UnEI=kGQ74(lW]M\\+u#mF[Z7O*mLSHgj`XMT-]s;<IX%5g_qa.`V=.c?dH&Wa^X+W3mR[aN(A@=Z,26/r/0\;6.s!hX"Ns;n]Q(0>d_O_;r2aO2tfhU(CNBQfKPNZGDSc#2<iqPPFtJ7`Mg!gd8Mg"&)BWi61!t6o-paEmbX\BTKO0>qM8_3SJq+b1i/k5a6&&olA6@q(5q\RI((%K?cuF]YX+UN*=m3AOZ^g0i]&6J,\3?jYN=gN9u>IpG&L;]C@9q"IJ;b7:Yn7tD.3h5EAQ/Y`\_KiZ?r>JB9PXYmLPj2D;!="1Q6tUGTXa-P+QushBhlmi4L=Ne)7<ELn-gLYTG[=P$gL4N>o7Z8-FAfQMcFO:WUir%0(d%7uX/HeQ>D+cpXftL*pd8QSga87#9%FTTnB-"4-2*a=0>>;arSm&]?CO4):RRfpAsEMB$:UWuGQ6FL"OgFrl\62M3'dW+8WQlLhM=*u1hSl"?2TG,3-tX$D"]`V3=jY=,Cl>VA1<j"Hh[H`EQ:,#q[UO55uTITCa=I^Ti.4CQGYWtHhd-^dEs6s=7"fuNn<VZa$f;oO(KF?6!)fa/LJ=G#['-`7+D38H$LTK1EA.=jZX+?KY!Q)Xs:Au8Zk$l:;>qT_D/brI(HFe'^79W+-]Kl<VZ)#A>*dcFE:0iOLD)KD-H<_`tn0aQ2@)3q/$>!kn9=$`#=-Z:4XQ\;=qUEg'\#Pg1lLHp`n,R5+jq(r_>5_fjrQcY"0!pn60<.2\a*D!WITdZ1ZL'_@1XNJLJWe6Cr]4NZ%gZDUn5`.t8O0rpufJ^c2"?Lq/Eg_>h,=6k/Tb=%te-VR@W(-0hpc)I;Pt8l4K'MJuTKZ+p9;Yo3SEf6:TKWBq96U28j#-_e6&,;f66u`9W_KBd_&><S%ON3)d'sgllHFA8`N<PH6Ers=AOr_*g^;Uc**\)7n[ZYVn[Y2!qebgp7U9#`aQ,16<N4*E\_0?Dng[JdQ\k&3m(<tq(C%?ZMGIb1@-<eG^C[n$]D\i%Rf.%IauQS)9Q?;)jkp[lQg6HgEAT)c_8S](DKZ;]=A!UQEKH5s*<I6&P[";4>$QuD+_!0hKbQn49nAB/r+R:%YS7,[^;iJuJ^@:N[O5up.!D)\^(Q=n$>mRK":hBilUWBb946fA3$l]Se]k.GeMNtGfdR)#aTS\Ah7OY.9c9.Uh3-TC*q7n]]EJAY`\`$!$qUTY'5bT$1B$DY$AD\O.o,KR>IXjb59*m\':,6&Kj,\u6aB/U(8!,4-D+L5Yi!L(GdJ2sS73,/db*aMmT92e9^s+#\bIFf]?=J8$'s%FHkNpEbq>D:J#[lcIp.]'LY#-)N0`5f4i#+Og@Je7GY574oFN+Rg8,B0V:^'>LlXXbdd19R4M'F/c@d<ONCalt5aiSH/rJ+dM"Cp,hf[>WT`rJMgXNHekDEEDR**Tp4PTm4pKe&Vns$&5RAYfgOlI-;O$kF5.8M$-Blq$JOn/T0O$kF5#+sSFg&7f=)#\%m_L<<*'!]m)T/+/O,#oiam,M?9;Za?m[-T$=S.b&GBW"rjR$R])Pu@a4SF.*WoW?8MoW=D"gTOXK:sb57A02VgIDO#!d)Eg$4ta7#,"UqW?iV8b>")RW`AnW>NOIukKaP=O2n[,,?LeXt0M<e"g%[r>*bNZpCfd4!3U)T1om?>r`dAQ\Z3Zs9X"joulXdCP>0jMk`(C_^ZSM#E+R&Q#bF@Lg>S_i2`Me[*UT]Yq_"mlR^OLV5b'LVt\LKklf8%*$PA`^Of6?<"IJ:DT's2KU_@Kb8S$#kU=45EQ-%,rf3$sXkf6+FQPS`X0!q2W5ihgB"_5=1Gkppaom@\>XXQ;qQ2FY<Qmh:6e20FP:jrIReb9(+p[,dq^cs.5Yq-(E5n8HHGdPp'L"aRA-/"m)T2Ea2-DTHfXX;?fF2'.@4<KCjjqW+[^V#&9I.b]7`!K.=]Im79O$#P5n.cfGpU=/jXfsIfc^*7JO&<4l1?Bn4(Wn8lWnq&ldcoUaO*k3WLc#)O6>S*?1RbE5:$1tpkjLcm/]Vg1^kk,X_WJ>Wm=d(PpIP7&F7D,kbmr5Bo;jA@pT8Pf!pOQEE.ii9naoQCYpJ!+NoTUt+_;W;&,,-HW/>k@6*)54M"JR;e6W0:>a8f(Y#,Y6e%_SM!akXB-ZRFL^8RXQ\^e#7/_l<ss\<:;?kPMLR[:oN1LCm[Tc*O<jcN?hI3S`@\cd=T\iW1=^lOUMfJYhEK]Gg9?Il'S#asN@<J*un`aeCecV9.(`G`SVcpO8kuK76h/$j,WpV&r-_i)SmED6CX;pS>b1O<!:d'plE>F4g"S_U[T7`i<mu<Q*jY'HuGPWWP0Q0Flt/_g!CXaiRJ;O54'e<b)#s9HUUuGj'PqXEA-=HQL.Tkj.2fX#YjFknP4HGVt8(h*0bS%b?qi*eF4DcbYbH4mGDr0eW!*$1\5r%eH5tqIDt*dn;k/7X'1[qGstd;EMPGWup>S]oDRGDa0'3kkBCSr][MU4rtdnRBkAh^'kg(Zr1c>@XrY0Mih,;*D7*b+_OIu</WbhMF)>H$SdlT6-nId+bkY>Ss[]dA>j4t@M`8E7/T^c)DBF1aMb".=p<="%L`'U.2gZtMpWC:qA/,V&Ru\JHW2?B,)s8K'=AC"2<X6:@i;PK98AKXdb$')0+?60F06Q=Q4[oDFP+YYNSTgXgU)7fO"SA=5@t<c*RQP7.]$t-G)Y&DKE@MIF(;8UjcLlT`G4'nW?^9)"TiP^;-VneFmpMPlA/Nb9Ed2U?q[*$Fk"jC#$rkpm87h7#:CH*$s0]hRO,#?R#SQ8#2Lo%n6I5@8p;1$Eg`IsZq,6<'?Rsk[-IH@'Hhp0*cS.)CU??<(h]?^+5Ao%(cbUZeT+B>N%M9rK3LjJ3H`EDjdKNjX=.Xu==mKn9d+2rAm:j0UG@;dCIEo4-;H/X&n1'4X:]G%i80,6:+bH<@Hq&:IWd+V2uKq(aj.06Fqo9$m/Ia2q=4~>endstream

-endobj

-% 'R333': class PDFStream 

-333 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3161 >>

-stream

-Gb!;f>BAQ-&q8/#rkjb/cA^5p$qZ;eoK9\/c(-,&A%-mV$Ud;o>2DT-;KRBdf`cU8.>^Y3:Rkr.#?WMm]AMHF>%$?.9E"5^!'fAYb;U2=2V]t$)Asd0Ih/aOT0N4Sr`D1k1BQ;h-4[1mN*C74'k>8%**TcQS*/+ZCIqqP3&WLg@gDFSr4f`Hm5csAg=B6<P9jI;_\[:l2r+G+7/1'dq-<jeqlW?4A;4nj>(D3]gAL'%&QknkP$L.GZ$&YcR>hZ&Cec@i7oGQ5iBs$kF<&A>+6Y%Z97GemF]FkT_f8N2OYN@eZh'%(U$#d$?bbtUQ#/S%n<'N81Wb-*PA$A'.E/lrhM11FYT?A&kU4da7@H4jEfBP83<<QLn71M.Q8pZNX2hcSI31Sc(2diM9+f*+%sXJI<(*F5%tEBj=-K?DB-%:!\rk#H$&^2\-drfs*!CNkN<_#""(8F)^CIq&&g#]F&9:7JakIa@l&)=Qin,'MhS#G&=U5mc:SVr$!K%&j%9!*&[[^IjO=)SJ+b\/f6jlhS<H;te/rc'bG<@aaP:Z\j+M@YtRdWFt:d$rdGLl4T,hg^68!qu9iAXI8IgV6,V^6u%Mq+N!GF/UGjkYr5n/,W*L8[TSC&%Dq(*5)fiA,k,Tu4lY+cZ"[Po.H4pc2+[k,tL,>a^=<^T;@E0H+RGg\l0..i&(m2t!_KS;6?4(_/7,_MTYrL*[gAk[FHmL_*L:^aND6K9pM2`D2ana*j^bAS<]RZmO0H7&MRp(.f4;eUe\]8m0N+Wcf#kRf'Tb<JM3=rn3$5a`N#rq<?K6G5qO5QHZ$r&M!_`A.(m2`>SGi8)oUi;D[r`F3^KhMM7KmNSDEs8WG\d9k2o:4YheI>pjE+ZGWSu@#&rViP@:h/[Cqp!+"/6g>$j@K3]Yt8k!<NAPB"ZTNeNUK"]m_%p)WjiY2JBC>>nj_(M_ZU)HT>QdY:R\oOGr<DW4n%bc>]HuVU+`GM78Fr&]+m"pa/gQs%_aL\laNLa:\>uLA!B<U^?>psi:ZPkq"_I5+,ejMA$FWZ='eqj%r8W-ka@0[haT;:j'44@JU2+Y<kUq]T/8DWa+4(NYWNNA%B_adn;SPo/JC<u8T7+KAi\2AZ07GB8&0;S<sIQpN<Uhm<k=kntd#B<W&j5'6O5&SXdc,W?6p&7*3[CKpUA)DmFNUA#.417c_!cu]a#+d=hZNJ$6E-,oo_U.G:oaT,G6tQZrO'q)%:'Ec)4mO&sXGE=.oSB$Xp?@.NMEq]>S[YRVp3+DllL?C]e!c4-R\W`CE>&EF4@-(QU_2/9<FP;'R;rhj4Bh>BIN?sR8+,74p;d&3AQ@&CT_<P.E&$9\P]GTe&G'8'+NB[fiJVdcYGan;Ro:-=@$.9g;JQD3%%7kC@\8>t8qTIA.i'ao-OqO%F!_MG&5?G,MfE1@]kW_kTIu0/Qc(;0Bg:aTaABYIRV+)1X\X5-E4HRp%s)&nj0a6/q6gtVEcK9_jmr'\<$CX%rE.-"\J"K\0$0Op:ug,i!-rHJVV"g!rN/+OQE[2d7)4*%<^ZI`/Vs_*qlMHK_hCr[#@qnjEJ_`aPgpV]%C9nP4G57l-HsqjOCe1Mi:(:Z]"r(B)"qolcj_PDF@P<T[,XL'R*6lqk@8!_.IVk/eCUCSgDFn#Gp7i9gl2pJ7"6YVR5(-OQEng?n>p!crtfAdIAqDQMTri1X&`#14#^re)\9G+R%]P>:YCKhp$E2+9r9I-&/M9BgF;M4g,KJ#H+[ZE?3(6BY'K,62BlE-BC;e4kXD#DfNL\"r2IHfLJq]'"<@p\QOdH2,L8p,V/l<*>Wu8RM3<h93lC:;a%/aY*F@kX$cYd!dS!6C*.V/LIo.Y'3[chBDWhBuT'2a'5+"d!!V<p'cukXDlC@p@'Q)VR`'ELX;)sqj1q%e@b.1#$cWr6V!WTIB&?K2IP3@fhc#Lr6$_JJQcl#8E)41JE-=K1h!Ro#RdUg;NPUD]R>kq`g0mCT'5L'\q_&cfQm)pPs57_^AV!:j&pHONJ,?+Qn>NNcUe<iC)4At5Q@>qSoU/,64ZDN:V@8LFQPo0c`r?MS''9rbWatWb4d=s%,o/6:$iUZF1rPK#38^MuYCM?5S<cHr[nEIh2"\+8:WV3U:=(GJT<VsL^OhN3<e,6sQ6"a0l+l2n;H+1P9W52T8YtR'i#WYNhlmY9sTA2c3iOfrEWX`H5>4st?A='!q9;2b^L$1%&8gB/U+"^^An_AB-7TZL!1(/c)7.D`6q$Dcm>>I606n)0T(asta`+Y*l2N8?7ZRY/`/61YdXlk3-6j_:OV,V:XA]V&S@sccH+"[`CgG<t7.oJn/;nK-bX9@)#.pfF!&XccokfruQ<TIZOV&Cij(L"Kg.Kn8$p-J^j#s+QOl=Ho-QFM7;Dg+`uVBI_:p]t^Llt_Ys?S7kR9kk^?h_[sPClg,hJ%J1lSr=8RL[PVre0kca7d3&;'l/X)19(jic?H1kp\i`.-)(54']^G/,[qf=6pH\]+!d>3&F6)K,7palN^hcF1gm>XP2m]RVhG&XSPqjAUu]cr'[nun83TkK<d`?$P2#Rc%q'gO;)sC.01DgN.QJC9JV@4Hq+OEZh+[cG*8DC_+V2-#OI`"DE:Rg5WOic[J!#K]=/cHbnAU!kGQq0dkdmT-WdQYpkAN;geFWuKR."NMO8!=d''J[e1eOA[BNrYMjGH;dLuc*;q(lcdl9-(emZ,"*e2J\:]D=L2*:%A<+.0!_l>^o[X>qJA1$hC%`>H&>Tnh_5#'eX#f+A*SQ@gRs.0]Ejp!$EZ&)H.-Xm,VF9>^)uj04TWd:!OE/;YTSI$dp5Wdh?m3MW@d5)ib<_Mrr(^nW@r%BKqp+%=sMhjX/?#p%:#;2,ADM7NB0[(7M2U;mblj]86@:_uH>g/3+/Fu.["TQFMIU"]c;QAs%M"9n"-9"Xern'a0@H>)eY9SlmTUBCdCFjik"(/!k(8YS_?V&seb7)bY6Ou#cR?M(_-H2Q(KM:e)2MaWq$R676eKp67VXAsBfShDHA;R'%okVD;e+3Y)^C+FKlF<tsqk7G"jN%'ruRB)E(W&4oNG,Uli7gs'-&P.3eGA8V"D1.WB,`V,:70@gYT<7!rf.=KEM(EOPoObg>X*CXsB]Zf_en`)e+D4"@RB5t$BQuN(e0l?_)8"l'Zi:+KM`9G~>endstream

-endobj

-% 'R334': class PDFStream 

-334 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2922 >>

-stream

-Gb!;eD0+IA&cSAir.c;BWRHu4OeU^d:JQ>ib?TF]4"G`IVB6onP#.>B"-?F1?f,/Y?(tl`n_H/<?d9f\@.E1.h.INV%.TBorsiLg[gVu[pF`rs/6:^*NXq'BnD3*sX3^L[/V]=7n2t>E`c#&,?+=puB?kTYEkO3o?GF?[WtDLec_f!(1585&r"I\T<N"-0Q6"[DH4?4Drrs8=KuG.9$,>,bcfHgp**P1A8'Y7q)J7oWF2rF*%?74IA4j9/aVU;9h!*=W7WpXIH>_(%K',(@&La%SRAnD\O@ba)`)84?r<3H/+^YPt6V%qC3UAY/!lLXT.C`'fW(_r=JfrMHT835mFMkr!3/KTt8o&;W,srj-1eG8ej_&c188Pi^k@Z+9Q^ZrYp'[03OU,&=P_?/H+Ar:BMkVL*mK^7j^bof9ODdS'BhBPBr]F4)5BEWucL^8MAH"FZ%JqpLUTsUP:=rH]Gn.HZD4<i!3C5PlfI\'ImXFs,j80eR?T)@B;W'+YJ6L>GL-q\8_K@?<q/^HS-<%*,SZ@0%,Fb=j[Xj<tKN[$e/cjo@LCf@l&dJ.S6N]qJ`/X#Ba*@<nWP;P+G"frIOF/>urqI'Kmj/"_#]dtipuAQ2A`V7mh^0u>40>ae4Kd_i^JQu%F!6)iIO7aK?Ap92H*?MYp^cY?+o&2r3RRoan[<pF.F7TR"-q&!Ib"@;-FD#]eq#"q$M%H@1o>Un9(]p77@oet@"nA\b>9]$K'/'sG+QIK35P6p'Tkr\E)U=.4.<u89/E(I-%VbFR*LnOa]s<pl6+_5\`Q>P6eu^$qseQDiP:&@KeS/=:!7(Q;'iR^Mb#$K%"fiIF0YHHR`c_C1b##*QLG`]jo3>/#JU'Z9PT7h$67037II<LEbY3-cIs%qF[m5*S9r1S/%L]6J0\*^B'W\O`LNi3gMH?FaQ<MC(-gQ+h4@RpD36CpM^(kn<_lQ0h)[;An?QT,=dY[FVg<k[DiY`^mK7I8S)a=S?iTirQ%Y8YEb9BW]2K\'_fQp:BStd$T/N90E-L#-7RLh<-T8VAiIQ2f0mat=_bisa+c.p_d'*Pn=1GsC(Cj'%7N%^BpA`)08F<S&=MqF@Vu[J]+';.Q'k`2@FYXaa5:U<`FGLg,48)=F1"V+Zc1H!AL/CBonm`#PBW[K:c3I>!8?lAGnS`hLq&j.d3:Lk`-ARY4q3@_Jf?!L`Ggkq`%bcEZjWtLk7sj%kWhJ"EI2mbT.W-dr:U1s;7$i\$IU;YuZ9KN2fu3DNk;=?%A2Np+o-5<eaLV\+9MCm:'-^`pE3Z\kk-aD0EA7B/Gsj\6(.q$_i7Qq!J*+u1Vmt-2qXhE:giO>Wp-?c!TJJ4\:j\7X$BqTbfHFd@gtg59%br?m&1^$]*jVVeF]Co(W+8Z.gl``_.3,W,l)&sTit##7:*(S8l=f^HEhsZ#gp-%Pi6@ef3"KZYE9R(,**>?c$tnaV:M4e8O9"s!/[I=IeKVpOqs!ZXWh#rucGJ\@2od*#>V$^4`WH$UHX;,&KI#c;>2f&)LfGdSHic,]<'`uPStO`1MEb/HH.[1lORX/T;c.RFdM.l'P1uFV(p1&VB3CH/XJ3La0dRSt`PdlVY-1rXa;@S!R$3OB-FQK&dh7m-E1HbIqF@d;AH#snpmq4Co::^s*OdGV"k.kmgCj@;79ab=^j)nVB4>bgj4Y-L60p:abtDG&g!N+Q4QlHIp9j-H.<;\'C_uUHXj#L?qT;Ir$t"5e*-t3@+2o]lmiZ)^YWC;q%;[Hhd-%jU39;=d)l0DTH%`O!@qYENBDG8j\4pW+8']3M>&&5@2;Gj:Q9E^lm;NX/M0lsd*:YCP,JK7*P_FB3R4epuc!nCcqL2gfV3p([&pA*76t@e\>7oHR?UJfGq=)>O4aQEgk78p=a4/qCF;8EZ?CcjUAQ!b+AG5,"aUAg<lqPX_]WHXR:c&'9"[]*/CoV^/l!@$Q^Y0u+JWs.DALu);L]p+$=<Np.`<K?n@5X+f4VU>)>^578.c9'\Sb:$-&SPb*.YW?X)607,X@W(W0%ijb:3D_s`kFT(.YA8UF"dTDO0=3^lN207)RSTcYD.6[q50./Gq*8Q#-("Y?8eqmo$r?9Uah+[GAiCNNEu:o9]skD3)d\&R?kr%c]B>NGM1Il%gYpf5DS7l&GsUl4G2\.4rJ7oV3n.66+JMa=RG<W_bsH<YJ:K?@YIrcj2JA_"8_Bc(JRo&+tJe[j=1rlMe\NplTI-\ro]&&p&!VMDEIUXo$MPELb)Q;_0Z';DCar<`4*JsD$/8EZT[2qTJ?IO7G?7B+,](SM<.kmIt#H3?:Sf\^!C#G@:<EJDRa5":"?*aYtCe`+JC;#AmS*dGi1<X0GUYJ[L\5(''i6S!?)\D>2K3dW(50N\p_]PSJGp<(f[iNA%c`CE==:M.c)p4W%2)\3pc^N33'8R]$W!3Dd"pTqSPCY$ie+V=gL1W]f(F5W4n!kZA=)GlB?>1\ZDI.KgrbMl9[2f5?T-i%rEhqmBg+:lC$T:@ImaOUQi:MNk#V`U.4IHDW4MH0u*(5pAI.q7I!"^kBIs]T@?9P<<;M-&uJS>A.d;`#uaR%,[E312HUiAE1r4<CVp^TUCOJ@P'mGp60i9q*U[-/Xa6>;7'i'3jsJGafr;D1/T,3BCgrP#_dY0V+^`^^0#m$V2#c"ULkL$Uh-REhG#]RKP"XVXW>]B*18sOIn#=n%h[FM<iBsm8"lJ)H-lB1)PHoIbN`r2`4;Fh9NsI$t:7oOgr5%$9;,h@GE=\-RlgSJ8.#69,*:1X2Bt=6%*<NM,)n$JR<t2W.N3fuV;I-9?L/Lob(gi\.Gue'&ZU+51"#fnEa&HM$#qp=GPc>Z;(-$#G)`f`AmVH$jQ/NZ9.`ETKF0HZWHK-k%3jWah?RP@f1*%*kQoV9A=!0D0V-n$_hq%i9Y@%5MOrR(F~>endstream

-endobj

-% 'R335': class PDFStream 

-335 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2889 >>

-stream

-Gb!;eD3*F0')ipps'ah=FUl$@,YNRmXp*7LBnKaG[-Q^j\@iE[7,(B\;'@64h-]%WP*4p4monT/J/#V8]TbeoT,BiabU<H5Iff50j8e)`iVArCJe7';#U1pRq7kjCq9p^`b\uEWO!=otD\D(d#NGhi#0iMonOGk^_tN=.S@-$Tn8N4'9uf!4F8%&b6*!bnR$REiO'9@RLnDN]"3gdR9_cm1IVQUpG2&`_(nE@[@u%h.TsOBM9PN+npVQD\QqWHQAChXMkf`^=+m7BZVAe=iEA`MYI[rj6<cSTG-K/M^A>,]Y'r3UaF'_g.KuFO?iGeJdkB<*;N=TE?049",NFuo!pG`6LDrq3hTC#"R.n.<1gb$^mN.Y@:".eq5.3W-3k).W"2$_)beO"90XThglfa`Zn5ZBl+j]WE]5WE*Nhs^\XJZ'<M1s@-))j,)fiF]s=1uu'I@)5.UZ4:!6)[M4V1G'!C5a)P#.80($7X$ug+,-B$n+Ror4t0krRWt#6NfUk%T&OQHN2C)<M"W&2>Wi_mf*796cC'YI'7VQ)C;gb3*<KP><OF'UAh)UloLC*`V-)+f4pRfa8sS0")o7J'$s(^3N1./0.pcNKFN*j<)^[=loaPP6Xgl(d?9`M?\#'Xd'kr;EGFCD<FrL,Ip$etZU0&G*U,c7fekqWM#pi%*iGL+J_(0Tq4\IuE'n=72r)@m<9JWKQ#QHY_/F%oOmp+%>R/dUBm59gps8%MqaS3^5K5hQLIN4?Fe%=cP,AoEEXri!)*QIh^'*qn4:V=Jqf0YfAgC_a#ULN=g,eCI]nT8lqdaJdLqBO>\EBM$-pMG_AESui9cB*nQqa^q])YN)llY$R;&I*$6eLB+SA;SAq,rea-_^M]=8O8;?KV?`?%n$rH1,r`0)a2N(GS%)Dh?%.6CWf(;Q:fdCK*T62RcPKa)[X1([@o9ZUKS%j?C"8b]9[(j95%.E!F).,'XJ3+8:eG-&LAJ_HMYHKSDK8ooXa-MHd^#TY)#Lc*pD#sm;p+qCa5amfpKcR<HrV2HS1)*%MhsHjp>2>T-306BO^UM%H/C'X5R?N;iG4N?R:S>/pML=>(8?'cjP/Tq+3Bg+QAafJJoQ&NVV;h6qhKp\D\=$!q4W\hZ^Q0,>q3?0"grh=c]%j(lMND\&aO6M=X19h1p4js/)fr!RAVDk'."V_gGc6"iNe0)!:T8Pj=kuiZf1SKulL\/cOi0&b;itio@(..&@bIDRkBri;8V%U,NA*/37p>^KM34QnVeiI=^@3(6&L$[R;*[!_+EE*_%ePf?XjO#2WlG_i\@)@cg'K09i?MWJpXQUQdgM;"8(%a@ra[6r5>/,;""K-q\uh.74u=l;+]kAF<b4i\M4d3F<<DNl02;l`I,:VJ%^+L'X/KQXDm+=Vc%1nRdup7bUlI^q@U":_-p#paRP(O&XKE84P59$6(K\Nd4hb[I[dd'0Ae7VW+F]3T!I%nWn1(A.>YA=%Ie"58+_H\-Q1"6r\]0lXW`#hX-$\&/KEZ&T\:^f<BuMo&-X8eiEUMQ*<k,@G2H"7uU)d,#%8W0[QSO</SsC<bWt`h_(II>-^2i@/llWgu1uR;Y48e60ku*\D#PZ>G9Zg<K_k\<kQ%*D?A?.V;^"5-Hi9LgOd)_Zq%cFLkH*C[)q+PB[Bi+hkWDZ0]su7dF_X0W^Y&;P)eaZ2S50S`,p-5FVY*gJ#P;o`W'Q[6fD,`!k3%a_=]/CM1!6B'W06#qW&&N17CU\><t#hIoL.kRLTOna,9diDKblPa[+HXJh0Qo.8o]G'H"Z.d-*3HAT]U47_K20eL<Q7-$R5PLm2Rr<[-E[)nmH/%mf$\].lSH1;FTpF&iiaK2c:g@]<k!*FL(8TGMab^ek6Yjt*Ua$ls+"`sa^3<i08am.MeIk):]s_j01Zcm:Je#6PM9D&QEa10/6pbq2LukZ+@VKrikm&arC_PhODPc^LHT&ujUG'OfZp&Mp!:a"T^CR!cSrI+aWom7FQLblrA>&K8&1M43shYGM1*+g8JdH12%:kW4_p[;@tCa.oV`1IW-d88Mk.;'??)p:PMlh?De?0kf!gP4`RL$$JSFE:>i"h74@tc`'-Uka]?rPDB!ePRqDW>BQ>#jU[rj%)JgQPJ]QfBbnp_!`Nk1^spm1k-jB?@fdFq%^qsFEBe8h=?h\[Ep!UoOANN+HHO_RhAF([_PST1eGGXKf.sDonr;uBr2F%0^a,^O3h70VXgkTPNa#db.g#G@XeR?WO&"$C6SA4,DE4<\MoH6jd`nf$)EKip?)34U2B4U-b/lWM"jnq0VZmthC[-B^I5HNDQLrHN9>^5@)ZL1%@`!Q*nK"g_3M"/D3nY1[VnErCB]5oE5EFg/(XUe2)sEpI[\4ge:%Lj+\nkc%Q=VYqj;*MO%jBK\gRlJ&brc5=(VbUJoL"VRfptT?J,Fq_U>QC^aG=AQOteGB>g)QXSs/#c#*\T;>10&!>jh<(ASFdLC8r$u%<L1)"Wm816)AFnY$lp/?^^i@N!pZf\o^Xu48Rcq=!e[%`WF=FE5KF'_E3uJ9B6`S-I6'K1>W^6qaU"Y5^!`u>?T.$_RHl!D[amc[gqUQa,OG6BW%TM/Ua?d=)Ao*23ID^Z*5D//W?i=s4l=Ln5?TBYQjVXh1EZOCXfeXIoYLp2m7d^%ca,sZ;KP>qZs6(D9cm&N*;9$c:iEcb;"dqrVh`qmRB7Nft]_*M2E?O9N39i0LMZt@:cLT3`C,g_#>(*;7rHDY#b(\^>+1FDmUr@\ZT3*UV"GW/NgJa"$LddH2sjmd.$J#R6KhE\Al>`22^W',aajnH'@$jPNgVs[-*'BFaX=b]1"FT3llQ"\o]*6:c]&'iCd*.]5B4FAVr7@2Pm&Y@B;?S<r'e)f;sB-6$W7e0CFW1_>~>endstream

-endobj

-% 'R336': class PDFStream 

-336 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2484 >>

-stream

-Gb!;egN)%.&q*PUrh84=R?8)D]$T/Zas<"2RTq2EVREAQ>>l(>98H/k!C1AkpX9RX'j207gH&odYpf`fFItaFd-tFn?_7-4-31g+i:1k!4<J/oi/Q@pB!:-%p@,mgp[+6LO%8.*//[E7XlgaqH.=\d%#1?<L@rFh3,AJIa7*6Ic6m+h-0:c/#-AfJ0eGJ+?[;`9Dt40G+(4fK1Z=o%r`K-imSf#FDofLnFLQ8bDot2GK4WBI8qt3ulT_OaTLG`b"hPH[.]l-Q@E%83^l?e1C#n.MaZu6Ra/K6=-2tre<,!H*99G*sd-rb+pcO.njDGf1,HYLp6Bt`%SS;Nb;jH4\7BYHKet/d[<Nd=LP%)\-8X%,@_\U,'D-jsE>sIVL'qfLd%8VG&C"NGfDu4f8rOgJfmL6_BleI#9Cs6;^$naE`Q81;d,Rd*mMHtEbF>Wq95jYh+3+0WVW%G4S1<F!f<$!]d@e.`Oj_Z?m9?aIfnCXBEg`VD:k#,^]k8P68-Ue`cB>YoWn/UI'Q+4.nDB\0$/U<2^S-)EeUG^X)-`mthe;^;;T@a;3B%mlY"u<;]12?0s1LmiN8So#u34i)!`]a=(eH^ahK0=RqHL^]i=3mmPfCh%ZqJ:*Pn@[\k-2>YZU\EhF:l-_I#IX*Pf)?+O[<>+mDsAI?2cYH>XGH^ajR,LVS$t83+;2iU10s6d(gLVrPW(AYEP1PbML==R";(`?_lNV5e_0EOl/YCPhjrj\a%jb([<M@od(B"'^tD.GI>&"p#YoWe(C4]s,.R'/4C"&=/!b>$4aoSr#59`W?!MXW@a$@'0a^=7j\,7R4\163Wp'<,:'@W]'DZQ,^:V,^TD$dbh[QBrU;IN;^2"4@G>eY(9#/or:Oi2:E^puQa'mEg0ac'2[9IVgo6Dn&.c=H16n"@BMT9'Sn*+V"<53_:]0F]bpuLH*(&i>8(gkELXf1T82YK0fe'X%tLF9@l,I\M038H)5O)'tL8sioJmM6t<M@br?F!$\]dMKDqUMP28asq>:at6Yg&%TMK,Ropl$,.CL+$o\2.Eudq'ub(Ej]/0dS4CG4V(NrG7YWL.'G7<"qNVm6N2,9)0bM!+;\ecl',aiR[Gl+oCQaBCL?d#[ODscD>HI"oV(eW5Abd1A9\W9BO?9O3)C^)8c+CI3d\p-u/JZ[i,&X%pK"?!O=M!D.3h3l"7;_?,Rk9Qp/kfs8"$:Dr.oMY9qtkZK'*2V4gusJr\ta3YS29Uf$rI^u8!EQ9>obY-_)*P_2dtl8X_(3+DX1Gt_94[YD&GOdh8JiF9fcq0k>4ej-"Ta]:6=V[*7YHI`'d$VQ<%ID:gW4;6k4'G0,V0_DY&</??o1TdZcA;.$b968NPCDpWh-0Y5aeX&K_N.n=/(S'aj9pQ?iHaBRO=Eme2'Q;)^TZ*4,.T:`0a[-&$7l371'TFg%>;FPQUqo0f[F^-r(.`hOhP_)PJ2+t'?7aLJYt!ih&VL)$&21W8=7]jn(#F<OS9o@Y!P-5b)YX/=+q&i$=V&FP[b-uKUagbtA&k'WeC&)1W8%.a-nN4VWGR89E1"\7sQ;W1jcQ-2?k2:juC(AL#3E^GGd?4,;li9m]$)Fh)c,rN)A\`i,#irj^YrJ>18$MZ`@A0FbZ3jX1p)3.NlrMVts4/VG%e3<-b")iQbZ@-MK/Co)rq=$ZWra<Z65"sUB9I;+EO*qcHpgWnEL8uu(<B<\lE+G[+k`FcA-]1%I;p&as;I\NUpm#;eOBS]Thc>'D)kC3,gQI-fFcVD#P25S\EP3e`<t5K.B>pJAf04>kqp37Yfq7[8l1nu%^aZA4!liN@rcJ&qC]>GUJs,\a9$aT5G/bK8P)IeXUOFmXQJ_^TL#W-jeEknCW2/`-V0/$FdpsDX$/\],XQJL/*-FgpU9feK%\m/!7!o&(rHl?;D8$qb'0J"Wp^3!jhWQ@pSY@\G?Gu3#09<G7\t)locTBsXG0_Y`Q^*V8lX=>66#f6I4W[h$bI1f(35c%\*2t+oiKC+e,di([+ta@ZF;Y:71etW$j[K)aql\+m1XWRFBpX0(HIL$(*P9`*'cL>$KQt[l`]B;Vlh43tLl95rmq1u]I<QGjiO[8u<,9/8;JV#g<FMj&GF+F5dSTZB`bA_nOiJeSYXgKuTb>b.f-8H[P('7sguN2%[*S5`JV]F:T^g7X^4C(=%ZcB-P)JC?lQbAte7HRn8:-2n]j4"1>fPk*+pRiaXA"F8[a.%;:*^Z]8<g6of&UC8DVd.I]LRu9B5fDE"ESAK>rR#gm^'?/YO0IAj]HY<fS>/7eC(*]]u+m1;h:c:fT>c?<d3Z%MT27Bs.#7"br<Yu9H)s^PIsX7;9_g+%74&@^<gHj\1@%E&tlr(W49c`DR_EJ]-i\qSFmW/6lhL%2%HW=BoK3/Gd%L0&R;(e0q!4$7,o^]>D!NY;8Ij`47j<U\84`_S!q;D:s*nV*Cs[n80bd7:^^.K?=sXuo6Vi[iSfE=!4#`7o)~>endstream

-endobj

-% 'R337': class PDFStream 

-337 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2589 >>

-stream

-Gb"/)?$"c/&q/)"rW=KCC<&f^%uF3]PhS$3k9dZPXZgjlFp9-6#qZH;!%:A9p"]dBMNSs;;XGa$\RWZ)OT_o@O)rTu$-3[,!r"W*#l2f*4F\*-+=+8s$"=g:fk^0Gm-0^XmPh'd+2oK6Bek8p44aRT))TrY15pg(6uJS[JQ^_T!XdNl3Z4""XJinN)RsNK8%@p4rTGOF"N_Hjp*Z8VktLlorP!&2r3UB>'#mF8lI[iHg<`uKMPdcHJ+1J93_6ntB\,C`oZ]$j1U:J*:)L798lm@iSBF!;^UJ?QrfQXH`NOaN>hBeC,\88pKb\PqBqi-M`dKkf/)s4LgF'h%#/P^L`D?L)G>Fi%'#mk=9HZQP"J3C>"UV(?)T:A\3Ou`UWEUm"jHJ`&d[#DfadV<+3-7HVQ-Wf+c&_siR8tN,WKNQ?9>TZ\)^Q;0=_VK%P4aWSOTG:&?1MUd@R"q/.\1U$6)%e7cPuF:=L#qmC5#oU<,%`6<&2@0<]SXqVKA-_B2eA#/4A2[GgM:.;:7Ukn[1o5ru=S(`sN/ThuEJpl^,OhV2OB.b4?&S1?0[95LRD-X',98cUb#<KMOr<K_K$/EV0Hh'NK$>RIg.BF1caB0956U][Oh#*KK.LA?tA-pc#"j2"A9s;_.t4N3MhGf,Y0W.(S?cW"TR]9uk;5lU:%3O#n+I6Q5V(h@![l,bu$j/Bt5S)tN"U%u)V8f2rCA@^$1Ve>=#:DQj>(gRTi$6chufl%Xuq@TGb0>s0+3jH=;5aai<K$K5aTn9R&>!AgP$C+V23%9uZ<dV5asU%2IEi9I2.)_=aOQBE=*@#ZhCXiZNd9O!W[3R_:2?p\H+\abO4\qWqj7I<_2lk2g,E)rR2dUhXNM"c)Dg?6h`^#rJ6=^a$=.Fhl;qso(XNM!C\rg..FXkMGVGm-\,pC-5q\:$g;<W>HZ7P6ni-'365,Ru":9Z`[A,L7\+(aM?T%lTaoRJ\R$!a1C+^`h/f>Z*ni\P+#.Z[)MSa^%G"Y2*SXRAMP!><jjMjDUE=^\X%+d[V1GbW?(X9_JdjImh?90kg>uWM/Hu>A6ZrC]d+H:eNDX*qH!uR]rjs]0.\d;<ne?-+EljCRF@4E;daa:`te:LdE4,'\oijFoiXR+F$ZNq1GWOHP9M&mZad7bUCTq:aQ\,o:.5,AS\etW.-s4FQ$oIWPdn`OKMhG/Q`K2Nf[EGI$\#E88hNoiG]qVBoW/:>$dF/"dJ.BLf7S?#b@=_8.SN8;HZiFH1#Y.>LMC$ZXQ,b@X""f9QN/Lf=LpLE1>9:),?1_iD%\2d5eo#Y]"g2<cojq\Ujefj.2kNfFMfR5XY(LkFn>!TMSlI"ZWL4U0V5Z$,G58oG.k\\;'0L"f\[/'$6TkhO]RfpfI\^N$,Z/"lBn/0$%WL@C*c<(Jr<!BB+kf+E8[p(Ua[_!th5,5r*'*<`_Nj/*YKj:bYa*irQHh#N,AW2iX&@:'HCnYe;-"iGccI^e)ha7*<(/60`_=")CbUTS[Ecg_C9&7HF2id3eg(a!Sk6c/2O<#eQ?mj_A:ui:;%]r<!H/3?f.Y-GZr_d\?#KYQHpnX/nq`?ib!BIAp'*4Ymj]X+5FZ,>A/U<[(gXY%(_-kjf9rI,pF!Kre6bo$%>h^oSO)1[N<cqH?;W&&\&dhn![oJ[d][mEXK4)!VC#16MG/9V"ie@-,DM6"kr`'7DLe^"jdo_7G6O2X_Op1tgDD`6bsbYMl5V(*:I.H_#\M(VU*HE]Y+fe@]HMI:.Fc;M9140bRctpQ/1P]8aKf@qQ.)=9gNt*tKs+m4[4hn`4\J4A=FRNX\.]/-dj5&[;OiTaW'=+o2+UK]"/Pnjt8c)BDJ5O4qiH@7%l)e'3D_F>U_`D?f>IED"m6%U.@%OXd1n"/4d2)j!XFD`96]q-ga8900udSYoo4IWKO]KSndY,cU]%AhG.e@e'T^J@[G"7^R;A@\GehTMhpbG7]"O@'J.R_!D7F)_Q^,>A56$jP(E.\]dHm!Y4jG:=_P8l@brD-_J&*s7\/P-C8cSeW29L]"W:833'_<K$iT_`VN;cZ(Mu&c5`6s!g0M!68)&fF9ljVh#%bUjdh$niA<_ah474;+XM'Z;K@+.o7n\N(E\5(Mp<rJX9I_8i@l>=5_XEI_!TY/S_u?e%nG"pVmqLlrnq&D&*'G=p&E89+O&`X^BhaIj!Ld3l?Bq2J(LC!/&Z32_/fk^Zs[og=-1iJ[,;c%aS&T8lSITJ<uq@7%<Nik].c5@;X3jsiI,]o3#k,"(d*N<8)u]NO.6N/fi]pg\/?R@'4)fQ9DB)Fhn?_gD/g+7kIoFD^u>.gE'EW=BV'7?W`-M,mPs;&rL"+d>V;6nTFfi+RqEien2*5EiQm>Akt6hWPlm+785Y2X\XPT\l!Kd%qu_pGIg?OE6h!6l4bg1ZZneU1qcED]$M7iIIbAP4;0`06mZk%A#Wt)^D5[0dO0`&gWO]R&3B*gVC3SEp&>!%1go+hZm*=t`]\77i4&&m"=4s3)Ujf6un!qZ^#Ino+%[-2%[fYbT'24kXL8RXU&8HD]/F\-/i#A`kU@<)ZK8\]-#jqqBk5L@E+*$K6#C61,+7/VE%0~>endstream

-endobj

-% 'R338': class PDFStream 

-338 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2437 >>

-stream

-Gb!;d?$"c1'n+D%rkk9hGrlcm;W$l*@lkW*f1@ku]'V>&J4N5J/kI_s.'NL5HS7oVPU/DUf%Eg<*a9hFMu.M^\H`P9Ma)di)l3P<B5mAfJ09Nu!eNW%_sAb\RD""<`Vg"kj+BOK+WCl0c-Gt^3^J1RNOleG*5MNr(MM>`&MUjU@cQDIAngoQpRke^Cd?`uh2bmZ=YTgUB"u4L0@#9Dh=$^,_p8iV)MS-n\CC#C]Chl&on6T?q`fDeluOj!3S2?UB*e.tdrYe8!IUIEYR4j%aL0A;efqF)\:pU1Kt%'cV.$>,[mE<AR0RHBXhWntXS>u7\20J=#IOOQ7>9mOL,+l@/P\jShQ>b4HP2XV#6P;,!u\?b)_cN][7\Cm[2Y.;cfN`/r*G;hN!.3Y:IL(*j&W2(^tn+e5\<kk`!Ao$f1s6H1W]b%T$AWG$s[Pg[4nK)!fY3Zdd6Q9E/QS?r#W(I)`:?jk90/!gZP=rTn'j]0L+7MK+f2OfGf:S)0,&gA+?D2QjHQN1kZUfON:\0KX!:$!+eg]M3ShgFED9kDZk]r!9kA)I`,X&&ir1]km*ufV.59Fm^V$;ZJH\aJpCd5qY'lcT<@//qcSOilo)AB*3;\PTt,$b$*cf\n0[H@SMa(S6\*'H._$]B]Xb?\NWm!nD/f1,'8,%S#ru6Diu(T$1>H-Yd.;J(P#6$]]99&^)senADiJri(5,FNBoN&&%55%i.iC^qH>r]=emPHDM`_:E'EESa.=3WF&2VYpfr8I/pO5>s4,I4FlkWjn_s1"2rKJC6`jPYKVUB?il?mF8@"3+u-QU5/rI?'O4]c?FJ5m38p\3Ou_p,lC8hGGjnI3qF<tX,sr<uK,kp86agPMEjC8?R)Lj?7tV)a$5Y\NTP)CnOL_No?Yfol#K'*D++N18=$X69.&\]0c-2r6KM2@u=;M"V[]@GBa%',3```oe:R%6m%I`.i6bMr\3u<J0#JJD;p&XnU2K+\@bD6J3]V&6W^I/6A\&aC.lUZ/UO$fTm(C]5\mR>!F:`=o2M2#:t,2)$8A0oS;Js*nUQoo93%.p)tB9I)f:?hsK)\K55?b>cB8!,crf,eo(3$'@pqn.Z\^b0O[8:mX-DK^!aY]e8Q-q+'/WJZ$M=9e<rS/@6<F(4Fr3*_p4gGWi<tq:@RV!,nk9)e[o<kVli/8i)O:+0g]%r1V&SZ8!pK*;Rk#N9Jo9b/N0G$H(NsSN^,;;Nt=t;q8/F"SEd<lS46e?%A#V;m+U<=Qh.7@R!QY))h-gUgLgP-N^s:1G^BFEPMc_u:AhU8dBML<Cp/4?YDDk5UZ.`G*pOeJDc`B070OD6$b$Zc99l9D-e'E`L&eR>3kctDC6A"CG4UAW,js9A&42GD#*E2#\j!fsH@VgtF1t%qXX-IeqJggOe8f\[G6qF**"79>8<]Z:YYCT906mj'A]bWgjZNB6fT&6)NE.6HULN8pAjPcX4C@:lVa.S,-u/2]K%7qEBVu/6+JR'0*$@`-a0QGIjMALV$b3]#'WE0h5*js)U36AP=0o"%j-B9@o):1tbk209C2._\ERi\l`l!I>UAs@"Q^P*@M``ZZ[B0f=WIXP1jf>NA>,p9[Nb!]rgV]lZP=UU:l*BnfnVWQGJ?Wm020k=,b,QoQSXRmMdDure,Xd-Lp%t"&"[3Za-7n:d,Y=,;>pn/k8<mm)d9!80WJ(6?C"3/Q:MS/BF2p(62CF?`MLSo[@c_Q8CG2;Vhh2Gue?k'L*2td8;Nj@bnm]WlonP%[.2h.ZG4ntmMmYXL[8_e'me,FReV%9:M]t`sm(%aAh3nW9l8,!c7't*9U6_9pe81u7+maY82\02e*M",qh\f\U;7S[g0&c"iQpDln`m)a;N4U7=4J&'lO`0:mB;Aoj3,KY+Uh?-pH\?+5pC;>>RNN^n?0OuXSiQrBJ^6!8(]4=lYcuLeY95rDRQHd(%j@-E&Li]5PcJh.eM32PDP-W"hs&X/$]Z9\f-oFU_NE:'[GH`AV0q^kO"XjNaH[nfG4Bl4_C$b['U;I\9a6SM#u&+eCTIapinHkOeN>X*>j4aiC<[W'=^RnuH>SMcn6l+fk3Dp$?"_H>Vmf<U_N7CZ?l*N;hnE0\?N8h3W=ks*G,EDm:m`>Y;2($D!;8a/Y=uc^*Y"miJql"Z0X4)9miC6\L8VZfl6tH''[_fn]F:u.i2$.ga".)^rq4N#bMJstW:dR81GQS[XnfNo[Iua;r]cCk)>\YZbrb0#dnCSddm@6C4a9KPeFP=k<,/M2N'Or*LfC)5*G""*A]8k/c+oB2P^?N)m9Q6m9g+Z:796%OW"N-".`"DhmtL70hXOGh_WKs%6<T)XQU2]E=SEQl?]ep<9lu\rXd=kt%ip!+*jQ=dalY=k\,-eh-O*"$2s$Nj<KZjR'5PO9f'Ead+aP2dR&&IH`%Q2[amsYcHjUn`o#:V//c8$I~>endstream

-endobj

-% 'R339': class PDFStream 

-339 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2629 >>

-stream

-Gb!;f>BAOW(4OS'rkj#G3tfCl`I1[$X*#@CDPXYq=nMeB+UJTr+Xel;pNlmt'P1QDC?/ZII$7-R39U1a'n?c4Id-.,*s$a/_hXoq\cLh?kSCF2r!BOHn)&Ophtm1hgB,88Y)Qr"Y3XH`bA5&H9\lp]q>MDK[<b.eGg.O_a+eT@rYOaZZb")@dq\.uRmBR=/n"SfN.4_Lr3!cKQQL[+.ZnLK-]+Yd(!"rAa!CusJNH?-hN5&tJBK3q(,>PtcBD?M&U%AVa(k_4+ea%>k^!=BYLk)o)=T$`=iB=4O;17"I/a!,$@(omMgth^4JT1N)1Q07co?Q7Kf!ECb\7hDBuXPLA;>;_8`su93Op8O1W>[aq^.">@22>(Eb6:lc-_5mc=5`-^RAZsB[:(3!4<_IScl5`m,3lK7!Do_R$;>M7E%ArIX_;L#2LQ%BnJc(]8n.*i98+AT?8Z-N:o5$;ds[[NlK.<RUis^9p1eg4<Pr;,bFidAMdabo!0N=:FZ*(%*e?kST:*i`&TSAdYQ[Wru7N6>8lPj$stDP/!7/O=M/IuR9Zh#;i0%ULun4R+;MZk;4e37Upsd!8/@W>6l-9@\lYj$GB:>I3FPjp/&sgufr#$17FqVDT;M6(A<9KI4<!^6VVH$VnQ^OW]=K%-Q9l_d!Zj@%XA+m49U=s-\r4XL"L9R^\;=WP7.$rc^5S]6-H&U+dce/;UqQnj$H,fX1JG)CUqgQp#Djs#Zq1Mk#AhOm$u$5&"mY7'SG@4Db!HXgoD*JKeLFeC-e3j_nYgZNB0<*NI?rrNT7f@uBTn?1&uBluj-bMeKoOkEV*#3Hr,1d1&F5h5BAKjEZY'd!Tq[D/[c]L@mFS<4a">P#[aDa+b'1U+eVC+"Y;[\F9\o#;D)?IE2lu]p"ll91Nb>fJg32>WPM_2WMP[07b1^&sDOGFqc)[?hVDB'm;G>M"<]")9]3ld/LN:U1!:AVu[H<&"8U9k^k\W-*3dId/,N<uTej11;4c'"hTK1hl=&[,E?CpfMhbA]&A(,QqDNSgRh0l?$W4]=;Gt)jd2=h94SPPk1mfBJko/N0"Bl>p;NNUQ`K^6@(ihLbs\oH;+Jj8qZ=gr6W3<qY/Ftm71=SE1XLU)_k,L*6&T%pEuOPRV5=Dp6Z$Qlu4\KjR1m$\]h>_YL*<1Qu$-8U[=EB32!ja#7="^LiE,Kj+!,lo786*siIn@Uf`f#qk?#@LY$,[Ila1;d)"Uu1YOcfaSJn2&'ne`K&eL>2,Zo4Z[&L=M;Uk:XlQ@Pij^nIT_*>QK8K4B._5jRG0.1h.(EH0r1".&f#r&m`9Uf2[*E;fllak5p#`D2pe&TVP<#_]J]"`&e&&K-9)M9(\0EGQ38.[0jP>T-ooLOp<OCo`CG6aU7^R]bq<o>]7/TF)s&4rPn[$jh,7Wb*sGl[&kJ.GDTrs>p,-C0J29dod>a55s4VW;JN7W<oA9A;B`P'=0hk;LYJLd_KtIedF;Pe9atAcc@'T#rH)9Pj#(->27*?f9NiA!D\Is;VAX`:e;:4FgIu?MF3[D=f+>QOOO*'7`MIa!q,KXOM6i783QsHDChG'+%?lhB\nH2JSLoUR$m]JX6TR-qN7ro]D@sd79)+6"Wqn9'@BX#JmW;C6p#BTVGKEhEXCoOuB4,fTL8DY4[b53G6*[$a"u1s;mdCH!gu!oC]a@g%'"NO4FO+iqR`'M?\(0W2Bf'b6?<ufmb1m=5Q(.^tbEtha=DcfW81SB8p-RaljJ/2fXF+K!oikqM%+"bLn'ok)Jq^=nMqM0UnU\R5/^G]&FSG'ho(N5>:nZEL"XXWCGb@$=$ae^VoTP*L5>i-a.K*UkINAeJeR$\ljsOu82kOUYO5HreY#`"]4'LrO<5iNj@c>Y`Y'MfF9c;4*7Mm<\bL*kZUO+lU<c_=e?Uil6je[O=URe<tl5dmVcRiBd`i*&s_PbD_[`LrX14eL1:SC<;D\k*;0uJU>fJ-WT!d&K[!i*5snHY"&4>%%10Yb=bfn,aM>=QAQE]W:=Y![$]h22c@@?J9N3'Q\r"%EI#dAlC"j!Dh[p)bkPj=>*MLA%1Ck3"'`XC!T)*%O^+@n%%3p8"WjqH*NgL";6?,!`geD=6&fkF?'*-Qd+ALr,'\r'<LWL2:CWg]_M?>F^u2KiJ3Hm-$)2*BVmoN;ee(/jZ>a[R-%qfS_Q`KpU?X7.jMfJ66,H2"0!XGAksFb8M.,.[%#+H2;5)0<NTk[u@kV%-eZF&rV7.>&aqYZ+2u4WI!J>SPA%.a#mNnE6%N\P'qsU\LGHaT!+SUCDnSRjuMGJJR`g+[sKMr@O<O^P2[`m,inB[18;8Y!7M:+;7XD`Csf1F7qHK/\Zh/$)&9]N<6\9?'"+i#6dpL2i;!W%-;q-PL;ng"$a+tU3M@()CH5Hr-j#)6doDNd1A6.4ZbhYoV6@(O^>?B80;JD1(U!f%?%)--?SaA?bj^+hfF7H@!mCNXeu:gAqg%=+FF`Eu8hZ6!VXp'LVhR)DDNLH3<-<rG=K1]K6C)fC=jr="1g:^M@/>\;KO-89('VRX&T+7eSRANX+rn3_,#j9$7<fV@.15QAX?ZNB:G/*2mX"%*#mYH>b9$Sn()W=?T[C_N:$FL"c]je[@^nCp$+tc^?]l29.K~>endstream

-endobj

-% 'R340': class PDFStream 

-340 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 3172 >>

-stream

-Gb!;fD/\/g')l41s+0C#Et=,YP3po4qijgDh;I"agUIEEc(^jW.d!lbW?gTDpZla0-qa&7/@F`9M[#09Qf7G%[qCHh=WdY=oRFAYm,ohpl-a3n^nrjXLYe+e?aEh_kKglhO'b(7)R:LT`Zo_@mCLW(I<WpTpBQ.$@e\3@J^irkhh,]SDfRUBdma'[XF[F4]b)mOVgmulon*092Z8h6s%+^<7R(88LYk!I)Z-ER0)15t^=OG9:F;9r9)3mRHoe]NSTp?<WE8#BCha0SHL..TK];h?*S2#g3U)a[G+]lR\@$m]n"'5*@(d+E)%%],Gp4"J2;H8(ea2GMlOU0PQqYDnL]la3$*K:u*m4,8Ks]GV`m]aW3W%<N.TT\eefXM9foDDeeF7_Y3QXU*7-(T<ALTEV_6a?5=\PG4X(I[\R?g=pCJs=%?i:rCi!'<*0aYT1r(^q&6]o6h;Gt`h%V\EaOaj(U7e'%/^3S.'HH0>A%<lLSf$\M[Qg.iE;7[BN<k/WaP,qcZ6(Z3bB';+^U5kTn_Dqs\1W>Za7)m(pNJ.uo.TpJ@G0t=R'A,4ho)tkP<PA+_3U@gpT<9=XD#57XNpj7IkT-!*kOUR$&*jO155=QFkNcWr@okD?Lis)D0Bt^J--a2.j"NNbGUJR,C]EN9HTjk,Wf?J\dC](l@o<dogPmo:K[p.<q/A-$F2#"(l7=@i+:'*GO[O/*=MP^3Np#t!,jgf^BJMX0*^;D2V1T@66:)Sen6&3S>QIZTac>C4/0KR12UGTC2Qk["#0B9ejA]`[8BE.`]BqoH96Ca5V$?Nc,?[tYDdTr.HQ4$J)F$"4=NUp8(q_CL5m2"2?!L_<<oUrO1]f3QOde?lB.QIah7ftLdN5>pe/>3rTKaSt?$HN=fp5ZTd"6r:3TWSL_XiokeEN%^+5'PO+'HGs3MW\Fp3Okn!\1TdpN)aQZkRe@b%0Qngc[18H`&"4MYhInTedbh<EJKc)kK@tSjVn8$'@Q;\Wb`4iM<d(SP$F-!-M=.1'W>,Ul!I,E&V8/jbO0>>8epA,3?-6.s@chXLsAb*3M=sI_$LYW-Xf6cYe41r9!k8e`X7Ldqa9*!G)d)YIqC:V<bVFYAe!9S.u6r&([;RpDm(8_$AW-hQcG6:D"M+^!2@F5lrrcTK>Cq1h6t#M'C)-I[V.+A;,<(VE+[TP&kPBaM]&cimB9,HJrm?"32Vj\q0sQ&?2C684I4!``doi+H1[AZGYnN%CIQHc)BF3fcNC8e(DQo!fpV"p&$jC1n4sa;1\1+M->!'m0M+"=1^2]iCS!e^\XX>d:#N:nWu&5i3&%>b5O)boU2OH*NJfe(j@T%K>'9hEi@\lTR,i<#\*IWenMT\<@sVpH'&s/WZ(Qpm+mrIV@MGeH\*3XVp9)n@Y$J2JtR/sb#jBp4ePGJ,d0gp4-nL,J_h7O\h8HaiQ8\ufffu!``rg7cnh&4)f'O3PsR+#`"L4dN2^s.Dc&\N"dM6QeZjNL*VtE'Fmq8o=:?S[p_lKDFl,pY>r!4)64\kp?ZKhkJIA-%[X1&pDaSs]Th&B_IKQD^j4\[nmIBT<s8MClVW<6CF_Td-7%=5k!4)6M`thRP9ECeC:dIla\A8L0#36+_@%JTpNk:Q5i5gpKOsIZkm>JqkI*s/AdT1A%pc[kdA%f\YVlTKBO+Vee2Kd`TYX%8o:*'b=A1#Y^<G#on25@^Gg2QZf]P*'u9?@M70GK@?)=^3BW=,:5eH7'_VKlTf?QM)(DjbPoMG687`86q$QJ_1e"P-k99le@m6;b&r&%bQD&"CD>hdIM/;/O%.RI*o@IsM#EA\mlc)[=M._gTb#$Po8Lk:r!lh6hpl4ROP5b@Bc`%aRYV)^W3466#3.W#MZbA/UPD7d!2#,Rb]j1u5=cB4(\9Kt4E3YA<adp.?sDetr:>QgD_347@_F'e0oZP)'#$T&&ZR%"*2h7;G?)Poj&P]BP@cpN(K77aOW&fYKL.Z*<n;qgC62or"*)r>MS4pJMA,nm6E`P1c/2%V`s]C>]tZO<')+:$B$(p4LYeo)G*32ekpB\nRi`#jq.I`!uDG^f"'WC;A:5H]_spTF"paLC_Q4)8\Ip+G&Qm8`R_jZ?Q_U]4?p@6"1Y9L"M"ZE>;Q;Z+njh@fj]+SP#.s7'!",@>9o%?=hf+.C2?.hH:pVGTAi6?uka9i.n4#8GsL)Nhnn/b)qWP?j[2Xes`Er$aTKRlb:`elP8d]8sh1GdMVl26:?pE[E0*gr$n)CDk7q2Oa*UGahV\6D!Yd8?*gUoYJ[shN]S6!54uPk9jM&3Q6u0[`,&Il79?%Z%Ei7]7US7/0=E!BF-`5>fa1PT\YJn4c\;OOe@Br'VNb5,5#7e)ERp@lELTqci<MgS(8QAbjD%)?[&!%@/i*ZY(n-]=dG&8_Con!P\9SXt0)Q_"B<2g9e+r?8I3&UkcSt=6Lb@F[6I/Yd;8#2MgXerFEptdWBa6c:+aZDhG\>d<DPjU!*"fF?BE4f^MP1ti-]&dt39-c$+<)os,eG_S?^]Xd0I?m3ZdlFfAO^4cZLH.?7f<5jbIQ1\%KKGr>-6/+`J(&X5N#H$bATTL4qhXt72Y*/aa.8nksURm)V,`4F`<tgn!jkW_)IV-5mR-uk>\iMhf@*4GRU>Al(]=[45]aFX92FumK'ak/"Au`.A"jsW4a]4hC]On[-\oiNa+Q@R^H#P3]GN)oDeZD%eO_n,)?-AA0T9U>mOgToGnd3a2-_rBe[Vm\f;\T?^@"Z+p8BI?VHTnd3@*d%N]nH551d+5UF>gKHMnjbAZ0PN)K1:W5PD[pq;$M44n0!7A=Y'E%&)e[)ZK=+(5]_`$E=O8d<k"6EPO<XoTT=DeT2,=3.V=IA%=h&DBi4?qHuDfk.PUqqBJcNpXXo.n6!qU'ho^_aA;MD[6W<`i9`N"B=I?;IuOErihF!=,$J$c#FOTf:6O`-6O%tE8mFKlqCmp);[kle[<Yi`aa+kD0b?\[gGD#]K+ZC_/K"3M5Fq@>l4i\P-CmSSB'b'roP1%3<N50-qSN\SAhRD9$6VIG06A1XaTB-qGopPcdO]]]g<'^E(D?V76@N(c4ogU<kDN8!F`SG)V/<BfJjT61:9+ETpI0Lmh'B4'2Hs>^]E_5EAt?]6^/#"jb[);.7X&e/*V&UDL$I4R;i+,q@W1.c_(.HMQUR"~>endstream

-endobj

-% 'R341': class PDFStream 

-341 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2734 >>

-stream

-Gb!#]CMt0$')`jos+/7X.YYR`l=m#cSChNXjOIAKm0*n4e1N&Pfd2n0=,Qk?mhp/VX-Zi.EA%A4[Oa(e_`;@Ac;662j"#:;PFSnE,PL,>bi0*O9j$2/H>N5>h2Iphq<G]SlLB=aFZRpSO#7mFa6YnummY-;2t$=ko'$fiXe1Co]Jkd%#(8DPX$<iom5g4&Zu+QG'iW]K`6[-#0/i[[\a[6.rYf,@^?s<%mRG6CFND#f15b*:]M#XdN6g\?MHS1NKi[np_@roG/E+,f\G:hQFMXb.QE*ED0sM:IfpOIj1R;fdpF]pSAkH9>b5#9YQLWDgM,$ZaL8BK-I=-YpZY[jL08AR7X;EIoN/^73<pSFlIhCp$7`L*Q$98l9F<Hg;E?''*%uK<q06^khkT(K2CU&tX?o"?e+rACB/%%/!h<3N).n$,09)^CZ="0VQL"Hd)bh/F%#d"gF;tu?69V`:M7>J3;4*3%&KM3E'(U(GZo+nDB>,K]+([7)!,'r@$MEV6N`iWG9\&FMh)ZV34%^T'0U<$@<E\J-a2=?$Pi3n;Mp;SaVrA!Vn*S!&=;.El`D91Za0buRZ&<6a`%Rg^5@'?q@^g3))cIeg]^AfmeieQtLXMu$9VcCeH!c&2G$20u.3[8GS]t;kOoA']3Il!WN%Eeq!F-ejUXIY,AfD+p8pdK!Uj-E8%Ql_&^N<[glgdn[Po@=l/RD=EYIgmEakp<b\]%1j32NdK0k<%7^?-S'`+dqBi,M22*DH>bVW##VE585lkl"E$Q_p3JWS/pM!mAPA*PBdIl<JB'K;$^KEQ"66&o0O:alc_^R(<?sLH"`$6TF6=@Be2n'Qst#`VEOS.%X91qi6G507sZ,N=U=\a=^+<lX3ke7/6pJ*kGTn`1i+ME'YVKS$HGlXkJ8S`r%fg@<DRTuirLVEi%gq!SfCp,#p=Y?PBaGG;iipO`mh0Uoh'o_-n7SH>;u,2%h&1dD/B[2U>GHg?GMt<<LGS+dS#.-_JdSKJkN`SbjjKWpGu1G0_sb-h<te*0(o[(Fu6iOH3t+UMd`.V'qmNa?kBSe,1gdu=EJ>$JLDW/CO6U%3r`"O18;L8cGX!gbNO(X/'_JsP0"8"U)G.)9'$XYHi]092@s=e+hj8JE;q[W%q*M8`)@<rOWq_5T&N%RS$H^TkZesG+&S1ulamC_k(TC*B0Dh"]o0Tlo%u'UK.$pGUlp"kIh+2YrU(!k4pEYMiT`jcAXVHf)0+j!h+N@.6A[A*bkO.2Pp0UC7%m$2c<V?1_DtBp<>JF`%@%WmLo74om))`(<](aEe#>kEHS79l=d8,tY*C6!.3\=[2%#pII9(XS>:[k&'*kZS3>LZJfU@R[3?_f=SXi$A:Aj,Rdr0S@PZHrTS`.\LjBImN2,'68":Rr6j_L<?,#`3M7Rk(aLN[eYP_o(S"Z1iN229DIj!3;!?9G;'5)L6i.h0ej'JM`%$ZW?g]`%68kI9't./`oA%,PbMJsqcq\"1Vil/4FcLs'ir;WVt/%$ck+L:cMSGu]);Yu'(Yf-f[p=l/VLiGLhF3iFK>>G2[8P1+<@>_iSd7*08a8a5=S9ar:&F:PQb3FB=m"#C)PNspf@jMcRXR7UU_p]IZ?c^o%ST:5bo`uZ^ITm'r],E7t!AP0I;l_V`\LXP>m_(7^i)bl;9<>nq%e*o3!Jk\KNisY%1R8*$7'%RU[AN?2&Pee[Q>H(N2OD.:7T8^+**u+m"0c9O&J/L"JrjYZQqN"53mbQ1UdF<elHiI]uK,jV\-kY@c`B+[DC+s,+82"t/([kV#d`!;S?$</4kfEt;)=N$Q6JJfgUV6=31_uH&d[g7&$=&;En^)C_5>pAab%`erduoaX#.(GlkIPb&hO$^PKU3Q'^h:6c@C.!>DpR]qS#s)`g^#5bY:*RmV(06RIq$a[Ao#ftKm]fS]&((S$+aV'A]>ZHX*guL/'Fab6GmYhr"_T2n\e=NE6_r1PKKHsEp)uu!a-o_4k[CUgFmTa>nNrk>T.?Dd=4?n);Y49o>g(We,-2TJ)62LI(K1IArdM'Q[#0;g2V5e*c.QI70622K$m*>;PO)APKQ9r=%C:f26>AmeFsD8[Tq6#7";9uHSe(ZjmWL@kj#oh2q=ol.&(dS@,*\90L/t.Ko8J:['Ns+F*9&H;@V4h(Gs2GX&68\$Z1r!(@Jc_B1i]Q4tl+\Nb/]1P?XK\],$74HLJK/NIE\XeC##5-fVrkUZc2Qn>X.A$.TDikOa)d0F3/Sq!,3N$5fq=3cgG-\<81_e!i_L?[H4[$KM0K%aFZ(eL%4qqD<j>@>W>ifRCP_#uq+D_(c)g*C`??7KlkJ>2%"`>Fh9>\]"j&pF=*KB_::tE"!Y'S;*A5<^LR`U/LdM7U*IoF@guC3Ds12j+Mu'I>742-1h0_"D#Z_b5u92Zl^,BGf39Vqg-b\H9YX2=Q/r'ka]`1/_/!ODlr%YZ>FH;G93R)"_ZpGAW+jhr8?uDeul[+q`=(=p<#sJBn"Cu@G!E)4-AFOcF=GeBf=<(9'A_nL/7[Wl>EE_B"m`?L3oET>mk8)n%lE_g1o_LDk>9U#5oZSY$sE`-ZmCdZN^AB!*c1oLoC/ljd=O7?9Tnr*kNlrbF2&QjC!Y2B=l"pb/kd1Tid9<,(H*[mK1J5X3"3V5WQ"PQX$H:B1Fa:BtBa<T?b;3'`Zt=+Ht1Im:l+5Qb&6l//A^D.T(8'XXqKUn@=Q$[kP??c6_q%JFR%A?r*Em&#RYZ]D~>endstream

-endobj

-% 'R342': class PDFStream 

-342 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2699 >>

-stream

-Gb!Sn>BAOW(4OS'rkj#'3tff-8?)LI`1(&AnMIB/mW:@8J4[gK9bIe!g<m\(3T*?%9i8.HaY`<o&d^Mt%R-E+LBBVGiu^ek)l3OQ<cIo\!QToE)B@Z*@J(]@\U+5>PQ'mti\MZ]f*Z.MVUt7Oe7mX<d.SH'#5><.iN0/7@prSTc%?n8deYJs6*#akN0^mETDSmg>k^<^r<]On[0j\4^Rpr*^HC!oF;>WD322UHfeYj[cNf_UCb&bDQ!/_r%r8l67`hfFTbUaM[<sd)?XL?OiEO..E\@FF3PQ4>#E`m;T(8sjKoh`!_-G11di0CVnuujLN>A<uX4G+IPE/HUC?8!miVfOB)/oQGC:W&:*Z1FZ7#A]4'8U1bnYfjI$&:juSK"O8\/3*g^T2rt1!=(lR%D,pk(Pg7JUQm0^EMNm%>V8@cD??US6qUAn0StA%0q1!F,eqp';co7.a#^fO$R<\6u:9'+T2#*3GO"VH2fhc7]6nW.8pS58`gEn;d1<"[>;1;::/t+M7c?"e#$1c,smDN1dPAl0Zc`qa,-`,V$^HnJR%O0V^d_J;"%pmVVE//cT`0fs3>R:s8DQ>qf=/#f-$k5b,#;i/b9\-/4.DY/[,>P'(HXnYnp40@7iQ*9B.f0eUG1VVKqks3b=P?0h50cA2\;")o]2cQmQcX(*M2$,\Y(r)mO6HA#,l3`4#Ml[)1O77<VTIBSlGS_H(1[-UHd0<boK8Gtq'#SB%DM=m0)]UY4MsCd2#1B7&6N"0YJo\55-AHeM2?JBfbA^iQe<Q6B^UA\(<s^(uPRG/cV4\MJ#@,iB-d_&,-#Cs+X)T18#)&OCp]cOY8tb+,63OEi*54BR=uFLt94k_2<^`pFm%1GjVE7g$PF4]AA^8<:^/*Q4--8R#';R?AF*:hpd"%\dVi3k\pGKGu@Mo(*jrB9^71*H;IAa\??J.Ha\2^;WOQe#'e!7AM.UbM&cS=s!+)JYUbnG))Hg793tWR^/Xrf,V]:3Kq<YhB-l]#5[gaht]f#28=;rm(+)#&Zp4]Dh)-Z2VWm;c3>Jm3tN\p3+dMX6K]k6f(HH$-Kf+gPLrQ+cWbcc7FA*U(6tS2[/A]$,!GsqAcqIM[eF$OccRfm^e1!"L&/.mZ_<>&:t7;&S^8p/XjH+ZOuO(#Q[\__a>/Sqd@4j@Q@_csWAW?Q2MF6#T!VL];`T4>?]Z9G*qu./hIFM%!Kr<t@^L2=gJ/20ZUQ,1L)ApZK>Qa3noT/fm%P%T)2,dC\cdLE+Ij`/:Z!KS]'\Jgb`$P?6g-)*T'-#Iq=k6:^blW:<@H5N%K^>Q;@K?T0sKs"<60Y;D4o6RaA",R-bR7BP/Rl_`LP8sUa;odGaf7gaR/23T`mK>BMqdpH>J'3JNSVAE`KI(]V6_@794klD(b'J2ebdD#//dbQ:89)D%p-$+$=2XS[`MAr,t*J9IV0S,dXsNWX@3?Vb^(Bd?dTk99CEa/E=$8d)eXNF2Otog%=<P&JKQ)2qr.is4QlMBR^)cW1T_@m#HlGch7UF%@"mHUqbCDMb\%*YQW9)hG',+B@sRM]M@0mlN0(#>1<`cRc]<9^/eJpG;?[gVj#rX>hk-o,nI?D',"dq"hol5^pluhr()bGM/*:e'>hZeJ,L2JTlnFiH#Em9*iZ>--*XJ>D/?Sk9dF-hP,p_!V?:nj6uubq[cd.INnAu,S7$6?NYZDV%Zfk1FU.2s4>/CZ;2[>\A)fV%h4[1ANm0S=@W1$ENanV[DG0_5SJ@X.Z#P+N'<i"N8$YkHfXSVb);O9DP'k_?5'ASn#5e2>j61[,%cBFs<V^d@Z0U'FdLUa&+O#IZPE^Jt]';0SoAE"^Boe7P"AF>-37U<JRLpR!#"orMF8W`=jXP3WMr#;nS4M>0N-Y!<,+L`E6n")Ih^UWY13<YjjXi/@cE5'%Y5Q/T*JJspC"'!u1(V;X0O_V("gIEqQYKo#2,"Sh#t5@1<?\Nc2\T6Uo(dnmqK8^<K!i*5ok^&7#G.h[.BPq^f0#r\*Q0]_[2S_'r9V=TK)b+%eWsno^N(XD*3&E1I(/LD2Yfj)Z;r^BG<D!l,XTc2HJdcU5ZM^6[H8-b+W!q;MH7hVDDt]oQ+3Lsp*^n(6oF>$Ik!lnEAcNq*"2%%5.03bq_[;X;*F=ihd>P%e\]9p:mi?'^YnCAPrKq=LS)tES(F;Yg$N\YqatC)7I>#f.W)QU_^"5e6DY4Lhhnj[K&a#3Wd9\(L0Tf;JdCjjD>M5CcPMnBlfekAk"=>t+/f]pXmb8Oh@"[Jl\Dq1/=u%3VH%gB/+%[oa/t)DdD.W2k&7AUSFin(=C[q2[(u'JL=bk,Wi^j`?\M)+jnV]#rVchcm-g/*n9P0l'h*[tV>X[J_>=aKT(!5M^+/ZZ"W%^B3r>KGo72lskgFl,@U@ls1Oe4]qr/UakiCh4=T.kh/'TQ"Xm[EC.9CaI2n_,CPrdl#mJ.-8P&%lKmXqM@+0,/=>UWa/3cg;:_#2f0Ni,FonZC07@ZKR%^?/kT[)7<Mp9h*d<S^le6E%'KkK:E8Q36k#J`a%N\grS<F%$khTZk?PP/C9H5#51`_a*$CNh]`mYDQi>a(3O2HAlkYe.mK922/W+V9fS8.[#5t]/]7^G4j_C)nG^;>UtJ>TBr5mGuR-tTcu/S[gsef6)L.D@5uq)0?tOp`^Ok5*W?5ua0X]p8@[@s6V7f/'"i\d(YN2N_u~>endstream

-endobj

-% 'R343': class PDFStream 

-343 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2695 >>

-stream

-Gb!Sm?'!aM'n$USs1l*=$AWE=haLBbbp9n/A=Mr>MoDF>#?mj=mcZ0sj;I^DpKUU\AWQ6+ChA=.a<7]4P2\Y!gquK/@"%q\m/Kr*f\[M3S+cpk6FL"$@*"+>nU\AX]R98&rWRH9d?'&*T8_.[i-rIJ#Q>d:oERZA@WsJ4@+;&B^i=;0VrJ@nV"H%j6#W=`&\YVks62DQ$4!cei]"=@Z^nsop@#?fn`0.u-Gb4VSPe^NC\Q;e04/7+38jlWoAOA?fMXUHi?qh)3shCK#UYr/+QsB][G7cQ16iW39P%7^;WX<T5Q!WN0N/]TY"Mf5,^Y`o3`e%?WC/KR7FE#R8=_5?Ckjj.A\s+/Z!=8%`_9r6=#A')7[7$9Neo<!TD%)(U/tO$Um;m1oM9h[KgZUQ8Xd<?G]/WP_rd?pia;UM8e1GISdtPR1.ME&*t?9>kt.$@I6O&n*3`pJpfh8r%s&]E)'<nm-7Pe:6n-g$HUL[!Z?Ou&kr^3':%t%d`fJCB1m]h7IaI81/u1^%P;g6#[8Bi@P3FGH<@XDQ"c&n3P"?TPBN#V%MX%@0;;%D+*'J==6f[@0]Fu3MR[#Y^A9j?AG;Op3cF$3OlF(+.?;afJ@B#&@TG[>'b%`G0"=eHc?%+01;YRudBZ!6%"kdGF@%rtVs7j)hn$LG%La`jZD`i(]d:nVclL-X;b#cBrPTi[aHJc1PGL'9CM6pI_\kn+cU;p'fEI[c\f^QM<@Sc&GdktgS+Z2%.id*'"`JegR9*LV4G7M+q[tKdfi-U-?9T6Ud7mOkkJU6`,A$bTrN@*V6$#%76TXE>p.hQ/@W+F8]QT56cU($670Pa<uQBu:Y\WWiF.r.<GT8Z;4#Ebu#Rdg22EN6]PU&g=dfSa\)&,`N4rbCn,<CWG/q\Qi5J#cd40j_+!7>dG!oEbg@"ah<hd4=i8cu!%LTbIP$<8:):&nGOl<`50I50e[+C-*)B<,,uK?jsA/6ILL[T7@?7Gl!2BQZL4fe7MXB.+)UTmjaL,Gp+E?6=`Znqb-[nY[@[%1O_NT<X^dAW<qYPK<(JL19m%<R@QeU-Lj_/Rt(2&k7?0Njsf,@9$9Qq8OU$s/Q$li?_\(X65Do:#Y2C6W1,<L4t7uA#F/<``'DS]^W*Z4,C]6a1X*bipbDXCO24N@!X6([@L>S:+aHUQZ[lPhj]SM@fO%HQ`:;dAX)e"1JoP45GXbpk5l:dY&M;1Q]5ds:=K_tnmBop:Wcgrt+&Gaqm:o"DnQM^NDOlZeOmFq5Oh?`c6!Fbg=6n+FDpU$lL0d^>]Ijp<K2LrnVAi*4>)=_?pCr[#s(;D`j<kO>#4Ho:b"^2bN?/thPJ3fW719di)J`Q>B<a%_][#^iF8(>sC*EQF@5rN`%:@_U3UhQ]K5V9h`R+V@"*7:";uq\R>Bm<Y[$7uV<cAP7Zo;&Icc_eZG+a#t1dt8_]0!BPg#sr][m3Jh'XuXsg)qICL"#OfoK1"2X4Ba3V-#![cWV'D[[.!-.U>e'#h=0j%<T+F3u0>F@d&uWY[9J2[e(7N3`h&bVm=fGb)WuuVP?^F+U?umMtcBTP;EWYM8LtcR<]+IEdkMI4&Z.TZ4tBE-"2ImJ:aog%IY_^Cltm6A*XSo/\JVk7.MZlXYq_o14EWH)a=&AOF@)`7R]44ZjfEg*Jr:`RA&!_hVYQH,*c@(fXIL8hHKScW;W5]YAu,1Ro:8oKu;WPUGtO^GRlK-/E'D:MAK9-lQb?Sqc/!8einIhEA%3m%PbpMJVlhrPFe^N8^j1JUa""GLu[:+2MM?G@dR#SB,d6q3V,C6M/E.t3$47eo$j+"9;J)oU*uZ!X2<PONuls[K%YeUE'-36;]u[lKDHR*`lIJ!\:Kp^K0m@#K['Jkdb?l9&;int`tjh;ADM\!UG8Bhh*ZiaX7/:g14)0.<UiZD^L;WWV$u)iTiGEMH7gP+0i)V.D5C:6SP.O*R6s,OC!XL!R07n#IH&jhhbpKdi&OYm?MH(l=s:11m_03\k#9RfbRh`A*ElU[5FA5p&[U<QOT_d9Ck^\rTg[9F[0:I:X\pW0*"[i?Z"(GCG$s?!4*Y&\l5HG=/4*5hE9u-E?q!^gVU?r*=d:V9FU_l<a^.6gMB#W%MiTIRjq+*-EFCNB1*>YA#4\e3/r,:c:l3^V>#,[Y^.#VF<]0\DjUnTE5W_R1Dmq%>b1nb!*/Y<f.O%&/X*(P&&^Vu/1M@LJ8K/[d.8>f0]Z]uM$N]LB_MH-_=VW[&5J_[Ndm45TH)>Y43qD2VA;8>Zon8kBfZXTV?![>k;)j+RNnLY__nQ"_1^F>63^h0RT)ER!oNE.;I/Kf_QE4u2$$He//E(L`o:&gJ^'6aq)"\Z/fqEfe*is&=V_X@YCfF9AY8$ub7!fTjfpas%'G_^GSM'R2YfQ9spQ^#'MmY?Y:NM$4mA=*&.B2%Mg=,hsGGjaB=(kF\P&Z8S,4f2WO.IuS\uP3#=kf4c'eSu[*[_=Y$DC,-LH4miY4cN%P=oOt:IF"-IL?"s)Gc8?7BZ!'jYdk#c)()!P[HQDM!V#cTB6[L<a(/=&"M[S;,X[j^'RinqIU@#;FT3QRmX,;3A8!&`Y.Nq!Aeg^?aXtsF#pCUC\iFYgh)@?Pu^JUO<`h$X,PA%HSQ:j9X+.[Qe7V@T3Kd*C,-BES\p!TDf'C_Xhq)TYk=!X]i.iXb#fE+&f]t+`*b6*r!,qUm%F~>endstream

-endobj

-% 'R344': class PDFStream 

-344 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2495 >>

-stream

-Gb!;e=``=e&q5%is$N,Z,&^>b"F,dFb:9rA<3=c/8Z+$QmDBJPQt$48G\/(Qs*hS,!:\D;3DQ(rWDk,s7iu)^J),uiLd)LO9aZDhQgi>i,)B]1Ae9s@(mb2VQcl:&54WXA/>%kENl>gdHOcW;E"TM(`,%DjiX'Fm5/C10'p6:E1N>FG^p7XfiZ3.,9MF[(+og2=E#t(4_=B`?s1ooWbeG7S%mM./1`OGV=?hrA5)+2u^46!TKQn8h&W.@KE5<hM=MQ>RLrjnMpFM*=rT]AsI)ps:]m@:m67&0)^K+/JkJ=/dPoah-FkW'f14F@GVUjrFSsuI;?E\IRr>(\+2_8_2'jR@q?S8LRJ\7++Q`FABoXrZ=6FE_el:*-.FA_/"^g$:R;h!iDRETTF`Aas-pN^4]Pujs#Z^80>cc>eW(H<,bqI:+E=/pq-W@d!!P;Vf/io)g[2HYe-I\Rl9E!(p.=2?0^'rXQJT19&*'XHL(?r_P%N<bm7KD&%QdZg]P:2X#->aHoD?/cJ23&O9%b)1P=FGQ^V//HY35`3L!17hfYhWk&Q-t`'RE;rlK@+bL!$\j'4i7_;;Y.lBc1TbJC1#pAC@c!.>c[jjf[mA+:"$/.P;=*m+W8CTQ,<F4b+KI!D#pUg[::]:*FeHA14Pr=GaQYJ%lP*X9d=*,0S:j2kIh%57a>+3/]dd`s2m?1flOm6&OKbl"<+%1eV)O^s'%A&)bCgRlI'-gd$mi2)eDY"CJLAkE&nLB(+mHVnio=JJY"mO^'92_A=h9!i")!@4-aLO'=[K#YB<:D0c,jP8JGLHR5Olu:eI<[jTb/_IiI`a]8)_"E2Plp!B\\AT^c[7[W-o9%M`rmr0Y)`25fHlhE7A1G=g^>2ZdoEbA.+ZBLb\W59;YAFAXSW2jFAQd2G4U<jNf)K\[!WV<u0E`]:dBIDLZXk%RIZlF=5ZPZJ/s,>+(Pf[eL$RKd`*G3tT7gEuh"QL!"M:BaMFc;B!3ZqN[0,53T#`6h"2VBMV435GCW6@euq,a@e(*gX[G\&;hR2C7V9C%\VH;c5-Sg>@YI6\PWEW0H3%T_\$=T![d_&oJ.VDO*A1N&r(2=`LXb)ggTU3eJ.fDpBp@")$E06$Ia2j"6c390#i(7Z](O9H@gn%2]CMaO]s2@J]HcQ"<kH!gg6Dd0qER6E>dbr&::oFgplL8N0mB7Kkk3d.2Z3D(WBCdbH&0>0rPqm/33eVFTBQ3K&K.K3n9HKrs4Pm0?%:!:.GBB-o@/4s'LJS_q+0+meCi#-hH'P6q;c;\8s8_nn`?.#&6YrPT5jS4?"5UL39T1#`Pc8Z`N]KrDfGL*h^f&X1G4fS2BZ`]^s,<FYoSmCa@XR9KX5S"7;\;nK]gYBHE(WpRPI^SljX,oQC5"Z82VRaMeU24Zb@SIAD!J3ao/h9g'ACEBAZEe_V]4&,bX39%MVW]4M'7>MB.jP4jP!hh6que]1itbV<YkHa4X>VlDN)9eaV_*o_P53u8HdiUsNIg\18.4R_/GIVMisPf*R&.b(1(d()O_\E;MR;JUQQp*uL;-03Dm"1H_Do7k(.BJ>u,Z=o^DEn)7ZUH,dTU\b?Cl8T]BVt8Z,0t,``;3R"&@_/1l8)0+Ek2T"JgFAJ[6*b2#bl6Ts0]@LZO)lfG>XZs]Ci#PlM%m6la]b"a($$-g@3Lh"%<2Wi*V4C%Tn`!.l``a/ZeJb8F<o6BlpT4h"e=]N7\+ZZ^TQErR3G;:\7k^/@)lZ;5'lM0)]IAKg*>MeO8itl?6LIZhRk`q[8nPrNHA_3Pr1Lh4#L'&)mB,jgC>ebX-hi.3Dn^TDpffe]*%b&A?abC(!k1T(qA.)"J`4\)Z'quSp+=)`>d8=+SlmSN$:!(J6W&Ee,=&mb84in$`P^)qq'#llXu<J9plrg\r`mcQI32GC'o"Bf34oN<lXpk<f6(X#;Q!t[aNhAd7alBX>'d"EbIFW]D/hnlEI/%hG;JpRq.8_r#Z%(lubS4c6@q"()^?c)n\!3au!-(6h+KM)_MlN)_9h=Y7q3g4+02^4D<*fSED<H2bNMd4f,_d8m8gT)Mj!ee3nd9@e@/Akn9:V!WOmgR?`"\dWqm(dBTh0lo#P*Sn<XS]@=8jXdEjCB%+nnjL5&Q,9Fj6oYm\g5A$^fZI\Mq0Jdjn"(-=8`<;UVTLO\@H)22u/Q\+JZ)Roh`80.20r-TO6P.F,=skA3SLL/)[f`[q`]cgQA0scHkM`/\in^F$Y/.e^jrgq(:OG+DhC[Y8V/:NE'DCfZ?S]-6P`P+scV$UDAG^?0Fb4aTBs>-XnEmTH8i#:Zl;]<1d2dbof9j\lAVns<a"WKd3dYNCn/5@VNRSCu*t@bKJ);>VPL+fhHI/]fL15BF+8jkA*Y1[Z4mLooI<3T8VIiUMNK+F'Fs\VQbTo$\no3*o*^K(!1*BNRe"^N@4-1_SQKM1ts&..>%`EC2WgHCmkA&PSDd*p4K':+G0W@p]J'APN9rKu,#9.pajF8QSTnE~>endstream

-endobj

-% 'R345': class PDFStream 

-345 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2066 >>

-stream

-Gb!;f>BALX'RoLEs218;PjEo:gXndKP&*5I9XDEcmSdGF/O5:I\WRrT^Y^9hQtm>P&oTgA(a@Y]dAM'"oBG7$(I,)$N`(DN&cDI]"kSCS"PfTtK@)&k2gYGfVu:\[a+GFXT$n5>SW.Y+3ps;tl$%R-$Xiu1't.:/iAt)lG6VIUUU9q8q_5_WS\T@%[3%D_Q5?(/kQd(GYU4b*Im98a^2@0)G=0FEpkVf"S_rgg_nB*]T&YNR^G'KfKS+_fRKp"aR$K\4]>ubMA+g9_TECNP::1XZ"s^-)I$#VIEA$K#"5'tE%/WfGY79aqT0#F2]8g5'l-YI,Pt3^*fpF'Z08a2nj@iK[4A,13.YrntD`o<`,&pC)N/;!ULl=rR;/d'[XJKmP@jtLghqh^g^:mpkk2OQS#<mr(`L#>PY[P+Db7p$a?EHboC!Kjl)ci%lTg^4>(fNSqPXA.5=[Z7/(`Gb$(E0>^Ose?Q1tk]7(bYknd.UfM1?Y1t.A3*IF?N?3fnb8JkDK8_.G)\9?'YObZ\52X<gZ]dG5_AO"=-hG18:!Rn17?Amh@`ha/^AOY)Vh&1LSBUP&+rNUPY@"otA6RNqA?;0-<6X>LOn,bf:%,)+X!)6Sn(DS6*]V'JY+=ag.b``;!i[+V5gR;'M>40/i][7Q<JmiXD42<ZOc%$mpt;bsd>53TG&DK8'M@KD6&**i>el:kf1M$CM,L>.8CaDlkgmm@OKVc._e[N+9mZ7\AE'PEeo_N0Tdo3C3/S3D3i._SeeR$+1?QL0_h_'X<ojSIi(sd&ZKJ)!*S!nmV/]+t8?bE6#qfQ[hLN#q!"g#ej_(!i^ui!Y["\MtI#"`mi:%5s:c66'D]`C;jn"78Hi*ij8Tc*&gg.[GgTd\i;T4n"C$1CDaf".[>Q!nPW#uOPUAV4KJDVb_!J4(W6dC5=:$1pG?%&B?J"3ekcD'TGJ(Bqt[M_oS97K#b?)I:ggO<^^\h>Ar#l<.nu2f^e$qG)E_Ho8I<O^:.S0IQ=i*rJ4$V(\7Ys$Uu[Q%)*tqb6AP%[&!SLc_RM)j^HQ16f*T:u+nJG8=m75Z5V"Xj%>9`JKV^T+ND+7EGgc+XMN$F@1>Aet876UVK>Ea#mppfS7J07nU?pCXB\EXJ@RATeOmb4ZCei+lT1I8&fp6l1@$]P$T<VpBOUs<;0L<_a\:E1Z1*=58f(b"m2H^`G@NS-+)&>ll\\saG,$CVi"sH]]:,?0dhH]#\F*ns-:!?-PVD_$+M];+*M<n!>O".!2A6^[u$'Ri6R@JZ4^4`RN,$Zf$`_!]LY)UsLfEa;!1*]^l6)h-S:U;-f^N%u@2I^38H8Sr:[k\Ac'JdWq#NK%\FPFsgEhRVMH%(*h!-U46l,ufFT-#7hKgd[]ITcL";W]'QUQ*b3UUHhls!WJH06Fd"qJ#D_=Plrn_X/8i:'E8I;Q:G!/chdoRT8PjeF'g:K!8CNFDOMnMG#<iq^F"3M$<a;KbTQD=WRuH$0>/2']$)e[>+pFr5ru`BcYZk?kQ/d@dAY;Bj"P\e#JJ'2]O_KSDbnor6B.iY'Jl=(W:W()clK65(IEXNCCuTI3_S"[5IY6)U]5@/^83G%i\g@04k:O&:rg5HHr`d1&<s;%*s-e?.(ir^t=e3%Hn2G*AkC<Gn,8-POkDF?lZqJi,s[i2oo@%^A'phKfaCGA\dJp((V&9L:4T;d2dh*;0,9AN[Y-*W@iD:TcdAcO+_M^2KYS@Dl:jJhe8o-7/a5=fC(Z13'(b/`"=BCP7Ls&fBbidV"sN!&C!7n410_/P6(6%2_P(FR_H0s-=[_qjX#Tu\MknH.4t!lb\%=b1MDs2UeMS5e)"rGUghn&"dJ_g]ODe+VQQ3oRtG-j7mbW`k:trL^9T;l:+/PC=slmMR2GrP%cGR6/(2r@A8PT<-u@7bj5r\bWRZA2+Y]Nc%Mu!&VAUs:U;+!e782Gt)_u![?D"`ER3SMB]<X20K1O`C2A&LnF=tS$RbbDicYq,;1sELFfsIL/ZKrE8RnA7lhsR4Rfq@T&Ap@tdZio1>$UJF4f071g1+H.cUhD-$N99'kX+(/do.1[~>endstream

-endobj

-% 'R346': class PDFStream 

-346 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 210 >>

-stream

-GasJJ9a\`k&;Bk0gu0ici7NlXj''fpS&1]2[Yfbk=r1N&,d^"PW6?q@DgpQ`a?spH<<o#sq[8#cj:8V/+]k1&X$.hjj3GLYnh0;,k_pNX)Ys<H`o4%"\2mD>"jPN$E0+u8#*8!5a[OrH`UH-)M@HA8C_K.'ZC`3"P/nU>#ALc^7e?j>_e!u^WeT]=WG)NL6,Pm(8*A6O<Z`u"7:u~>endstream

-endobj

-xref

-0 347

-0000000000 65535 f

-0000000113 00000 n

-0000000263 00000 n

-0000000469 00000 n

-0000012253 00000 n

-0000012440 00000 n

-0000012682 00000 n

-0000012912 00000 n

-0000013142 00000 n

-0000013371 00000 n

-0000013598 00000 n

-0000013826 00000 n

-0000014058 00000 n

-0000014289 00000 n

-0000014521 00000 n

-0000014752 00000 n

-0000014981 00000 n

-0000015213 00000 n

-0000015443 00000 n

-0000015675 00000 n

-0000015907 00000 n

-0000016136 00000 n

-0000016365 00000 n

-0000016597 00000 n

-0000016829 00000 n

-0000017060 00000 n

-0000017292 00000 n

-0000017521 00000 n

-0000017751 00000 n

-0000017980 00000 n

-0000018211 00000 n

-0000018442 00000 n

-0000018674 00000 n

-0000018906 00000 n

-0000019138 00000 n

-0000019368 00000 n

-0000019600 00000 n

-0000019831 00000 n

-0000020063 00000 n

-0000020295 00000 n

-0000020527 00000 n

-0000020759 00000 n

-0000020990 00000 n

-0000021220 00000 n

-0000021451 00000 n

-0000021682 00000 n

-0000021914 00000 n

-0000022127 00000 n

-0000022865 00000 n

-0000023094 00000 n

-0000023325 00000 n

-0000023555 00000 n

-0000023785 00000 n

-0000024016 00000 n

-0000024246 00000 n

-0000024477 00000 n

-0000024706 00000 n

-0000024937 00000 n

-0000025167 00000 n

-0000025399 00000 n

-0000025631 00000 n

-0000025863 00000 n

-0000026094 00000 n

-0000026325 00000 n

-0000026555 00000 n

-0000026786 00000 n

-0000027018 00000 n

-0000027251 00000 n

-0000027485 00000 n

-0000027719 00000 n

-0000027952 00000 n

-0000028185 00000 n

-0000028420 00000 n

-0000028655 00000 n

-0000028888 00000 n

-0000029122 00000 n

-0000029356 00000 n

-0000029591 00000 n

-0000029825 00000 n

-0000030060 00000 n

-0000030294 00000 n

-0000030529 00000 n

-0000030762 00000 n

-0000030995 00000 n

-0000031229 00000 n

-0000031464 00000 n

-0000031697 00000 n

-0000031931 00000 n

-0000032165 00000 n

-0000032383 00000 n

-0000033052 00000 n

-0000033288 00000 n

-0000033525 00000 n

-0000033760 00000 n

-0000034014 00000 n

-0000034282 00000 n

-0000034527 00000 n

-0000034799 00000 n

-0000035090 00000 n

-0000035367 00000 n

-0000035641 00000 n

-0000035923 00000 n

-0000036202 00000 n

-0000036470 00000 n

-0000036734 00000 n

-0000036991 00000 n

-0000037242 00000 n

-0000037493 00000 n

-0000037790 00000 n

-0000038083 00000 n

-0000038366 00000 n

-0000038682 00000 n

-0000038972 00000 n

-0000039257 00000 n

-0000039546 00000 n

-0000039828 00000 n

-0000040108 00000 n

-0000040383 00000 n

-0000040944 00000 n

-0000041227 00000 n

-0000041525 00000 n

-0000041810 00000 n

-0000042101 00000 n

-0000042398 00000 n

-0000042692 00000 n

-0000042990 00000 n

-0000043272 00000 n

-0000043544 00000 n

-0000043816 00000 n

-0000044084 00000 n

-0000044364 00000 n

-0000044642 00000 n

-0000044920 00000 n

-0000045238 00000 n

-0000045525 00000 n

-0000045811 00000 n

-0000046074 00000 n

-0000046313 00000 n

-0000046533 00000 n

-0000047020 00000 n

-0000047198 00000 n

-0000047424 00000 n

-0000047610 00000 n

-0000047833 00000 n

-0000048138 00000 n

-0000048411 00000 n

-0000048701 00000 n

-0000048941 00000 n

-0000049182 00000 n

-0000049424 00000 n

-0000049666 00000 n

-0000049908 00000 n

-0000050135 00000 n

-0000050333 00000 n

-0000050573 00000 n

-0000050813 00000 n

-0000051055 00000 n

-0000051296 00000 n

-0000051519 00000 n

-0000051931 00000 n

-0000052173 00000 n

-0000052413 00000 n

-0000052636 00000 n

-0000052968 00000 n

-0000053208 00000 n

-0000053450 00000 n

-0000053684 00000 n

-0000053926 00000 n

-0000054167 00000 n

-0000054409 00000 n

-0000054651 00000 n

-0000054892 00000 n

-0000055116 00000 n

-0000055508 00000 n

-0000055746 00000 n

-0000055983 00000 n

-0000056220 00000 n

-0000056442 00000 n

-0000056768 00000 n

-0000057042 00000 n

-0000057332 00000 n

-0000057574 00000 n

-0000057810 00000 n

-0000058047 00000 n

-0000058268 00000 n

-0000058610 00000 n

-0000058852 00000 n

-0000059094 00000 n

-0000059320 00000 n

-0000059652 00000 n

-0000059893 00000 n

-0000060118 00000 n

-0000060440 00000 n

-0000060681 00000 n

-0000060922 00000 n

-0000061163 00000 n

-0000061388 00000 n

-0000061730 00000 n

-0000061956 00000 n

-0000062268 00000 n

-0000062509 00000 n

-0000062750 00000 n

-0000062992 00000 n

-0000063234 00000 n

-0000063475 00000 n

-0000063717 00000 n

-0000063959 00000 n

-0000064200 00000 n

-0000064442 00000 n

-0000064678 00000 n

-0000064903 00000 n

-0000065315 00000 n

-0000065556 00000 n

-0000065781 00000 n

-0000066087 00000 n

-0000066377 00000 n

-0000066619 00000 n

-0000066860 00000 n

-0000067086 00000 n

-0000067418 00000 n

-0000067658 00000 n

-0000067878 00000 n

-0000068200 00000 n

-0000068441 00000 n

-0000068680 00000 n

-0000068919 00000 n

-0000069235 00000 n

-0000069509 00000 n

-0000069784 00000 n

-0000069926 00000 n

-0000070170 00000 n

-0000070299 00000 n

-0000070505 00000 n

-0000070662 00000 n

-0000070834 00000 n

-0000071003 00000 n

-0000071216 00000 n

-0000071387 00000 n

-0000071616 00000 n

-0000071775 00000 n

-0000071955 00000 n

-0000072139 00000 n

-0000072329 00000 n

-0000072511 00000 n

-0000072694 00000 n

-0000072861 00000 n

-0000073047 00000 n

-0000073271 00000 n

-0000073440 00000 n

-0000073609 00000 n

-0000073799 00000 n

-0000073975 00000 n

-0000074166 00000 n

-0000074385 00000 n

-0000074540 00000 n

-0000074717 00000 n

-0000074887 00000 n

-0000075057 00000 n

-0000075220 00000 n

-0000075415 00000 n

-0000075644 00000 n

-0000075802 00000 n

-0000075980 00000 n

-0000076158 00000 n

-0000076335 00000 n

-0000076494 00000 n

-0000076682 00000 n

-0000076909 00000 n

-0000077120 00000 n

-0000077289 00000 n

-0000077468 00000 n

-0000077655 00000 n

-0000077837 00000 n

-0000078009 00000 n

-0000078230 00000 n

-0000078387 00000 n

-0000078572 00000 n

-0000078752 00000 n

-0000078917 00000 n

-0000079132 00000 n

-0000079294 00000 n

-0000079471 00000 n

-0000079639 00000 n

-0000079813 00000 n

-0000079987 00000 n

-0000080163 00000 n

-0000080338 00000 n

-0000080502 00000 n

-0000080727 00000 n

-0000080885 00000 n

-0000081070 00000 n

-0000081244 00000 n

-0000081434 00000 n

-0000081608 00000 n

-0000081823 00000 n

-0000081990 00000 n

-0000082174 00000 n

-0000082358 00000 n

-0000082524 00000 n

-0000082750 00000 n

-0000082925 00000 n

-0000083099 00000 n

-0000083248 00000 n

-0000083433 00000 n

-0000083667 00000 n

-0000083825 00000 n

-0000084013 00000 n

-0000084198 00000 n

-0000084377 00000 n

-0000084614 00000 n

-0000084786 00000 n

-0000084962 00000 n

-0000085132 00000 n

-0000085312 00000 n

-0000085484 00000 n

-0000085708 00000 n

-0000085872 00000 n

-0000086060 00000 n

-0000086248 00000 n

-0000086461 00000 n

-0000086601 00000 n

-0000086961 00000 n

-0000088892 00000 n

-0000090551 00000 n

-0000093975 00000 n

-0000097112 00000 n

-0000100523 00000 n

-0000103432 00000 n

-0000106168 00000 n

-0000109125 00000 n

-0000112041 00000 n

-0000114971 00000 n

-0000117386 00000 n

-0000121726 00000 n

-0000125032 00000 n

-0000128099 00000 n

-0000131133 00000 n

-0000133762 00000 n

-0000136496 00000 n

-0000139078 00000 n

-0000141852 00000 n

-0000145169 00000 n

-0000148048 00000 n

-0000150892 00000 n

-0000153732 00000 n

-0000156372 00000 n

-0000158583 00000 n

-trailer

-<< /ID 

- % ReportLab generated PDF document -- digest (http://www.reportlab.com) 

- [(/\(,h\315\262\327\227]MM$\306\353\011\335) (/\(,h\315\262\327\227]MM$\306\353\011\335)] 

-

- /Info 229 0 R

- /Root 228 0 R

- /Size 347 >>

-startxref

-158909

-%%EOF

diff --git a/pdk/docs/compatibility/android-cts-manual-r4.pdf b/pdk/docs/compatibility/android-cts-manual-r4.pdf
deleted file mode 100644
index f16b6f9..0000000
--- a/pdk/docs/compatibility/android-cts-manual-r4.pdf
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/compatibility/compatibility_toc.cs b/pdk/docs/compatibility/compatibility_toc.cs
deleted file mode 100644
index 056605a..0000000
--- a/pdk/docs/compatibility/compatibility_toc.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-  <li><h2>Getting Started</h2><ul>
-    <li><a href="<?cs var:toroot ?>compatibility/overview.html">Compatibility Overview</a></li>
-    <li><a href="<?cs var:toroot ?>compatibility/android-2.3.3-cdd.pdf">Current CDD</a></li>
-    <li><a href="<?cs var:toroot ?>compatibility/cts-intro.html">CTS Introduction</a></li>
-    <li><a href="<?cs var:toroot ?>compatibility/cts-development.html">CTS Development</a></li>
-  </ul></li>
-
-  <li><h2>More Information</h2><ul>
-    <li><a href="<?cs var:toroot ?>compatibility/downloads.html">Downloads</a></li>
-    <li><a href="<?cs var:toroot ?>faqs.html#compatibility">FAQs</a></li>
-    <li><a href="<?cs var:toroot ?>compatibility/contact-us.html">Contact Us</a></li>
-  </ul></li>
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
diff --git a/pdk/docs/compatibility/contact-us.jd b/pdk/docs/compatibility/contact-us.jd
deleted file mode 100644
index 2aa2aa1..0000000
--- a/pdk/docs/compatibility/contact-us.jd
+++ /dev/null
@@ -1,30 +0,0 @@
-page.title=Contact Us
-doc.type=compatibility
-@jd:body
-<p>Thanks for your interest in Android compatibility!</p>
-<p>If you have questions about Android compatibility that aren't covered in
-this site, you can reach us in one of a few different ways. To get the most
-out of any of these options, please first read "Getting the Most from Our
-Lists" on the <a href="{@docRoot}community/index.html">Community page.</a></p>
-
-<h3>For General Discussion</h3>
-<p>The preferred way to reach us is via the <a
-href="mailto:compatibility@android.com">compatibility@android.com
-address</a>.</p>
-
-<h3>For CTS Technical Questions</h3>
-<p>If you have specific issues with the Compatibility Test Suite that require
-you to disclose information you'd prefer not to be public, you can contact an
-email address we've set up specifically this purpose: <a
-href="mailto:cts@android.com">cts@android.com</a>. This email address is for
-cases that require disclosure of confidential information only, so general
-questions will be directed back to the public android-compatibility
-list. Note also that this list is for specific technical questions; general
-inquiries will also be directed back to the android-compatibility list.</p>
-
-<h3>For Business Inquiries</h3>
-<p>Finally, business inquiries about the compatibility program, including
-requests to use branding elements and so on, can be sent to the address <a
-href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>. Like
-the CTS address, this address is for specific, private inquiries; general
-questions will be directed back to the android-compatibility list.</p>
diff --git a/pdk/docs/compatibility/cts-development.jd b/pdk/docs/compatibility/cts-development.jd
deleted file mode 100644
index 7a2f5af..0000000
--- a/pdk/docs/compatibility/cts-development.jd
+++ /dev/null
@@ -1,130 +0,0 @@
-page.title=CTS Development
-doc.type=compatibility
-@jd:body
-
-<h3>Initializing Your Repo Client</h3>
-
-<p>Follow the
-<a href="{@docRoot}source/download.html">instructions</a>
-to get and build the Android source code but specify "-b froyo"
-when issuing the "repo init" command. This assures that your CTS
-changes will be included in the next CTS release and beyond.</p>
-
-<h3>Setting Up Eclipse</h3>
-
-<p>Follow the
-<a href="{@docRoot}source/using-eclipse.html">instructions</a>
-to setup Eclipse but execute the following command to generate the
-.classpath file rather than copying the one from the development
-project:</p>
-
-<pre>
-cd /path/to/android/root
-./cts/development/ide/eclipse/genclasspath.sh &gt; .classpath
-chmod u+w .classpath
-</pre>
-
-<p>This .classpath file will contain both the Android framework
-packages and the CTS packages.</p>
-
-<h3>Building and Running CTS</h3>
-
-<p>Execute the following commands to build CTS and start the interactive
-CTS console:</p>
-
-<pre>
-cd /path/to/android/root
-make cts
-cts
-</pre>
-
-<p>Provide arguments to CTS to immediately start executing a test:</p>
-
-<pre>
-cts start --plan CTS -p android.os.cts.BuildVersionTest
-</pre>
-
-<h3>Writing CTS Tests</h3>
-
-<p>CTS tests use JUnit and the Android testing APIs. Review the
-<a href="http://d.android.com/guide/topics/testing/testing_android.html">Testing
-and Instrumentation</a> tutorial while perusing the existing tests under the
-"cts/tests/tests" directory. You will see that CTS tests mostly follow the same
-conventions used in other Android tests.</p>
-
-<p>Since CTS runs across many production devices, the tests must follow
-these rules:</p>
-
-<ul>
-    <li>Must take into account varying screen sizes, orientations, and
-        keyboard layouts.</li>
-    <li>Only use public API methods. In other words, avoid all classes,
-        methods, and fields that are annotated with the "hide" annotation.</li>
-    <li>Avoid relying upon particular view layouts or depend on the
-        dimensions of assets that may not be on some device.</li>
-    <li>Don't rely upon root privileges.</li>
-</ul>
-
-<h4>Test Naming and Location</h4>
-
-<p>Most CTS test cases target a specific class in the Android API. These tests
-have Java package names with a "cts" suffix like "android.view.cts" and class
-names with the "Test" suffix like "ViewTest." Each test case consists of
-multiple tests, where each test usually exercises a particular API method of
-the API class being tested. Each test is annotated with a @TestTargetNew
-annotation to indicate what API method is being exercised. These tests are
-arranged in a directory structure where tests are grouped into different
-categories like "widgets" and "views."</p>
-
-<p>For example, the CTS test for "android.widget.TextView" is
-"android.widget.cts.TextVietTest" found under the
-"cts/tests/tests/widget/src/android/widget/cts" directory with its
-Java package name as "android.widget.cts" and its class name as
-"TextViewTest." The "TextViewTest" class has a test called "testSetText"
-that exercises the "setText" method and a test named "testSetSingleLine" that
-calls the "setSingleLine" method. Each of those tests have @TestTargetNew
-annotations indicating what they cover.</p>
-
-<p>Some CTS tests do not directly correspond to an API class but are placed in
-the most related package possible. For instance, the CTS test,
-"android.net.cts.ListeningPortsTest," is in the "android.net.cts," because it
-is network related even though there is no "android.net.ListeningPorts" class.
-Thus, use your best judgement when adding new tests and refer to other tests
-as examples.</p>
-
-<h4>New Test Packages</h4>
-
-<p>When adding new tests, there may not be an existing directory to place your
-test. In that case, refer to the example under "cts/tests/tests/example" and
-create a new directory. Furthermore, make sure to add your new package's
-module name from its Android.mk to "CTS_COVERAGE_TEST_CASE_LIST" in
-"cts/CtsTestCaseList.mk." This Makefile is used by "build/core/tasks/cts.mk"
-to glue all the tests together to create the final CTS package.</p>
-
-<h4>Test Stubs and Utilities</h4>
-
-<p>Some tests use additional infrastructure like separate activities
-and various utilities to perform tests. These are located under the
-"cts/tests/src" directory. These stubs aren't separated into separate test
-APKs like the tests, so the "cts/tests/src" directory does not have additional
-top level directories like "widget" or "view." Follow the same principle of
-putting new classes into a package with a name that correlates to the purpose
-of your new class. For instance, a stub activity used for testing OpenGL like
-"GLSurfaceViewStubActivity" belongs in the "android.opengl.cts" package under
-the "cts/tests/src/android/opengl" directory.</p>
-
-<h3>Other Tasks</h3>
-
-<p>Besides adding new tests there are other ways to contribute to CTS:</p>
-
-<ul>
-    <li>Fix or remove tests annotated with BrokenTest and KnownFailure.</li>
-</ul>
-
-<h3>Submitting Your Changes</h3>
-
-<p>Follow the 
-<a href="{@docRoot}source/submit-patches.html">Android
-contributors' workflow</a> to contribute changes to CTS. A reviewer
-will be assigned to your change, and your change should be reviewed shortly!</p>
-
diff --git a/pdk/docs/compatibility/cts-intro.jd b/pdk/docs/compatibility/cts-intro.jd
deleted file mode 100644
index 5d80a45..0000000
--- a/pdk/docs/compatibility/cts-intro.jd
+++ /dev/null
@@ -1,93 +0,0 @@
-page.title=Compatibility Test Suite
-doc.type=compatibility
-@jd:body
-<h3>How does the CTS work?</h3>
-<div><img src="{@docRoot}images/cts-0.png"></div>
-<div>The CTS is an automated testing harness that includes two major software components:</div>
-<ul>
-<li>The CTS test harness runs on your desktop machine and manages test execution.</li>
-<li>Individual test cases are executed on attached mobile devices or on an
-emulator. The test cases are written in Java as JUnit tests and packaged as
-Android .apk files to run on the actual device target.</li>
-</ul>
-
-<h3>Workflow</h3>
-<ol>
-<li><a href="{@docRoot}compatibility/downloads.html">Download</a> the CTS.
-<li>Attach at least one device (or emulator) to your machine.</li>
-<li>For CTS 2.1 R2 and beyond, setup your device (or emulator) to run the accessibility tests:
-    <ol>
-        <li>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</li>
-        <li>On the device, enable Settings &gt; Accessibility &gt; Accessibility &gt; Delegating Accessibility Service</li>
-    </ol>
-</li>
-<li>Launch the CTS. The CTS test harness loads the test plan onto the attached devices. For each test in the test harness:
-    <ul>
-    <li>The test harness pushes a .apk file to each device, executes the test through instrumentation, and records test results.</li>
-    <li>The test harness removes the .apk file from each device.</li>
-    </ul>
-</li>
-<li>Once all the tests are executed, you can view the test results in your browser and use the results to adjust your design. You can continue to run the CTS throughout your development process.</li>
-</ol>
-<div>When you are ready, you can submit the report generated by the CTS to cts@android.com. The report is a .zip archived file that contains XML results and supplemental information such as screen captures.</div>
-
-<h3>Types of test cases</h3>
-The CTS includes the following types of test cases:
-<ul>
-<li><i>Unit tests</i> test atomic units of code within the Android platform; e.g. a single class, such as java.util.HashMap.</li>
-<li><i>Functional tests</i> test a combination of APIs together in a higher-level use-case.</li>
-<li><i>Reference application tests</i> instrument a complete sample application to exercise a full set of APIs and Android runtime services</li>
-</ul>
-<div>Future versions of the CTS will include the following types of test cases:</div>
-<ul>
-<li><i>Robustness tests</i> test the durability of the system under stress.</li>
-<li><i>Performance tests</i> test the performance of the system against defined benchmarks, for example rendering frames per second.</li>
-</ul>
-
-<h3>Areas Covered</h3>
-The unit test cases cover the following areas to ensure compatibility <br>
-<table><tbody>
-<tr><td>Area</td><td>Description <br></td></tr>
-<tr><td>Signature tests</td>
-<td>For each Android release, there are XML files describing the signatures of all public APIs contained in the release. The CTS contains a utility to check those API signatures against the APIs available on the device. The results from signature checking are recorded in the test result XML file.
-</td>
-</tr>
-<tr><td>Platform API Tests</td>
-<td>Test the platform (core libraries and Android Application Framework) APIs as documented in the SDK <a href="http://code.google.com/android/reference/classes.html">Class Index</a>
-to ensure API correctness:
-<ul>
-<li>correct class, attribute and method signatures</li>
-<li>correct method behavior</li>
-<li>negative tests to ensure expected behavior for incorrect parameter handling</li>
-</ul>
-</td></tr>
-<tr><td>Dalvik VM Tests</td><td>The tests focus on testing the Dalvik VM</td></tr>
-<tr><td>Platform Data Model</td>
-<td>The CTS tests the core platform data model as exposed to application developers through content providers, as documented in the SDK <a href="http://code.google.com/android/reference/android/provider/package-summary.html">android.provider</a>
-package:
-<ul>
-<li>contacts</li>
-<li>browser</li>
-<li>settings</li>
-<li>more...</li>
-</ul>
-</td></tr>
-<tr><td>Platform Intents</td>
-<td>The CTS tests the core platform intents, as documented in the SDK <a href="http://code.google.com/android/reference/available-intents.html">Available Intents</a>.</td>
-</tr>
-<tr><td>Platform Permissions</td>
-<td>The CTS tests the core platform permissions, as documented in the SDK <a href="http://code.google.com/android/reference/android/Manifest.permission.html">Available Permissions</a>.</td>
-</tr>
-<tr><td>Platform Resources <br></td>
-<td>The CTS tests for correct handling of the core platform resource types, as documented in the SDK <a href="http://code.google.com/android/reference/available-resources.html">Available Resource Types</a>
-. This includes tests for:
-<ul>
-<li>simple values</li>
-<li>drawables</li>
-<li>nine-patch</li>
-<li>animations</li>
-<li>layouts</li>
-<li>styles and themes</li>
-<li>loading alternate resources</li>
-</ul></td></tr>
-</tbody></table>
diff --git a/pdk/docs/compatibility/downloads.jd b/pdk/docs/compatibility/downloads.jd
deleted file mode 100644
index 79ad81b..0000000
--- a/pdk/docs/compatibility/downloads.jd
+++ /dev/null
@@ -1,59 +0,0 @@
-page.title=Android Compatibility Downloads
-doc.type=compatibility
-@jd:body
-<p>Thanks for your interest in Android Compatibility! The links below allow
-you to access the key documents and information.</p>
-
-<h2>Android 2.3</h2>
-<p>Android 2.3 is the release of the development milestone code-named
-Gingerbread. Android 2.3 is the current version of Android. Source code for
-Android 2.3 is found in the 'gingerbread' branch in the open-source tree.
-</p>
-<ul>
-  <li><a href="{@docRoot}compatibility/android-2.3.3-cdd.pdf">Android 2.3.3 Compatibility Definition Document (CDD)</a></li>
-  <li><a href="http://dl.google.com/dl/android/cts/android-cts-2.3_r2-x86.zip">Android 2.3 R2 Compatibility Test Suite (CTS)</a></li>
-</ul>
-
-<h2>Android 2.2</h2>
-<p>Android 2.2 is the release of the development milestone code-named
-FroYo. Source code for Android 2.2 is found in the 'froyo' branch in the
-open-source tree.
-</p>
-<ul>
-  <li><a href="{@docRoot}compatibility/android-2.2-cdd.pdf">Android 2.2 Compatibility Definition Document (CDD)</a></li>
-  <li><a href="http://dl.google.com/dl/android/cts/android-cts-2.2_r5-x86.zip">Android 2.2 R5 Compatibility Test Suite (CTS)</a></li>
-</ul>
-
-<h2>Android 2.1</h2>
-<p>Android 2.1 is the release of the development milestone code-named
-Eclair. Source code for Android 2.1 is found in the 'eclair' branch in the
-open-source tree. Note that for technical reasons, there is no compatibility
-program for Android 2.0 or 2.0.1, and new devices must use Android 2.1.
-</p>
-<ul>
-  <li><a href="{@docRoot}compatibility/android-2.1-cdd.pdf">Android 2.1 Compatibility Definition Document (CDD)</a></li>
-  <li><a href="http://dl.google.com/dl/android/cts/android-cts-2.1_r5-x86.zip">Android 2.1 R5 Compatibility Test Suite (CTS)</a></li>
-</ul>
-
-<h2>Android 1.6</h2>
-<p>Android 1.6 was the release of the development milestone code-named Donut.
-Android 1.6 was obsoleted by Android 2.1. Source code for Android 1.6 is found
-in the 'donut' branch in the open-source tree.
-<ul>
-  <li><a href="{@docRoot}compatibility/android-1.6-cdd.pdf">Android 1.6 Compatibility Definition Document (CDD)</a></li>
-  <li><a href="http://dl.google.com/dl/android/cts/android-cts-1.6_r1-x86.zip">Android 1.6 R1 Compatibility Test Suite (CTS)</a></li>
-</ul>
-
-<h2>Compatibility Test Suite Manual</h2>
-<p>The CTS user manual is applicable to any CTS version, but CTS 2.1 R2 and
-beyond require
-<a href="{@docRoot}compatibility/cts-intro.html">additional steps</a>
-to run the accessibility tests.
-<ul>
-  <li><a href="{@docRoot}compatibility/android-cts-manual-r4.pdf">Compatibility Test Suite (CTS) User Manual</a></li>
-</ul>
-
-<h2>Older Android Versions</h2>
-<p>There is no Compatibility Program for older versions of Android, such as Android
-1.5 (known in development as Cupcake). New devices intended to be Android
-compatible must ship with Android 1.6 or later.</p>
diff --git a/pdk/docs/compatibility/index.jd b/pdk/docs/compatibility/index.jd
deleted file mode 100644
index e4e30a8..0000000
--- a/pdk/docs/compatibility/index.jd
+++ /dev/null
@@ -1,64 +0,0 @@
-page.title=Android Compatibility
-doc.type=compatibility
-@jd:body
-<p>Android's purpose is to establish an open platform for developers to build
-innovative mobile apps. Three key components work together to realize this
-platform.</p>
-<p>The Android Compatibility Program defines the technical details of Android
-platform and provides tools used by OEMs to ensure that developers’ apps run
-on a variety of devices. The Android SDK provides built-in tools that
-Developers use to clearly state the device features their apps require. And
-Android Market shows apps only to those devices that can properly run
-them.</p>
-<p>These pages describe the Android Compatibility Program and how to get
-access to compatibility information and tools. The latest version of the
-Android source code and compatibility program is 2.3, which 
-corresponded to the Gingerbread branch.</p>
-
-
-<h2>Why build compatible Android devices?</h2>
-<h3>Users want a customizable device.</h3>
-<p>A mobile phone is a highly personal, always-on, always-present gateway to
-the Internet. We haven't met a user yet who didn't want to customize it by
-extending its functionality. That's why Android was designed as a robust
-platform for running after-market applications.</p>
-
-<h3>Developers outnumber us all.</h3>
-<p>No device manufacturer can hope to write all the software that a person could
-conceivably need. We need third-party developers to write the apps users want,
-so the Android Open Source Project aims to make it as easy and open as
-possible for developers to build apps.</p>
-
-<h3>Everyone needs a common ecosystem.</h3>
-<p>Every line of code developers write to work around a particular phone's bug
-is a line of code that didn't add a new feature. The more compatible phones
-there are, the more apps there will be. By building a fully compatible Android
-device, you benefit from the huge pool of apps written for Android, while
-increasing the incentive for developers to build more of those apps.</p>
-
-
-<h2>Android compatibility is free, and it's easy.</h2>
-<p>If you are building a mobile device, you can follow these steps to make
-sure your device is compatible with Android. For more details about the
-Android compatibility program in general, see <a
-href="{@docRoot}compatibility/overview.html">the program overview</a>.</p>
-<p>Building a compatible device is a three-step process:</p>
-<ol>
-  <li><b>Obtain the Android software source code</b><p>This is the
-  <a href="{@docRoot}source/index.html">source code for the Android
-  platform</a>, that you port to your hardware.</p></li>
-  <li><b>Comply with Android Compatibility Definition Document (CDD)</b><p>
-  The CDD enumerates the software and hardware requirements of
-  a compatible Android device.</p></li>
-  <li><b>Pass the Compatibility Test Suite (CTS)</b><p>You can use the CTS
-  (included in the Android source code) as an ongoing aid to compatibility
-  during the development process.</p></li>
-</ol>
-
-<h2>Joining the Ecosystem</h2>
-<p>Once you've built a compatible device, you may wish to include Android
-Market to provide your users access to the third-party app ecosystem.
-Unfortunately, for a variety of legal and business reasons, we aren't able to
-automatically license Android Market to all compatible devices. To inquire
-about access about Android Market, you can <a
-href="{@docRoot}compatibility/contact-us.html">contact us</a></p>
diff --git a/pdk/docs/compatibility/ndef-push-protocol.pdf b/pdk/docs/compatibility/ndef-push-protocol.pdf
deleted file mode 100644
index 2300a6b..0000000
--- a/pdk/docs/compatibility/ndef-push-protocol.pdf
+++ /dev/null
@@ -1,471 +0,0 @@
-%PDF-1.4

-%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com

-% 'BasicFonts': class PDFDictionary 

-1 0 obj

-% The standard fonts dictionary

-<< /F1 2 0 R

- /F2 3 0 R

- /F3 13 0 R >>

-endobj

-% 'F1': class PDFType1Font 

-2 0 obj

-% Font Helvetica

-<< /BaseFont /Helvetica

- /Encoding /WinAnsiEncoding

- /Name /F1

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'F2': class PDFType1Font 

-3 0 obj

-% Font Helvetica-Bold

-<< /BaseFont /Helvetica-Bold

- /Encoding /WinAnsiEncoding

- /Name /F2

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Annot.NUMBER1': class LinkAnnotation 

-4 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 14 0 R

- /XYZ

- 55

- 511.3263

- 0 ]

- /Rect [ 70

- 613.115

- 132.5125

- 624.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER2': class LinkAnnotation 

-5 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 14 0 R

- /XYZ

- 55

- 439.0138

- 0 ]

- /Rect [ 70

- 601.865

- 109.5925

- 613.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER3': class LinkAnnotation 

-6 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 14 0 R

- /XYZ

- 55

- 344.0763

- 0 ]

- /Rect [ 70

- 590.615

- 120.0175

- 601.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER4': class LinkAnnotation 

-7 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 14 0 R

- /XYZ

- 55

- 307.7975

- 0 ]

- /Rect [ 85

- 577.365

- 158.365

- 588.615 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER5': class LinkAnnotation 

-8 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 14 0 R

- /XYZ

- 55

- 230.6725

- 0 ]

- /Rect [ 85

- 566.115

- 124.1875

- 577.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER6': class LinkAnnotation 

-9 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 15 0 R

- /XYZ

- 55

- 667.0475

- 0 ]

- /Rect [ 85

- 554.865

- 139.6

- 566.115 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER7': class LinkAnnotation 

-10 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 15 0 R

- /XYZ

- 55

- 518.6725

- 0 ]

- /Rect [ 85

- 543.615

- 144.1975

- 554.865 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER8': class LinkAnnotation 

-11 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 15 0 R

- /XYZ

- 55

- 328.7975

- 0 ]

- /Rect [ 85

- 532.365

- 121.6825

- 543.615 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'Annot.NUMBER9': class LinkAnnotation 

-12 0 obj

-<< /Border [ 0

- 0

- 0 ]

- /Contents ()

- /Dest [ 15 0 R

- /XYZ

- 55

- 219.6725

- 0 ]

- /Rect [ 85

- 521.115

- 118.765

- 532.365 ]

- /Subtype /Link

- /Type /Annot >>

-endobj

-% 'F3': class PDFType1Font 

-13 0 obj

-% Font Times-Roman

-<< /BaseFont /Times-Roman

- /Encoding /WinAnsiEncoding

- /Name /F3

- /Subtype /Type1

- /Type /Font >>

-endobj

-% 'Page1': class PDFPage 

-14 0 obj

-% Page dictionary

-<< /Annots [ 4 0 R

- 5 0 R

- 6 0 R

- 7 0 R

- 8 0 R

- 9 0 R

- 10 0 R

- 11 0 R

- 12 0 R ]

- /Contents 32 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 31 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page2': class PDFPage 

-15 0 obj

-% Page dictionary

-<< /Contents 33 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 31 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'Page3': class PDFPage 

-16 0 obj

-% Page dictionary

-<< /Contents 34 0 R

- /MediaBox [ 0

- 0

- 612

- 792 ]

- /Parent 31 0 R

- /Resources << /Font 1 0 R

- /ProcSet [ /PDF

- /Text

- /ImageB

- /ImageC

- /ImageI ] >>

- /Rotate 0

- /Trans <<  >>

- /Type /Page >>

-endobj

-% 'R17': class PDFCatalog 

-17 0 obj

-% Document Root

-<< /Outlines 19 0 R

- /PageMode /UseNone

- /Pages 31 0 R

- /Type /Catalog >>

-endobj

-% 'R18': class PDFInfo 

-18 0 obj

-<< /Author ()

- /CreationDate (D:20110303200815+08'00')

- /Keywords ()

- /Producer (pisa HTML to PDF <http://www.htmltopdf.org>)

- /Subject ()

- /Title (Android NDEF Push Protocol Specification) >>

-endobj

-% 'R19': class PDFOutlines 

-19 0 obj

-<< /Count 3

- /First 20 0 R

- /Last 20 0 R

- /Type /Outlines >>

-endobj

-% 'Outline.0': class OutlineEntryObject 

-20 0 obj

-<< /Count -4

- /Dest [ 14 0 R

- /Fit ]

- /First 21 0 R

- /Last 24 0 R

- /Parent 19 0 R

- /Title (Android NDEF Push Protocol Specification) >>

-endobj

-% 'Outline.2.0': class OutlineEntryObject 

-21 0 obj

-<< /Dest [ 14 0 R

- /Fit ]

- /Next 22 0 R

- /Parent 20 0 R

- /Title (Table of Contents) >>

-endobj

-% 'Outline.2.1': class OutlineEntryObject 

-22 0 obj

-<< /Dest [ 14 0 R

- /Fit ]

- /Next 23 0 R

- /Parent 20 0 R

- /Prev 21 0 R

- /Title (1. Revision History) >>

-endobj

-% 'Outline.2.2': class OutlineEntryObject 

-23 0 obj

-<< /Dest [ 14 0 R

- /Fit ]

- /Next 24 0 R

- /Parent 20 0 R

- /Prev 22 0 R

- /Title (2. Overview) >>

-endobj

-% 'Outline.2.3': class OutlineEntryObject 

-24 0 obj

-<< /Count -6

- /Dest [ 14 0 R

- /Fit ]

- /First 25 0 R

- /Last 30 0 R

- /Parent 20 0 R

- /Prev 23 0 R

- /Title (3. Data Format) >>

-endobj

-% 'Outline.3.0': class OutlineEntryObject 

-25 0 obj

-<< /Dest [ 14 0 R

- /Fit ]

- /Next 26 0 R

- /Parent 24 0 R

- /Title (3.1. Protocol Versions) >>

-endobj

-% 'Outline.3.1': class OutlineEntryObject 

-26 0 obj

-<< /Dest [ 14 0 R

- /Fit ]

- /Next 27 0 R

- /Parent 24 0 R

- /Prev 25 0 R

- /Title (3.2. Header) >>

-endobj

-% 'Outline.3.2': class OutlineEntryObject 

-27 0 obj

-<< /Dest [ 15 0 R

- /Fit ]

- /Next 28 0 R

- /Parent 24 0 R

- /Prev 26 0 R

- /Title (3.3. NDEF Entry) >>

-endobj

-% 'Outline.3.3': class OutlineEntryObject 

-28 0 obj

-<< /Dest [ 15 0 R

- /Fit ]

- /Next 29 0 R

- /Parent 24 0 R

- /Prev 27 0 R

- /Title (3.4. Action Codes) >>

-endobj

-% 'Outline.3.4': class OutlineEntryObject 

-29 0 obj

-<< /Dest [ 15 0 R

- /Fit ]

- /Next 30 0 R

- /Parent 24 0 R

- /Prev 28 0 R

- /Title (3.5. Server) >>

-endobj

-% 'Outline.3.5': class OutlineEntryObject 

-30 0 obj

-<< /Dest [ 15 0 R

- /Fit ]

- /Parent 24 0 R

- /Prev 29 0 R

- /Title (3.6. Client) >>

-endobj

-% 'R31': class PDFPages 

-31 0 obj

-% page tree

-<< /Count 3

- /Kids [ 14 0 R

- 15 0 R

- 16 0 R ]

- /Type /Pages >>

-endobj

-% 'R32': class PDFStream 

-32 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2055 >>

-stream

-GauHM=]68"&:UO7s3Qg;.k&i9p:fX=c#/ZFPB^$6<I#1b^lu0=]JF%:rr%"5F*fNA!%?htI=,dXC39mb*5@4,^"<=tS&:^g!Q'Ha%1%_L0Y`3tq<?#9qF>)UXok!/Hl$p?ir[Lp5/qtf$d47Akm:N.Kd33a4;[-!&;&jtg*_qFF3,`[hsi:gM,uD2$1hN2pFlC+hu(BY-5^+BX;?h'%ej/BTUp'8(gKgj`<+G;nhsam;6Y`"+"f0S[S'XTMk`+46u2S+<K#c^=NE=T_B-X<\=PWfp-A6sraa/7!aPP'_f"/OSrstKV8Ms%Z5$'@q:[%,X#ND(@,ad4cR^]e3Od9cCHQVV"&4f%@r9oSnYX@C[[?1<J>^V\pgqN`7U2o9T$-H-K'3Eq7q&F71`;;$SN+Xc3-q%8YJ6X"KXCL)KM>b#hLLZo,b\ZQGJ$^Opc)nc?&,shX"lN)l7jZ-lFDi]^DtXYPsD(Jc'dC;LkIcV%)/`iTJuj[OJGa$YCfp[RDN*a>7CMdX*>_b6_Baji.F]L>Xn6QVT4k;q]f>m*k+?l#L=lO/@_ea;%3+$)-'s>7X8_k'LMu&%VJi)Q.T+9ImC3SV?si(qBO[HWYIF;*YNcMRj^bf3\eNth..^4LC#\e9R&s.RJF.9P4TCk)>-kKV2G/hOAS'L?A*#W6Z(s>Ge9VbMeQV!#2Hg!^*0,(gj9IdY6.HQO5R<"iBt0RW=i[lBc[H,YulJ7Ef1j\RnF]]OhU7cb%4rLK5PtPMoH+s$m3(Jh3QgP3kju;2N:q$nAWSD_CVV)6*fnB$UI\4+qD'Ab73k;S23oIip![1Y[fiP^6c\.cl+:daHlr%HPiQ0>XP$PC=\HnJj0O^:\<u#QOh>j.K:'s"'l#a'X_&#E6!@UaZn;C2u.PR7P_VTf$"msST`7ugMH%/h)_B3duWuFU\p3Y51?W48la@r:U]YM[Rd_">b>=O=&J=?@%Y]X-s$"Ein-%uQr"a';P?Oj_1g1=[b<&WhCWTA`rrZr&4uFV%3mPRE1Nje,EutC@ao]Ao8.25?D(tFf(<I0"l&S#FJqJW;r?NR)Lb11YJ8l:g:rnflaVG7I@e]4]Rh7,#t_AS@ZS%D-a.a13X%'qdV):Ej42]W)&u\n@R]ii/dAeY>2h)Laf#W-LQ+n=H)ojMN]*i<:i[X/'ZnHN8lmJp1:)^hrYB7ZM\QA/U=M86SCA&>*Yk!>IM7Aad8#;_[cShi?6h(D`Mn8NU5N!PC^\Q>R6n46DPK0c!*9T$rq\MX\OIAA`4JiUT?R^F`klNYrmTW:[7En%7+KL[M>FGS+[UsL9TER)pG,k:c9$psKDCCV]j=26"<YU%*Lnd8=Qq:TD_J5qmM7;jhA55$fsOE_8njC?U6:)nX\-BfaY.Ts>+4,!#d&q#7`\lURnShSEop.RJ0(cN1C'WaYI!I3"k.XL?p<rL%_k,jVmeXO`3YI$M:<\pDLrEamB`W#km_bX0U+GXffU9,4G(M`K8c-'/>CBiV?%;$&>Uh4f%=8?'MjP<aD]b=80/.Nk*@s<,_^#VA.b59f\7]oI`Y&'2[sFPaK$gY@q^ZR%\AeZ*C-(%F[9k[hNoQ-70*jO,K.>)rs>Gf=OSAtpK/js<3THa:QgDjdIVFdhWBm8-2_KWMs^Ol4sp7\l!,U#qK0lV*@d8UhG_)m-FG2"N)N(DR_">(hpLSioYQ%t^G=cRa#;Yso/;Zum`5%-=c`:#GTP_cRdTO1@9qZ*nT)N.iO`@``]aCdp>9@3YF88@1@g2`OZYk$ibmI7j9b"sD>"'MX6I,to2C<D!MsQ0[iA'Q%Mh'lrai0kYGAH>]M`c8YBh?kCIl+gP3S["MNY5nq=-QG]$RJ70)SJWf%$.@4jfM:>ne)NrJ'6VATqZK2u:/?@'qe*8G<sAgic=cMnG\d'M=dXT!@jSg_4gX,<V*Udir/nPY"k<Q1CeB*+dYWM,&th.'496%?I>T9,tS1%`YeNClRT)9Y'gklb5I*pbb*AX#$nqQE-!oX6%KnJ^kFMG"_KTh`9PM`f#Du'<u^b]s6gL07_N8rrBb=mfr~>endstream

-endobj

-% 'R33': class PDFStream 

-33 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 2836 >>

-stream

-Gb"/*=``=W&q3VVr^/nr[N($W%Vso`5'CQha_'+mXdZ88@7WpUL5/)lp?:CP2o#Nk5`/NDW]\4CC^Fc3)BW.BrYg^t2L[aYG7XlSZ@qt5%QH'l=5ZcR#qS<V_t*2aDt:pt`2=8f?#)XC0o^>]hDo/:27G`hS\iS)2lP9+-CS-tZRIG8E#]7t;*W;b\#)!Y/\eVL>e*)8ngc9k+_UgLrd65'r73c<2Rb8L9W:9PqYnkEa-KA<[=shI4^*EGYe7l-a=dAB;Pq?ti`ML(kuj#Vi7tl);4i%%(R@@uJku+OO2-o@j%KlfdR3oY'Qeob2BI;"=9MAQEsA`*(VY@=P*#PIlk7.d#n);33Eri6JmT19AsqRk!qtN[;m,Kpf:6arLb0#0M?eTj'%bdS"[)\0Nkl*a,4M?DIkT^fX2^hGq\iYQSSJoGr1.5W-IEn"C&EJq6]d$2:pnqm[qV/7cl*0F+ZZrBmUWS)SCJ@Okb#sFs1F.j-i<!egTp(e3Q3utQ9'*1)<-C[+P=.D9*.R).!-XSWfP\_1>d[2<r5bEZ\MPLJI`n;6,pC^>mfc5NnD[=\;C[oVT!u&"jH1G%dh%2r?j0l/hE.9`qXIAp.+U?D,Yd*>Np(^mZ?FKJ.e"3DV6X2gS;+cB6MbfW8>S)8[ClfotErP@>Be)VSs5i*UD+!j\+X6g;\?\7UeeVF$tA`8l2.^#E_d#$ETu&3Qe>/CAeCDp41tuqDbY3cjjTG]sUAqD7W6gm70=fLp_L4P-GO.)`&n)p3mmAmF%n?Yn,p'SLQ_gK0AM8bH14>B&t-E2.I+RYt[fFT$fWb4e9f7D@Y^&D9Wl<'e!_Gc+JjsDAbA*=Qrt[<<pSCYfKT53E)pQHn"6^EQg,%aB:o^3Ju6$SucK[hCq14A1:&Z-<0E+KmRVLrYdk)GeO4@#Fi"jSmM:<QK-'t^*j\RT*MQHMAo0G3[q\++4XFSUg6=h[a3X*eD]a0h:IGHW3"tEL->Ho#q(#7s!Yu/OT\G)b670/qfcX^DX4*DeF%URJW>a9,7T"U)p9100ICs>(k%0/MZ_[1A9:iF2jAJ6E`!9]OGl#)n/Cqn#hIlLq7V;Uo(\&DZHbD(]M*%Q'W^FD[nAi;P*3`7?@q-<TMWHJatl_o[lBVlpr@V+FW(1()7t"?c:gK!0onGIp)?Dk0gCt/P.#eWAre:#o,E"NE_5r8Q"N#oosE3kXX0c5F;L1\TO&j!jtVY@Z(-S)n3QYZ<3:M+M=Hlf;$K3dUINZ-`gLL^-\?b-qbTD7S#`mJ7*`uImP2-!0n?mu+h=nVHV?#6*83T9,[:!8NN;0$6eeNF%n1o:!QUca'klT!8=Q^Il5<T[*J_1H/s7ctH:HFo6U:'>9%%9`n&S[O#gg8"HP+du)DLRC;R*^YW5i4sF=['._J@Z'(H`,S>4LYZOI_:$6AKQ6<]2r>>c4SsKE`2c-4BPL`KH).TGN7(#*\;qOK3P(90+lZ`NW&/DO4ocacVuf![9'c`CJWM7GXBECq-R1pk^t$>2\H0:J5.^gFNf<8JP"q$@!%"5K"V/!2_k%XKjYe+1Alpr0]k=Y:]M[c<alN,cn`;g8bPi9rHa!r(QZ<[*>M%)(?7^V+!G!NA45uAO5R`CBCBteV4Rk+Eqk:%=6gk]8SV6,/A:4#-kpuOKCK>bV8,-k!qI?6=HrD#1#\dJ?Y':K_FHn+0GK8_YTiTfu%QkTt7=F(YPXcE":qrBf607DrG"4n6;^ZWEbUH*;I#M)&"QJ7M*YY<bc-#fcqj2`F45QX<e!`]T&!a,3GL^K@H*Al[!6-jtp<cK\BQ,#.(EVLc>a"&MSMGN2+RYj/Or6'\Tiq3Mt)&hRfE9^/M(rkI9fQ*ZM''OJUng@,^i[:=:fdLK0Nj>-]#jN)^t@UW;&to$dicH/Dp#W/e6jME3FY\nE7dN;2:=&a@dAgK-!>:!,#7E^1fq`n\0Xf:jT]I5U\9lI8t)8`%6l-RJ4AVS?C@0Zb9W$BpYM%+3TPs5l&UEe4=kDJe3Cr?rog-mSX<,@%=/i7[f%rcq-C;gJk3(rP9:hjmN'ff&E3:4(Wql;BfU6+3dE.V!6HEdYoK_4jq(j@P.4$kbd:`,%!#6<VGu/(ned/].E9j<@,lQ2`-SVH#h0nPfq10=poI3D8s#80\LkhklX%"cP[0\6gOugRZt2H!6rJNfZgaH->1kl'(L,&IY*#edm?h$`,^0M=D?_/8juSL<5>o,hFTJQ,tPlqGp`nrE#/rW&YTrK+4]JP411U`DB'rq2$LHHJ'u08`V+U0BI:>:ZI?9[9*N^.ORcNKIJbukD3"jL5`aIGFE08`l8\6Fn'P&fH\A@j_@+HpF/&!f<P>jRF&B]L5HVkegj@qiJU>VcAf3LJmoLD#2E^sc)E[uiDl_Q=-X_K9SmM"DI6L=\dln/]7dUVC"?u&mtS1</eEME(>ML2L>+SV?`moa5P)6"9]R$?\Cea,_s%N;!'WR&]t8dhXR5#TW`rLMP[]i`B?9;)Y8DJuP`r@>`eBLh5%R#YBFbMQSl'IJ5Hi"t5Crk$o8'--](X`TN-LB,nRdOe39a8.+.:TN=qGcj?C`*<NcI7faLim8*sOooGGc"M+Sk!6*IbZLi%LBHYO@DK_h#X#eF-qOL5c#0a?6^O'U*V:90K"O5P'GG8q-u7C(I>G)jVkp4iP'(q/@N%)%<]?&SR2Q&]D=`78+cqKf^FXRQld<pd)su`\Q!81I\?UI0Rg/KBj/?4MZ^e7LP(`\?/_7a(Vnno^Um384A!Y$qMXLA.p_mi-@d(k*aC+LhbEjbNQ\i"E_MRkaJK\Qsi`400b[["mQSrcBQI^WWu^Pqr[o_[4AE~>endstream

-endobj

-% 'R34': class PDFStream 

-34 0 obj

-% page stream

-<< /Filter [ /ASCII85Decode

- /FlateDecode ]

- /Length 266 >>

-stream

-Gau0;_+qm%%)#a-5J/3`&aHH#G+QWIgL7sH5Y4+>e0V3@5l5oV^l[Ki%GA%gp[%Wj6C!.CFU)<r\6BP9K6Ntle_i=Q\L`b$l"f)(crsS9G(/A&>In4b<\r/.mq%V\l.a:Z`S>tS+B"%kqNI[SB!SLY%*uGP?%ZM"2q`VKo6=uX^Q5Y2rnhL905u=e5%=-Y^^.Y=@hdgpENolm0!mAXm[K#E&@Ab/]X6mM_?@&0Lr"cdD_d:#ph<F_dlEVa]'>?+;&16&d9s?~>endstream

-endobj

-xref

-0 35

-0000000000 65535 f

-0000000113 00000 n

-0000000234 00000 n

-0000000399 00000 n

-0000000587 00000 n

-0000000814 00000 n

-0000001041 00000 n

-0000001268 00000 n

-0000001494 00000 n

-0000001721 00000 n

-0000001945 00000 n

-0000002173 00000 n

-0000002401 00000 n

-0000002615 00000 n

-0000002783 00000 n

-0000003140 00000 n

-0000003410 00000 n

-0000003681 00000 n

-0000003819 00000 n

-0000004065 00000 n

-0000004190 00000 n

-0000004395 00000 n

-0000004549 00000 n

-0000004720 00000 n

-0000004883 00000 n

-0000005077 00000 n

-0000005236 00000 n

-0000005399 00000 n

-0000005566 00000 n

-0000005735 00000 n

-0000005898 00000 n

-0000006028 00000 n

-0000006154 00000 n

-0000008352 00000 n

-0000011331 00000 n

-trailer

-<< /ID 

- % ReportLab generated PDF document -- digest (http://www.reportlab.com) 

- [(L\026\316.\265\347\223\365\204y\010\361\341\344\330\360) (L\026\316.\265\347\223\365\204y\010\361\341\344\330\360)] 

-

- /Info 18 0 R

- /Root 17 0 R

- /Size 35 >>

-startxref

-11712

-%%EOF

diff --git a/pdk/docs/compatibility/overview.jd b/pdk/docs/compatibility/overview.jd
deleted file mode 100644
index 31a4832..0000000
--- a/pdk/docs/compatibility/overview.jd
+++ /dev/null
@@ -1,91 +0,0 @@
-page.title=Compatibility Program Overview
-doc.type=compatibility
-@jd:body
-<p>The Android compatibility program makes it easy for mobile device
-manufacturers to develop compatible Android devices.</p>
-<h3>Program goals</h3>
-<p>The Android compatibility program works for the benefit of the entire
-Android community, including users, developers, and device manufacturers.</p>
-<p>Each group depends on the others. Users want a wide selection of devices
-and great apps; great apps come from developers motivated by a large market
-for their apps with many devices in users' hands; device manufacturers rely
-on a wide variety of great apps to increase their products' value for
-consumers.</p>
-<p>Our goals were designed to benefit each of these groups:</p>
-<ul>
-<li><b>Provide a consistent application and hardware environment to application
-developers.</b><p>Without a strong compatibility standard, devices can vary so
-greatly that developers must design different versions of their applications
-for different devices. The compatibility program provides a precise definition
-of what developers can expect from a compatible device in terms of APIs and
-capabilities. Developers can use this information to make good design
-decisions, and be confident that their apps will run well on any compatible
-device.</p></li>
-<li><b>Enable a consistent application experience for consumers.</b><p>If an
-application runs well on one compatible Android device, it should run well on
-any other device that is compatible with the same Android platform version.
-Android devices will differ in hardware and software capabilities, so the
-compatibility program also provides the tools needed for distribution systems
-such as Android Market to implement appropriate filtering. This means that
-users can only see applications which they can actually run.</p></li>
-<li><b>Enable device manufacturers to differentiate while being
-compatible.</b><p>The Android compatibility program focuses on the aspects of
-Android relevant to running third-party applications, which allows device
-manufacturers the flexibility to create unique devices that are nonetheless
-compatible.</p></li>
-<li><b>Minimize costs and overhead associated with
-compatibility.</b><p>Ensuring compatibility should be easy and inexpensive to
-device manufacturers. The testing tool (CTS) is free, open source, and
-available for <a href="{@docRoot}compatibility/downloads.html">download</a>. 
-CTS is designed to be used for continuous self-testing
-during the device development process to eliminate the cost of changing your
-workflow or sending your device to a third party for testing. Meanwhile, there
-are no required certifications, and thus no corresponding costs and
-fees.</p></li>
-</ul>
-<p>The Android compatibility program consists of three key components:</p>
-<ul>
-<li>The source code to the Android software stack</li>
-<li>The Compatilbility Definition Document, representing the "policy"
-aspect of compatibility</li>
-<li>The Compatilbility Test Suite, representing the "mechanism" of compatibility</li>
-</ul>
-<p>Just as each version of the Android platform exists in a separate branch in
-the source code tree, there is a separate CTS and CDD for each version as
-well. The CDD, CTS, and source code are -- along with your hardware and your
-software customizations -- everything you need to create a compatible device.</p>
-
-<h3>Compatibility Definition Document (CDD)</h3>
-<p>For each release of the Android platform, a detailed Compatibility
-Definition Document (CDD) will be provided. The CDD represents the "policy"
-aspect of Android compatibility.</p>
-<p>No test suite, including CTS, can truly be comprehensive. For instance, the
-CTS includes a test that checks for the presence and correct behavior of
-OpenGL graphics APIs, but no software test can verify that the graphics
-actually appear correctly on the screen. More generally, it's impossible to
-test the presence of hardware features such as keyboards, display density,
-WiFi, and Bluetooth.</p>
-<p>The CDD's role is to codify and clarify specific requirements, and
-eliminate ambiguity.  The CDD does not attempt to be comprehensive. Since
-Android is a single corpus of open-source code, the code itself is the
-comprehensive "specification" of the platform and its APIs. The CDD acts as a
-"hub", referencing other content (such as SDK API documentation) that provides
-a framework in which the Android source code may be used so that the end
-result is a compatible system.</p>
-<p>If you want to build a device compatible with a given Android version,
-start by checking out the source code for that version, and then read the
-corresponding CDD and stay within its guidelines. For additional details,
-simply examine <a href="">the latest CDD</a>.</p>
-
-<h3>Compatibility Test Suite (CTS)</h3>
-<p>The CTS is a free, commercial-grade test suite, available for
-<a href="{@docRoot}compatibility/downloads.html">download</a>.
-The CTS represents the "mechanism" of compatibility.</p>
-<p>The CTS runs on a desktop machine and executes test cases directly on
-attached devices or an emulator. The CTS is a set of unit tests designed to be
-integrated into the daily workflow (such as via a continuous build system) of
-the engineers building a device. Its intent is to reveal incompatibilities
-early on, and ensure that the software remains compatible throughout the
-development process.</p>
-<p>For details on the CTS, consult the <a
-href="{@docRoot}compatibility/cts-intro.html">CTS introduction</a>.</p>
diff --git a/pdk/docs/faqs.jd b/pdk/docs/faqs.jd
deleted file mode 100644
index 00db026..0000000
--- a/pdk/docs/faqs.jd
+++ /dev/null
@@ -1,325 +0,0 @@
-page.title=Frequently Asked Questions
-doc.hidenav=true
-@jd:body
-<a name="aosp"></a><h2>Open Source</h2>
-<h3>What is the Android Open Source Project?</h3>
-<p>We use the phrase "Android Open Source Project" or "AOSP" to refer to the
-  people, the processes, and the source code that make up Android.</p>
-<p>The people oversee the project and develop the actual source code. The
-  processes refer to the tools and procedures we use to manage the development
-  of the software. The net result is the source code that you can use to build
-  cell phone and other devices.</p>
-
-<h3>Why did we open the Android source code?</h3>
-<p>Google started the Android project in response to our own experiences
-launching mobile apps. We wanted to make sure that there would always be an
-open platform available for carriers, OEMs, and developers to use to make
-their innovative ideas a reality. We also wanted to make sure that there was no
-central point of failure, so that no single industry player could restrict or control
-the innovations of any other.  The single most important goal of the Android
-Open-Source Project (AOSP) is to make sure that the open-source Android
-software is implemented as widely and compatibly as possible, to everyone's
-benefit.</p>
-<p>You can find more information on this topic at our Project Philosophy page.</p>
-
-<h3>What kind of open-source project is Android?</h3>
-<p>Google oversees the development of the core Android open-source platform,
-  and works to create robust developer and user communities. For the most part
-  the Android source code is licensed under the permissive Apache Software
-  License 2.0, rather than a "copyleft" license. The main reason for this is
-  because our most important goal is widespread adoption of the software, and
-  we believe that the ASL2.0 license best achieves that goal.</p>
-<p>You can find more information on this topic at our Project Philosophy and
-  Licensing pages. </p>
-
-<h3>Why is Google in charge of Android?</h3>
-<p>Launching a software platform is complex. Openness is vital to the
-  long-term success of a platform, since openness is required to attract
-  investment from developers and ensure a level playing field. However, the
-  platform itself must also be a compelling product to end users.</p>
-<p>That's why Google has committed the professional engineering resources
-  necessary to ensure that Android is a fully competitive software platform.
-  Google treats the Android project as a full-scale product development
-  operation, and strikes the business deals necessary to make sure that great
-  devices running Android actually make it to market.</p>
-<p>By making sure that Android is a success with end users, we help ensure the
-  vitality of Android as a platform, and as an open-source project. After all,
-  who wants the source code to an unsuccessful product?</p>
-<p>Google's goal is to ensure a successful ecosystem around Android, but no
-  one is required to participate, of course. We opened the Android source code
-  so anyone can modify and distribute the software to meet their own needs.</p>
-
-<h3>What is Google's overall strategy for Android product development?</h3>
-<p>We focus on releasing great devices into a competitive marketplace, and
-  then incorporate the innovations and enhancements we made into the core
-  platform, as the next version.</p>
-<p>In practice, this means that the Android engineering team typically focuses
-  on a small number of "flagship" devices, and develops the next version of
-  the Android software to support those product launches. These flagship
-  devices absorb much of the product risk and blaze a trail for the broad OEM
-  community, who follow up with many more devices that take advantage of the
-  new features. In this way, we make sure that the Android platform evolves
-  according to the actual needs of real-world devices.</p>
-
-<h3>How is the Android software developed?</h3>
-<p>Each platform version of Android (such as 1.5, 1.6, and so on) has a
-  corresponding branch in the open-source tree. At any given moment, the most
-  recent such branch will be considered the "current stable" branch version.
-  This current stable branch is the one that manufacturers port to their
-  devices. This branch is kept suitable for release at all times.</p>
-<p>Simultaneously, there is also a "current experimental" branch, which is
-  where speculative contributions, such as large next-generation features, are
-  developed. Bug fixes and other contributions can be included in the current
-  stable branch from the experimental branch as appropriate.</p>
-<p>Finally, Google works on the next version of the Android platform in tandem
-  with developing a flagship device. This branch pulls in changes from the
-  experimental and stable branches as appropriate.</p>
-<p>You can find more information on this topic at our <a
-href="{@docRoot}source/code-lines.html">Branches and Releases</a> page.</p>
-
-<h3>Why are parts of Android developed in private?</h3>
-<p>It typically takes over a year to bring a device to market, but of course
-  device manufacturers want to ship the latest software they can. Developers,
-  meanwhile, don't want to have to constantly track new versions of the
-  platform when writing apps. Both groups experience a tension between
-  shipping products, and not wanting to fall behind.</p>
-<p>To address this, some parts of the next version of Android including the
-  core platform APIs are developed in a private branch. These APIs constitute
-  the next version of Android. Our aim is to focus attention on the current
-  stable version of the Android source code, while we create the next version
-  of the platform as driven by flagship Android devices. This allows developers
-  and OEMs to focus on a single version without having to track unfinished
-  future work just to keep up. Other parts of the Android system that aren't
-  related to application compatibility are developed in the open, however.
-  It's our intention to move more of these parts to open development over
-  time.</p>
-
-<h3>When are source code releases made?</h3>
-<p>When they are ready. Some parts of Android are developed in the open,
-  so that source code is always available. Other parts are developed first in
-  a private tree, and that source code is released when the next platform
-  version is ready.</p>
-<p>In some releases, core platform APIs will be ready far enough in advance
-  that we can push the source code out for an early look in advance of the
-  device's release; however in others, this isn't possible. In all cases, we
-  release the platform source when we feel the version has stabilized enough,
-  and when the development process permits. Releasing the source code is a
-  fairly complex process.</p>
-
-<h3>What is involved in releasing the source code for a new Android version?</h3>
-<p>Releasing the source code for a new version of the Android platform is a
-  significant process. First, the software gets built into a system image for
-  a device, and put through various forms of certification, including
-  government regulatory certification for the regions the phones will be
-  deployed. It also goes through operator testing. This is an important phase
-  of the process, since it helps shake out a lot of software bugs.</p>
-<p>Once the release is approved by the regulators and operators, the
-  manufacturer begins mass producing devices, and we turn to releasing the
-  source code.</p>
-<p>Simultaneous to mass production the Google team kicks off several efforts
-  to prepare the open source release. These efforts include final API changes
-  and documentation (to reflect any changes that were made during
-  qualification testing, for example), preparing an SDK for the new version,
-  and launching the platform compatibility information.</p>
-<p>Also included is a final legal sign-off to release the code into open
-  source. Just as open source contributors are required to sign a Contributors
-  License Agreement attesting to their IP ownership of their contribution,
-  Google too must verify that it is clear to make contributions.</p>
-<p>Starting at the time mass production begins, the software release process
-  usually takes around a month, which often roughly places source code
-  releases around the same time that the devices reach users.</p>
-
-<h3>How does the AOSP relate to the Android Compatibility Program?</h3>
-<p>The Android Open-Source Project maintains the Android software, and
-  develops new versions. Since it's open-source, this software can be used for
-  any purpose, including to ship devices that are not compatible with other
-  devices based on the same source.</p>
-<p>The function of the Android Compatibility Program is to define a baseline
-  implementation of Android that is compatible with third-party apps written
-  by developers. Devices that are "Android compatible" may participate in the
-  Android ecosystem, including Android Market; devices that don't meet the
-  compatibility requirements exist outside that ecosystem.</p>
-<p>In other words, the Android Compatibility Program is how we separate
-  "Android compatible devices" from devices that merely run derivatives of the
-  source code. We welcome all uses of the Android source code, but only
-  Android compatible devices -- as defined and tested by the Android
-  Compatibility Program -- may participate in the Android ecosystem.</p>
-
-<h3>How can I contribute to Android?</h3>
-<p>There are a number of ways you can contribute to Android. You can report
-  bugs, write apps for Android, or contribute source code to the Android
-  Open-Source Project.</p>
-<p>There are some limits on the kinds of code contributions we are willing or
-  able to accept. For instance, someone might want to contribute an
-  alternative application API, such as a full C++-based environment. We would
-  decline that contribution, since Android is focused on applications that run
-  in the Dalvik VM. Alternatively, we won't accept contributions such as GPL
-  or LGPL libraries that are incompatible with our licensing goals.</p>
-<p>We encourage those interested in contributing source code to contact us via
-  the AOSP Community page prior to beginning any work. You can find more
-  information on this topic at the Getting Involved page.</p>
-
-<h3>How do I become an Android committer?</h3>
-<p>The Android Open Source Project doesn't really have a notion of a
-  "committer". All contributions -- including those authored by Google
-  employees -- go through a web-based system known as "gerrit" that's part of
-  the Android engineering process. This system works in tandem with the git
-  source code management system to cleanly manage source code
-  contributions.</p>
-<p>Once submitted, changes need to be accepted by a designated Approver.
-  Approvers are typically Google employees, but the same approvers are
-  responsible for all submissions, regardless of origin.</p>
-<p>You can find more information on this topic at the <a
-   href="{@docRoot}source/submit-patches.html">Submitting Patches</a>
-   page.</p>
-
-<a name="compatibility"></a><h2>Compatibility</h2>
-<h3>What does "compatibility" mean?</h3>
-<p>We define an "Android compatible" device as one that can run any
-  application written by third-party developers using the Android SDK and NDK.
-  We use this as a filter to separate devices that can participate in the
-  Android app ecosystem, and those that cannot. Devices that are properly
-  compatible can seek approval to use the Android trademark. Devices that are
-  not compatible are merely derived from the Android source code and may not
-  use the Android trademark.</p>
-<p>In other words, compatibility is a prerequisite to participate in the
-  Android apps ecosystem. Anyone is welcome to use the Android source code,
-  but if the device isn't compatible, it's not considered part of the Android
-  ecosystem.</p>
-
-<h3>What is the role of Android Market in compatibility?</h3>
-<p>Devices that are Android compatible may seek to license the Android Market
-  client software. This allows them to become part of the Android app
-  ecosystem, by allowing users to download developers' apps from a catalog
-  shared by all compatible devices. This option isn't available to devices
-  that aren't compatible.</p>
-
-<h3>What kinds of devices can be Android compatible?</h3>
-<p>The Android software can be ported to a lot of different kinds of devices,
-  including some on which third-party apps won't run properly. The Android
-  Compatibility Definition Document (CDD) spells out the specific device
-  configurations that will be considered compatible.</p>
-<p>For example, though the Android source code could be ported to run on a
-  phone that doesn't have a camera, the CDD requires that in order to be
-  compatible, all phones must have a camera. This allows developers to rely
-  on a consistent set of capabilities when writing their apps.</p>
-<p>The CDD will evolve over time to reflect market realities. For instance,
-  the 1.6 CDD only allows cell phones, but the 2.1 CDD allows devices to omit
-  telephony hardware, allowing for non-phone devices such as tablet-style
-  music players to be compatible. As we make these changes, we will also
-  augment Android Market to allow developers to retain control over where
-  their apps are available. To continue the telephony example, an app that
-  manages SMS text messages would not be useful on a media player, so Android
-  Market allows the developer to restrict that app exclusively to phone
-  devices.</p>
-
-<h3>If my device is compatible, does it automatically have access to Android Market and branding?</h3>
-<p>Android Market is a service operated by Google. Achieving compatibility is
-   a prerequisite for obtaining access to the Android Market software and branding.
-   Device manufacturers should contact Google to obtain access to Android
-   Market.</p>
-
-<h3>If I am not a manufacturer, how can I get Android Market?</h3>
-<p>Android Market is only licensed to handset manufacturers shipping devices.
-  For questions about specific cases, contact
-  android-partnerships@google.com.</p>
-
-<h3>How can I get access to the Google apps for Android, such as Maps?</h3>
-<p>The Google apps for Android, such as YouTube, Google Maps and Navigation,
-  Gmail, and so on are Google properties that are not part of Android, and
-  are licensed separately.  Contact android-partnerships@google.com for
-  inquiries related to those apps.</p>
-
-<h3>Is compatibility mandatory?</h3>
-<p>No. The Android Compatibility Program is optional. Since the Android source
-  code is open, anyone can use it to build any kind of device. However, if a
-  manufacturer wishes to use the Android name with their product, or wants
-  access to Android Market, they must first demonstrate that the device is
-  compatible.</p>
-
-<h3>How much does compatibility certification cost?</h3>
-<p>There is no cost to obtain Android compatibility for a device. The
-  Compatibility Test Suite is open-source and available to anyone to use to
-  test a device.</p>
-
-<h3>How long does compatibility take?</h3>
-<p>The process is automated. The Compatibility Test Suite generates a report
-  that can be provided to Google to verify compatibility. Eventually we intend
-  to provide self-service tools to upload these reports to a public database.</p>
-
-<h3>Who determines what will be part of the compatibility definition?</h3>
-<p>Since Google is responsible for the overall direction of Android as a
-  platform and product, Google maintains the Compatibility Definition Document
-  for each release. We draft the CDD for a new Android version in consultation
-  with a number of OEMs, who provide input on its contents.</p>
-
-<h3>How long will each Android version be supported for new devices?</h3>
-<p>Since Android's code is open-source, we can't prevent someone from using an
-  old version to launch a device. Instead, Google chooses not to license the
-  Android Market client software for use on versions that are considered
-  obsolete. This allows anyone to continue to ship old versions of Android,
-  but those devices won't use the Android name and will exist outside the
-  Android apps ecosystem, just as if they were non-compatible.</p>
-
-<h3>Can a device have a different user interface and still be compatible?</h3>
-<p>The Android Compatibility Program focuses on whether a device can run
-  third-party applications. The user interface components shipped with a
-  device (such as home screen, dialer, color scheme, and so on) does not
-  generally have much effect on third-party apps. As such, device builders are
-  free to customize the user interface as much as they like. The Compatibility
-  Definition Document does restrict the degree to which OEMs may alter the
-  system user interface for areas that do impact third-party apps.</p>
-
-<h3>When are compatibility definitions released for new Android versions?</h3>
-<p>Our goal is to release new versions of Android Compatibility Definition
-  Documents (CDDs) once the corresponding Android platform version has
-  converged enough to permit it. While we can't release a final draft of a CDD
-  for an Android software version before the first flagship device ships with
-  that software, final CDDs will always be released after the first device.
-  However, wherever practical we will make draft versions of CDDs available.</p>
-
-<h3>How are device manufacturers' compatibility claims validated?</h3>
-<p>There is no validation process for Android device compatibility. However,
-  if the device is to include Android Market, Google will typically validate
-  the device for compatibility before agreeing to license the Market client
-  software.</p>
-
-<h3>What happens if a device that claims compatibility is later found to have compatibility problems?</h3>
-<p>Typically, Google's relationships with Android Market licensees allow us to
-  ask them to release updated system images that fix the problems.</p>
-
-<a name="cts"></a><h2>Compatibility Test Suite</h2>
-<h3>What is the purpose of the CTS?</h3>
-<p>The Compatibility Test Suite is a tool used by device manufacturers to help
-  ensure their devices are compatible, and to report test results for
-  validations. The CTS is intended to be run frequently by OEMs throughout the
-  engineering process to catch compatibility issues early.</p>
-
-<h3>What kinds of things does the CTS test?</h3>
-<p>The CTS currently tests that all of the supported Android strong-typed APIs
-  are present and behave correctly. It also tests other non-API system
-  behaviors such as application lifecycle and performance. We plan to add
-  support in future CTS versions to test "soft" APIs such as Intents as
-  well.</p>
-
-<h3>Will the CTS reports be made public?</h3>
-<p>Yes. While not currently implemented, Google intends to provide web-based
-  self-service tools for OEMs to publish CTS reports so that they can be
-  viewed by anyone. CTS reports can be shared as widely as manufacturers
-  prefer.</p>
-
-<h3>How is the CTS licensed?</h3>
-<p>The CTS is licensed under the same Apache Software License 2.0 that the
-  bulk of Android uses.</p>
-
-<h3>Does the CTS accept contributions?</h3>
-<p>Yes please! The Android Open-Source Project accepts contributions to
-  improve the CTS in the same way as for any other component. In fact,
-  improving the coverage and quality of the CTS test cases is one of the best
-  ways to help out Android.</p>
-
-<h3>Can anyone use the CTS on existing devices?</h3>
-<p>The Compatibility Definition Document requires that compatible devices
-  implement the 'adb' debugging utility. This means that any compatible device
-  -- including ones available at retail -- must be able to run the CTS
-  tests.</p>
diff --git a/pdk/docs/images/bluetooth-0.jpg b/pdk/docs/images/bluetooth-0.jpg
deleted file mode 100644
index f06eebf..0000000
--- a/pdk/docs/images/bluetooth-0.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/code-lines.png b/pdk/docs/images/code-lines.png
deleted file mode 100644
index f86260c..0000000
--- a/pdk/docs/images/code-lines.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/cts-0.png b/pdk/docs/images/cts-0.png
deleted file mode 100644
index cca38c5..0000000
--- a/pdk/docs/images/cts-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/cts-process-0.gif b/pdk/docs/images/cts-process-0.gif
deleted file mode 100644
index 565da23..0000000
--- a/pdk/docs/images/cts-process-0.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/cts-process-1.png b/pdk/docs/images/cts-process-1.png
deleted file mode 100644
index 2656433..0000000
--- a/pdk/docs/images/cts-process-1.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/discuss-0.png b/pdk/docs/images/discuss-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/pdk/docs/images/discuss-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/documentation-0.png b/pdk/docs/images/documentation-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/pdk/docs/images/documentation-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/download-0.png b/pdk/docs/images/download-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/pdk/docs/images/download-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/git-repo-0.png b/pdk/docs/images/git-repo-0.png
deleted file mode 100644
index e2cea10..0000000
--- a/pdk/docs/images/git-repo-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/git-repo-1.png b/pdk/docs/images/git-repo-1.png
deleted file mode 100644
index 6bc8dcb..0000000
--- a/pdk/docs/images/git-repo-1.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/home-bugdroid.png b/pdk/docs/images/home-bugdroid.png
deleted file mode 100644
index c30fac9..0000000
--- a/pdk/docs/images/home-bugdroid.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/how-it-works-0.png b/pdk/docs/images/how-it-works-0.png
deleted file mode 100644
index 3c1c9dc..0000000
--- a/pdk/docs/images/how-it-works-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/how-it-works-1.png b/pdk/docs/images/how-it-works-1.png
deleted file mode 100644
index 856674a..0000000
--- a/pdk/docs/images/how-it-works-1.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/lil-wrench.png b/pdk/docs/images/lil-wrench.png
deleted file mode 100644
index 74b4972..0000000
--- a/pdk/docs/images/lil-wrench.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/submit-patches-0.png b/pdk/docs/images/submit-patches-0.png
deleted file mode 100644
index ca7eaad..0000000
--- a/pdk/docs/images/submit-patches-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/submit-patches-1.png b/pdk/docs/images/submit-patches-1.png
deleted file mode 100644
index 777a3c3..0000000
--- a/pdk/docs/images/submit-patches-1.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/images/workflow-0.png b/pdk/docs/images/workflow-0.png
deleted file mode 100644
index d8456b5..0000000
--- a/pdk/docs/images/workflow-0.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/index.jd b/pdk/docs/index.jd
deleted file mode 100644
index f5a9344..0000000
--- a/pdk/docs/index.jd
+++ /dev/null
@@ -1,73 +0,0 @@
-page.title=Welcome to Android
-home=true
-@jd:body
-<div style="float: right; width: 35%;">
-<h3 style="padding-top: 0px;">News</h3>
-<p><b>Compatibility Definition for Android 2.3.3</b><br/>
-The Compatibility Definition Document for Android 2.3.3 has been published. 
-Android 2.3 allows device manufacturers to use the Android source code to ship
-a significantly wider variety of devices, including devices with extra-large
-screens, such as tablets. Android 2.3.3 adds enhanced Near-Field
-Communications support to the Android APIs.  For more information, <a
-href="{@docRoot}compatibility/index.html">visit the Compatibility page.</a>
-</p>
-<p><b>Source Code Available for Android 2.3</b><br/>
-The source code for the Android 2.3 platform and software stack has been
-released! This release allows OEMs to begin preparing Android 2.3 for
-installation on new and existing devices, and allows hobbyists, enthusiasts,
-and researchers to develop custom builds. For information on how to obtain the
-software, 
-<a href="{@docRoot}source/download.html">visit our 'Getting the Source' page.</a>
-</p>
-</div>
-<img style="float: right; padding-right: 1.5em;" src="{@docRoot}images/home-bugdroid.png" alt="Android Mascot"/>
-<div style="font-size: 1.3em;">
-  <p>Here you can find the information and source code you need to build an
-  Android-compatible device.</p>
-  <p>Android is an open-source software stack for mobile devices, and a
-  corresponding open-source project led by Google. We created Android in
-  response to our own experiences launching mobile apps. We wanted to make
-  sure that there was no central point of failure, so that no industry player
-  can restrict or control the innovations of any other.  That's why we
-  created Android, and made its source code open.</p>
-  <p><a href="{@docRoot}about/index.html">Learn more &raquo;</a></p>
-</div>
-
-<div style="clear: both;"/>
-
-<table border="0" style="border: 0px; margin: 0px; padding: 0px;"><tr><td align="center" style="border: 0px; margin: 0px; padding: 0px;">
-<div class="rebox lil" style="float: left; width: 30%; margin: 1em;"> 
-  <h2 style="color: white; background-color: #95C0D0; border: 0px;">Source</h2> 
-  <div class="p"> 
-    <p><img src="images/lil-wrench.png" alt="" style="margin: 1em; margin-bottom: 5em;"/>
-    If you're interested in contributing to the Android source code or helping
-    out with the open-source project, our Source pages have the information
-    you need.</p> 
-    <p><a href="{@docRoot}source/index.html">Get Involved &raquo;</a></p> 
-  </div> 
-</div> 
-
-<div class="rebox lil" style="float: left; width: 30%; margin: 1em;"> 
-  <h2 style="color: white; background-color: #95C0D0; border: 0px;">Porting</h2> 
-  <div class="p"> 
-    <p><img src="images/lil-wrench.png" alt="" style="margin: 1em; margin-bottom: 5em;"/>
-    If you're an engineer building a device
-    intended to run the Android software stack, look at our Porting pages for
-    information and tips.</p> 
-    <p><a href="{@docRoot}porting/index.html">Build a Device &raquo;</a></p> 
-  </div> 
-</div> 
-
-<div class="rebox lil" style="float: left; width: 30%; margin: 1em;"> 
-  <h2 style="color: white; background-color: #95C0D0; border: 0px;">Compatibility</h2> 
-  <div class="p"> 
-    <p><img src="images/lil-wrench.png" alt="" style="margin: 1em; margin-bottom: 5em;"/>
-    If you're an organization building an Android device, you'll want to check out our
-    Compatibility pages to find out how to take advantage of the benefits of
-    compatibility.</p> 
-    <p><a href="{@docRoot}compatibility/index.html">Get Compatible &raquo;</a></p> 
-  </div> 
-</div> 
-</td></tr></table>
-
-<div style="clear: both;"/>
diff --git a/pdk/docs/porting/audio.jd b/pdk/docs/porting/audio.jd
deleted file mode 100755
index e82788f..0000000
--- a/pdk/docs/porting/audio.jd
+++ /dev/null
@@ -1,61 +0,0 @@
-page.title=Audio
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidAudioBuildingDriver">Building an Audio Library</a></li>
-<li><a href="#androidAudioInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>AudioHardwareInterface serves as the glue between proprietary audio drivers and the Android AudioFlinger service, the core audio service that handles all audio-related requests from applications.</p>
-<p><img src="images/android_audio_architecture.gif"></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-
-
-<a name="androidAudioBuildingDriver"></a><h3>Building an Audio Library</h3>
-
-<p>To implement an audio driver, create a shared library that implements the interface defined in <code>AudioHardwareInterface.h</code>. You must name your shared library <code>libaudio.so</code> so that it will get loaded from <code>/system/lib</code> at runtime.  Place libaudio sources and <code>Android.mk</code> in <code>vendor/acme/chipset_or_board/libaudio/</code>.</p>
-<p>The following stub <code>Android.mk</code> file ensures that <code>libaudio</code> compiles and links to the appropriate libraries:</p>
-
-<pre class="prettify">
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libaudio
-
-LOCAL_SHARED_LIBRARIES := \
-    libcutils \
-    libutils \
-    libmedia \
-    libhardware
-
-LOCAL_SRC_FILES += MyAudioHardware.cpp
-
-LOCAL_CFLAGS +=
-
-LOCAL_C_INCLUDES +=
-
-LOCAL_STATIC_LIBRARIES += libaudiointerface
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
-
-
-<a name="androidAudioInterface"></a><h3>Interface</h3>
-
-
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="audio_sub_system.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="AudioHardwareInterface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/porting/bluetooth.jd b/pdk/docs/porting/bluetooth.jd
deleted file mode 100755
index 03b2d94..0000000
--- a/pdk/docs/porting/bluetooth.jd
+++ /dev/null
@@ -1,255 +0,0 @@
-page.title=Bluetooth
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidBluetoothPorting">Porting</a></li>
-<li><a href="#androidBluetoothCompiling">Compiling</a></li>
-<li><a href="#androidBluetoothTroubleshooting">Troubleshooting</a></li>
-<li><a href="#androidBluetoothTools">Tools</a></li>
-<li><a href="#androidBluetoothFeatures">Feature Support</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android's Bluetooth stack uses BlueZ as the host stack.</p>
-
-<p>Bluez is GPL licensed, so the Android framework interacts with userspace bluez code through D-BUS IPC to avoid proprietary code.</p>
-
-<p>The qualification notes mentioned below are example qualifications of the particular device in question. Each company has to re-qualify their product with Bluetooth SIG even if no changes are made to the Bluetooth stack.</p>
-
-<p>Headset and Handsfree (v1.5) profiles are implemented in the Android framework and are both tightly coupled with the Phone App. Profiles like OPP and PBAP are based on java obex. These profiles open a rfcomm socket connection into Bluez kernel bypassing the Bluez userspace stack.</p>
-
-<p> Profiles like A2DP, AVRCP, HID, PAN and other bluetooth functionality like pairing and scanning use the Bluez userspace stack.</p>
-
-<p>The diagram below offers a library-oriented view of the Bluetooth stack. Click <a href="bluetooth/bluetooth_process.html">Bluetooth Process Diagram</a> for a process-oriented view.</p>
-
-<p><img src="images/androidBluetooth.gif"></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-
-
-<a name="androidBluetoothPorting"></a><h3>Porting</h3>
-
-<p>BlueZ is Bluetooth 2.1 compatible and should work with any 2.1 chipset and is backward compatibile with older Bluetooth versions. There are two integration points:</p>
-<p><ul>
-<li>UART driver</li>
-<li>Bluetooth Power On / Off</li>
-</ul>
-</p>
-
-
-<a name="androidBluetoothPortingDriver"></a><h4>UART Driver</h4>
-
-<p>The BlueZ kernel sub-system attaches to your hardware-specific UART driver using the <code>hciattach</code> daemon.</p>
-<p>For example, for MSM7201A, this is <code>drivers/serial/msm_serial.c</code>. You may also need to edit command line options to <code>hciattach</code> via <code>init.rc</code>.</p>
-
-
-<a name="androidBluetoothPortingPowerOnOff"></a><h4>Bluetooth Power On / Off</h4>
-
-<p>The method for powering on and off your bluetooth chip varies from Android V 1.0 to post 1.0.</p>
-
-<p><ul>
-<li><b>1.0</b>: Android framework writes a 0 or 1 to <code>/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on</code>.</li>
-
-<li><b>Post 1.0</b>: Android framework uses the linux <code>rfkill</code> API. See <code>arch/arm/mach-msm/board-trout-rfkill.c</code> for an example.</li>
-</ul>
-</p>
-
-<a name="androidBluetoothCompiling"></a><h4>Compiling</h4>
-
-<p>To compile Android with Bluetooth support enabled, add the following line to <code>BoardConfig.mk</code>.
-<pre>
-BOARD_HAVE_BLUETOOTH := true
-</pre>
-
-<a name="androidBluetoothTroubleshooting"></a><h3>Troubleshooting</h3>
-<p><strong>Debugging</strong></p>
-<p>To debug your bluetooth implementation, start by reading the logs (<code>adb logcat</code>) and look for ERRROR and WARNING messages regarding Bluetooth.
-  Andoird uses Bluez, which comes with some useful debugging tools. The snippet below provides examples in a suggested order:</p>
-<pre>
-hciconfig -a  			# print BT chipset address and features. Useful to check if you can communicate with your BT chipset.
-hcidump -XVt  			# print live HCI UART traffic.
-hcitool scan  			# scan for local devices. Useful to check if RX/TX works.
-l2ping ADDRESS  		# ping another BT device. Useful to check if RX/TX works.
-sdptool records ADDRESS # request the SDP records of another BT device.
-</pre>
-
-<p><strong>Deamon Logs</strong></p>
-<p>Deamon logs for <code>bluetoothd</code> (<code>STDOUT</code>) and <code>hciattach</code> (<code>STDERR</code>) are sent to <code>/dev/null</code> by default. Edit <code>init.rc</code></span> and <code>init.PLATFORM.rc</code></span> to run these daemons under <code>logwrapper</code>, which redirects output to <code>logcat</code>.</p>
-<p><strong>hciconfig -a and hcitool</strong></p>
-<p>If you compile your own system.img for Android, and <code>hciconfig -a</code> works but <code>hcitool</code> scan doesn't, try installing the firmware for the Bluetooth chipset. This firmware isn't yet available in the open source codebase, but you can <code>adb pull</code> and then <code>adb push</code>it from a stock T-Mobile G1 (located in <code>/etc/firmware/brf6300.bin</code>).<br />
-  <a name="androidBluetoothTools"></a></p>
-<h3>Tools</h3>
-
-<p>BlueZ provides a rich set of command line tools for debugging and interacting with the Bluetooth sub-system, including:</p>
-<p><ul>
-<li><code>hciconfig</code></li>
-<li><code>hcitool</code></li>
-<li><code>hcidump</code></li>
-<li><code>sdptool</code></li>
-<li><code>dbus-send</code></li>
-<li><code>dbus-monitor</code></li>
-</ul>
-</p>
-
-<a name="androidBluetoothFeatures"></a>
-<h3>Feature Support</h3>
-<p>This section provides a change history of Bluetooth features added in each Android release and provides some rough guidance as to future features. </p>
-<h4>Android 1.0 release</h4>
-<h5>Platform features</h5>
-<ul>
-  <li>Based on Bluez 3.36 and Linux Kernel 2.6.25</li>
-  <li>Bluetooth 2.0+EDR host stack</li>
-  <li>Headset Profile 1.0 in Audio Gateway role</li>
-  <li>Handsfree Profile 1.5 in Audio Gateway role</li>
-  <ul>
-    <li>Three-way calling</li>
-    <li>Phonebook over AT commands
-    </li>
-  </ul>
-</ul>
-<h5>Qualifications for HTC G1 product. Each company reusing this software version has to re-qualify with Bluetooth SIG</h5>
-<ul>
-  <li>QDID B014524: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP)</li>
-  <li>QDID B014624: EPL for HTC Dream (HSP, HFP)</li>
-</ul>
-<h5>Example products</h5>
-<ul>
-  <li>HTC Dream / T-Mobile G1</li>
-</ul>
-<h4>&nbsp;</h4>
-<h4>Android 1.1 release</h4>
-<p>No Bluetooth changes since 1.0</p>
-<h4>&nbsp;</h4>
-<h4>Android 1.5 release (cupcake)</h4>
-<h4>Platform features</h4>
-<ul>
-  <li>Based on Bluez 3.36 with Linux Kernel 2.6.27</li>
-  <li>Bluetooth 2.0+EDR host stack</li>
-  <ul>
-    <li>Support for auto-pairing with '0000' devices</li>
-  </ul>
-  <li>Headset Profile 1.1 in Audio Gateway role</li>
-  <li>Handsfree Profile 1.5 in Audio Gateway role</li>
-  <ul>
-    <li>Three-way calling    </li>
-    <li>Phonebook over AT commands    </li>
-    <li>Volume synchronization</li>
-    <li>eSCO</li>
-    <li>Extensive bug fixes and compatibility improvements</li>
-  </ul>
-  <li>Stereo Bluetooth (A2DP 1.2) in Source role</li>
-  <ul>
-    <li>AVDTP 1.2 in Acceptor and Initiator roles</li>
-    <li>GAVDTP 1.0 in Acceptor and Initiator roles</li>
-    <li>44.1 khz, stereo, software SBC codec</li>
-  </ul>
-  <li>Remote Control (AVRCP 1.0) in Target role</li>
-  <ul>
-    <li>AVCTP 1.3 in Target role</li>
-    <li>play/pause/stop/prev/next</li>
-  </ul>
-</ul>
-<h5>Qualifications for HTC Sapphire product. Each company reusing this software version has to re-qualify with Bluetooth SIG</h5>
-<ul>
-  <li>QDID B015261: Host stack (SDP, L2CAP, GAP, RFCOMM, SPP, AVCTP, AVRCP, GAVDP, AVDTP, A2DP)</li>
-  <li>QDID B015262: EPL for HTC Sapphire (HSP, HFP)</li>
-</ul>
-<h4>Android 2.0/2.1 release (eclair)</h4>
-<h4>Platform features</h4>
-<ul>
-  <li>Based on Bluez 4.47 with Linux Kernel 2.6.29</li>
-  <li>Bluetooth 2.1+EDR host stack</li>
-  <ul>
-    <li>Support for auto-pairing with '0000' devices</li>
-    <li>Support for Simple Secure Pairing</li>
-  </ul>
-  <li>Headset Profile 1.1 in Audio Gateway role</li>
-  <li>Handsfree Profile 1.5 in Audio Gateway role</li>
-  <ul>
-    <li>Three-way calling    </li>
-    <li>Phonebook over AT commands    </li>
-    <li>Volume synchronization</li>
-    <li>eSCO</li>
-    <li>Extensive bug fixes and compatibility improvements</li>
-  </ul>
-  <li>Stereo Bluetooth (A2DP 1.2) in Source role</li>
-  <ul>
-    <li>AVDTP 1.2 in Acceptor and Initiator roles</li>
-    <li>GAVDTP 1.0 in Acceptor and Initiator roles</li>
-    <li>44.1 khz, stereo, software SBC codec</li>
-  </ul>
-  <li>Remote Control (AVRCP 1.0) in Target role</li>
-  <ul>
-    <li>AVCTP 1.3 in Target role</li>
-    <li>play/pause/stop/prev/next</li>
-  </ul>
-  <li> Object Push Profile version 1.1 </li>
-  <ul>
-     <li>Adds ability to transfer pictures, videos</li>
-     <li>Transfer of contacts using vCard is not supported in this release.</li>
-  </ul>
-  <li>Phone Book Address Profile version 1.0</li>
-  <ul>
-    <li>Phone Book Server Equipment (PSE) role supported</li>
-  </ul>
-  <li>Using Java Bluetooth APIs, an Android application can peform the
-  following:</li>
-  <ul>
-   <li>Scan for other Bluetooth devices </li>
-   <li>Query the local Bluetooth adapter for paired Bluetooth devices </li>
-   <li>Establish RFCOMM channels </li>
-   <li>Connect to other devices through service discovery </li>
-   <li>Transfer data to and from other devices </li>
-   <li>Manage multiple connections </li>
-  </ul>
-  <li>Support for Bluetooth enabled car and desk docks</li>
-  <ul>
-   <li>Framework support for routing Phone Call Audio and A2DP streaming using
-   car and desk docks. </li>
-  </ul>
-</ul>
-
-<h4>Android 2.2  release (Froyo)</h4>
-<h4>Platform features</h4>
-<ul>
-  <li>Based on Bluez 4.47 with Linux Kernel 2.6.32</li>
-  <li>No new profiles added.</li>
-  <li>Added ability to share contacts using vCard</li>
-  <li>Added ability to export all contacts - useful to transfer contacts to car kits </li>
-  <li>Improved compatibility with headsets and car kits. </li>
-</ul>
-
-<h4>Android 2.3  release (Gingerbread)</h4>
-<h4>Platform features</h4>
-<ul>
-  <li>Based on Bluez 4.69 with Linux Kernel 2.6.35</li>
-  <li>No new profiles added.</li>
-  <li>Improved compatibility with headsets and car kits. </li>
-</ul>
-
-<h4>Android 3.0 release (Honeycomb)</h4>
-<h4>Platform features</h4>
-<ul>
-  <li>Based on Bluez 4.69 with Linux Kernel 2.6.36</li>
-  <li>HID and PAN (NAP and PANU role) are the new profiles added.
-  <li>Improved compatibility with headsets and car kits. </li>
-</ul>
-
-<h5>&nbsp;</h5>
-<h4>Future releases</h4>
-<p>This section offers a rough guide of which features the team is developing for the next release. This feature list may change without notice. It isn't possible to post scheduling advice to the mailing lists.</p>
-<ul>
-  <li>More profiles...</li>
-  <li>Improved compatibility with headsets and car kits</li>
-  <li>Bluetooth emulator support</li>
-  <li>Bluetooth Low Energy </li>
-</ul>
-
diff --git a/pdk/docs/porting/bluetooth/bluetooth_process.jd b/pdk/docs/porting/bluetooth/bluetooth_process.jd
deleted file mode 100755
index 00ec0da..0000000
--- a/pdk/docs/porting/bluetooth/bluetooth_process.jd
+++ /dev/null
@@ -1,7 +0,0 @@
-page.title=Bluetooth Process Diagram
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<p>The diagram below offers a process-oriented architectural overview of Android's Bluetooth stack. Click <a href="../bluetooth.html">Bluetooth</a> to return to the Bluetooth overview page.</p>
-<img src="images/androidBluetoothProcessDiagram.jpg">
diff --git a/pdk/docs/porting/bluetooth/images/androidBluetoothProcessDiagram.jpg b/pdk/docs/porting/bluetooth/images/androidBluetoothProcessDiagram.jpg
deleted file mode 100755
index 6872180..0000000
--- a/pdk/docs/porting/bluetooth/images/androidBluetoothProcessDiagram.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/bring_up.jd b/pdk/docs/porting/bring_up.jd
deleted file mode 100755
index 1d04b86..0000000
--- a/pdk/docs/porting/bring_up.jd
+++ /dev/null
@@ -1,359 +0,0 @@
-page.title=Bring Up
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<p>Once your code is built and you have verified that all necessary directories exist, power on and test your device with basic bring up, as described below. Bring up tests are typically designed to stress certain aspects of your system and allow you to characterize the device's behavior. </p>
-<p>&nbsp;</p>
-<h3>1. Confirm a Clean Installation of a Basic Linux Kernel </h3>
-<p>Before considering Android-specific modifications to the Linux kernel, verify that you can build, deploy, and boot a core Linux kernel on your target hardware. </p>
-<p>&nbsp;</p>
-<h3>2. Modify Your Kernel Configuration to Accommodate Android Drivers</h3>
-<p>Your kernel configuration file should include the following:</p>
-<pre class="prettyprint">
-#
-# Android
-#
-# CONFIG_ANDROID_GADGET is not set
-# CONFIG_ANDROID_RAM_CONSOLE is not set
-CONFIG_ANDROID_POWER=y
-CONFIG_ANDROID_POWER_STAT=y
-CONFIG_ANDROID_LOGGER=y
-# CONFIG_ANDROID_TIMED_GPIO is not set
-CONFIG_ANDROID_BINDER_IPC=y
-</pre>
-<h3>3. Write Drivers</h3>
-<p>Android ships with default drivers for all basic functionality but you'll likely want to write your own drivers (or at least customize the default drivers) for your own device depending on your hardware configuration. See the following topics for examples of how to write your own drivers. </p>
-<ul>
-  <li><a href="audio_subsystem.html">Audio</a></li>
-  <li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
-  <li><a href="display_drivers.html">Display</a></li>
-</ul>
-<p>&nbsp;</p>
-<h3>4. Burn Images to Flash</h3>
-<p>An image represents the state of a system or part of a system  stored in non-volatile memory. The build process should produce the following system images:</p>
-<ul>
-  <li><strong>bootloader</strong>: The bootloader is a small program responsible for initiating loading of the operating system. </li>
-  <li><strong>boot</strong>: </li>
-  <li><strong>recovery</strong>: </li>
-  <li><strong>system</strong>: The system image stores a snapshot of the Android operating system.</li>
-  <li><strong>data</strong>: The data image stores user data. Anything not saved to the <code>device/data</code> directory will be lost on reboot.</li>
-</ul>
-<ul>
-  <li><strong>kernel</strong>: The kernel represents the most basic element of an operating system. Android's Linux kernel is responsible for managing the system's resources and acts as an abstraction layer between hardware and a system's applications. </li>
-  <li><strong>ramdisk</strong>: RAMdisk defines a portion of Random Access Memory (RAM) that gets used as if it were a hard drive. </li>
-</ul>
-<p>&nbsp;</p>
-<p>Configure the bootloader to load the kernel 	and RAMdisk into RAM and pass the RAMdisk address to the kernel on 	startup. </p>
-<p>&nbsp;</p>
-<h3>5. Boot the kernel and mount the RAMdisk.</h3>
-<p>&nbsp;</p>
-<h3>6. Debug Android-specific init programs on RAMdisk</h3>
-<p>Android-specific init programs are found in <code>device/system/init</code>. Add LOG messages to help you debug potential problems with the LOG macro defined in <code>device/system/init/init.c</code>.</p>
-<p> The init program directly mounts all filesystems and devices using either hard-coded file names or device names generated by probing the sysfs filesystem (thereby eliminating the need for a <code>/etc/fstab</code> file in Android).  After <code>device/system</code> files are mounted, init  reads <code>/etc/init.rc</code> and invokes the programs listed there (one of the first of which is the 	console shell).</p>
-<p>&nbsp;</p>
-<h3>7. Verify that applications have started </h3>
-<p>Once the shell becomes available, execute <code>% ps</code> to confirm that the following applications are running:</p>
-<ul>
-    <li><code>/system/bin/logd</code></li>
-    <li><code>/sbin/adbd</code></li>
-    <li><code>/system/bin/usbd</code></li>
-    <li><code>/system/bin/debuggerd</code></li>
-    <li><code>/system/bin/rild</code></li>
-    <li><code>/system/bin/app_process</code></li>
-    <li><code>/system/bin/runtime</code></li>
-    <li><code>/system/bin/dbus-daemon</code></li>
-    <li><code>system_server</code></li>
-</ul>
-<p>Each of these applications is embedded Linux C/C++ and you can use any standard Linux debugging tool to troubleshoot applications that aren't running. Execute <code>% make showcommands</code> to determine precise build commands. <code>gdbserver</code> (the GNU debugger) is available in the <code>bin</code> directory of the system partition (please see <a href="http://sourceware.org/gdb/">http://sourceware.org/gdb/</a> for more information).  </p>
-<p>&nbsp;</p>
-<h3>8. Pulling it all together </h3>
-<p>If bring up was successful, you should see the following Java applications (with icons) visible on the LCD panel:</p>
-<ul>
-    <li>com.google.android.phone: The Android contact application. </li>
-    <li>com.google.android.home</li>
-    <li>android.process.google.content</li>
-</ul>
-<p>If they are not visible or unresponsive to keypad control, run the <code>framebuffer/keypad</code> tests.</p>
-
-
-<a name="androidInitLanguage"></a><h1>Android Init Language</h1>
-
-
-<p>The Android Init Language consists of four broad classes of statements:</p>
-<ul>
-  <li>Actionn</li>
-  <li>Commands</li>
-  <li>Services</li>
-  <li>Options</li>
-</ul>
-<p>The language syntax includes the following conventions: </p>
-<ul>
-  <li>All classes are line-oriented and consist of tokens separated by whitespace. c-style backslash escapes may be used to insert whitespace into a token. &nbsp;Double quotes may also be used to prevent whitespace from breaking text into multiple tokens. A backslash <br />
-  appearing as the last character on a line is used for line-folding.</li>
-  <li> Lines that start with a # (leading whitespace allowed) are comments.</li>
-  <li>Actions and Services implicitly declare new sections. All commands
-    or options belong to the section most recently declared. &nbsp;Commands
-    or options before the first section are ignored.  </li>
-  <li>Actions and Services have unique names. &nbsp;If a second Action or Service is declared with the same name as an existing one, it is ignored as an error.</li>
-</ul>
-<p>  Actions</p>
-<p> Actions are named sequences of commands. Actions have a trigger used to determine when the action should occur. When an event
-  occurs which matches an action's trigger, that action is added to
-  the tail of a to-be-executed queue (unless it is already on the
-  queue).<br />
-  <br />
-  Each action in the queue is dequeued in sequence. Each command in
-  an action is executed in sequence.&nbsp;Init handles other activities
-  (such as, device creation/destruction, property setting, process restarting) &quot;between&quot; the execution of the commands in activities.
-<p>Actions take the form of:</p>
-<pre class="prettify">
-on &lt;trigger&gt;
-&nbsp; &lt;command&gt;
-&nbsp; &lt;command&gt;
-&nbsp; &lt;command&gt;
-</pre>
-<p>Services</p>
-<p>Services are programs that init launches and (optionally) restarts
-when they exit. </p>
-<p>Services take the form of:</p>
-<pre class="prettify">
-  service &lt;name&gt; &lt;pathname&gt; [ &lt;argument&gt; ]*
-&nbsp; &lt;option&gt;
-&nbsp; &lt;option&gt;
-&nbsp; ...
-</pre>
-<p>Options</p>
-  <p> Options are modifiers to services that affect how and when init
-runs a service. Options are described in the table below:</p>
-<table>
-  <tr>
-    <th scope="col">Option</th><th scope="col">Description</th></tr>
-  <tr>
-    <td><code>disabled</code></td>
-    <td>This service will not automatically start with its class. It must be explicitly started by name.</td>
-  </tr>
-  <tr>
-    <td><code>socket &lt;type&gt; &lt;name&gt; &lt;perm&gt; [ &lt;user&gt; [ &lt;group&gt; ] ]</code></td>
-    <td> Create a unix domain socket named <code>/dev/socket/&lt;name&gt;</code> and pass its fd to the launched process. Valid <code>&lt;type&gt;</code> values include <code>dgram</code> and <code>stream</code>. <code>user</code> and <code>group</code> default to 0.</td>
-  </tr>
-  <tr>
-    <td><code>user &lt;username&gt;</code></td>
-    <td>Change to username before exec'ing this service. Currently defaults to root.</td>
-  </tr>
-  <tr>
-    <td><code>group &lt;groupname&gt; [ &lt;groupname&gt; ]*</code></td>
-    <td> Change to groupname before exec'ing this service. &nbsp;Additional&nbsp; groupnames beyond the first, which is required, are used to set additional groups of the process (with <code>setgroups()</code>). Currently defaults to root.</td>
-  </tr>
-  <tr>
-    <td><code>capability [ &lt;capability&gt; ]+</code></td>
-    <td>Set linux capability before exec'ing this service</td>
-  </tr>
-  <tr>
-    <td><code>oneshot</code></td>
-    <td>Do not restart the service when it exits.</td>
-  </tr>
-  <tr>
-    <td><code>class &lt;name&gt;</code></td>
-    <td>Specify a class name for the service. &nbsp;All services in a named class must start and stop together. A service is considered of class &quot;default&quot; if one is not specified via the class option.</td>
-  </tr>
-</table>
-  <p>  Triggers</p>
-  <p>Triggers are strings used to match certain kinds of events that cause an action to occur.  </p>
-  <table>
-    <tr>
-      <th scope="col">Trigger</th>
-      <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td><code>boot</code></td>
-      <td>This is the first trigger that occurs when init starts (after <code>/init.conf</code> is loaded).</td>
-    </tr>
-    <tr>
-      <td><code>&lt;name&gt;=&lt;value&gt;</code></td>
-      <td>Triggers of this form occur when the property <code>&lt;name&gt;</code> is set to the specific value <code>&lt;value&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>device-added-&lt;path&gt;<br />
-  device-removed-&lt;path&gt;</code></td>
-      <td>Triggers of these forms occur when a device node is added or removed.</td>
-    </tr>
-    <tr>
-      <td><code> service-exited-&lt;name&gt;</code></td>
-      <td>Triggers of this form occur when the specified service exits.</td>
-    </tr>
-  </table>
-  <p><br />
-  Commands</p>
-  <table>
-    <tr>
-      <th scope="col">Command</th>
-      <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td><code>exec &lt;path&gt; [ &lt;argument&gt; ]*</code></td>
-      <td>Fork and execute a program (<code>&lt;path&gt;</code>). This will block until the program completes execution. Try to avoid exec. Unlike the <code>builtin</code> commands, it runs the risk of getting init &quot;stuck&quot;.</td>
-    </tr>
-    <tr>
-      <td><code>export &lt;name&gt; &lt;value&gt;</code></td>
-      <td>Set the environment variable <code>&lt;name&gt;</code> equal to <code>&lt;value&gt;</code> in the global environment (which will be inherited by all processes started after this command is executed).</td>
-    </tr>
-    <tr>
-      <td><code>ifup &lt;interface&gt;</code></td>
-      <td>Bring the network interface <code>&lt;interface&gt;</code> online.</td>
-    </tr>
-    <tr>
-      <td><code>import &lt;filename&gt;</code></td>
-      <td> Parse an init config file, extending the current configuration.</td>
-    </tr>
-    <tr>
-      <td><code>hostname &lt;name&gt;</code></td>
-      <td>Set the host name.</td>
-    </tr>
-    <tr>
-      <td><code>class_start &lt;serviceclass&gt;</code></td>
-      <td>Start all services of the specified class if they are not already running.</td>
-    </tr>
-    <tr>
-      <td><code>class_stop &lt;serviceclass&gt;</code></td>
-      <td>Stop all services of the specified class if they are currently running.</td>
-    </tr>
-    <tr>
-      <td><code>domainname &lt;name&gt;</code></td>
-      <td>Set the domain name.</td>
-    </tr>
-    <tr>
-      <td><code>insmod &lt;path&gt;</code></td>
-      <td>Install the module at <code>&lt;path&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>mkdir &lt;path&gt;</code></td>
-      <td>Make a directory at <code>&lt;path&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>mount &lt;type&gt; &lt;device&gt; &lt;dir&gt; [ &lt;mountoption&gt; ]*</code></td>
-      <td>Attempt to mount the named device at the directory <code>&lt;dir&gt;</code>         <code>&lt;device&gt;</code>. This may be of the form mtd@name to specify a mtd block device by name.</td>
-    </tr>
-    <tr>
-      <td><code>setkey</code></td>
-      <td>- currenlty undefined - </td>
-    </tr>
-    <tr>
-      <td><code>setprop &lt;name&gt; &lt;value&gt;</code></td>
-      <td>Set system property <code>&lt;name&gt;</code> to <code>&lt;value&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code> setrlimit &lt;resource&gt; &lt;cur&gt; &lt;max&gt;</code></td>
-      <td>Set the rlimit for a resource.</td>
-    </tr>
-    <tr>
-      <td><code>start &lt;service&gt;</code></td>
-      <td>Start a service running if it is not already running.</td>
-    </tr>
-    <tr>
-      <td><code> stop &lt;service&gt;</code></td>
-      <td>Stop a service from running if it is currently running.</td>
-    </tr>
-    <tr>
-      <td><code>symlink &lt;target&gt; &lt;path&gt;</code></td>
-      <td>Create a symbolic link at <code>&lt;path&gt;</code> with the value <code>&lt;target&gt;</code>.</td>
-    </tr>
-    <tr>
-      <td><code>write &lt;path&gt; &lt;string&gt; [ &lt;string&gt; ]*</code></td>
-      <td>Open the file at <code>&lt;path&gt;</code> and write one or more strings to it with write(2).</td>
-    </tr>
-  </table>
-  <p>    Properties</p>
-    Init updates some system properties to provide some insight into <br />
-    what it's doing:</p>
-  <table>
-    <tr>
-      <th scope="col">Property</th>
-      <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td><code>init.action</code></td>
-      <td>Equal to the name of the action currently being executed or &quot;&quot; if none.</td>
-    </tr>
-    <tr>
-      <td><code>init.command</code></td>
-      <td>Equal to the command being executed or &quot;&quot; if none.</td>
-    </tr>
-    <tr>
-      <td><code>init.svc.&lt;name&gt;</code></td>
-      <td>State of a named service (&quot;stopped&quot;, &quot;running&quot;, or &quot;restarting&quot;).</td>
-    </tr>
-  </table>
-  <p>Example init.conf</p>
-  <p>The following snippet is an incomplete example of the <code>init.conf</code> file, simply meant to give you an idea of what a proper configuration resembles.</p>
-  <pre class="prettify">
-on boot
-  export PATH /sbin:/system/sbin:/system/bin
-  export LD_LIBRARY_PATH /system/lib
-
-  mkdir /dev
-  mkdir /proc
-  mkdir /sys
-
-
-  mount tmpfs tmpfs /dev
-  mkdir /dev/pts
-  mkdir /dev/socket
-  mount devpts devpts /dev/pts
-  mount proc proc /proc
-  mount sysfs sysfs /sys
-
-
-  write /proc/cpu/alignment 4
-
-
-  ifup lo
-
-
-  hostname localhost
-  domainname localhost
-
-
-  mount yaffs2 mtd@system /system
-  mount yaffs2 mtd@userdata /data
-
-
-  import /system/etc/init.conf
-
-
-  class_start default
-
-
-service adbd /sbin/adbd
-  user adb
-  group adb
-
-
-service usbd /system/bin/usbd -r
-  user usbd
-  group usbd
-  socket usbd 666
-
-
-service zygote /system/bin/app_process -Xzygote /system/bin --zygote
-  socket zygote 666
-
-
-service runtime /system/bin/runtime
-  user system
-  group system
-
-
-on device-added-/dev/compass
-  start akmd
-
-
-on device-removed-/dev/compass
-  stop akmd
-
-
-service akmd /sbin/akmd
-  disabled
-  user akmd
-  group akmd
-</pre>
diff --git a/pdk/docs/porting/build_cookbook.jd b/pdk/docs/porting/build_cookbook.jd
deleted file mode 100755
index d619086..0000000
--- a/pdk/docs/porting/build_cookbook.jd
+++ /dev/null
@@ -1,556 +0,0 @@
-page.title=Build Cookbook
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#simpleAPK">Simple APK</a></li>
-<li><a href="#APKJar">APK Dependent on static .jar file</a></li>
-    <li><a href="#APKPlatform">APK signed with the platform key</a></li>
-    <li><a href="#APKVendor">APK that signed with vendor key</a></li>
-    <li><a href="#prebuiltAPK">Prebuilt APK</a></li>
-    <li><a href="#staticJava">Adding a Static Java Library</a></li>
-    <li><a href="#mkVars">Android.mk variables</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>The Android Build Cookbook offers code snippets to help you quickly implement some common build tasks. For additional instruction, please see the other build documents in this section.</p>  
-<h3><a name="simpleAPK"></a>Building a simple APK</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="APKJar"></a>Building a APK that depends on a static .jar file</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # List of static libraries to include in the package
-  LOCAL_STATIC_JAVA_LIBRARIES := static-library
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="APKPlatform"></a>Building a APK that should be signed with the platform key</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  LOCAL_CERTIFICATE := platform
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="APKVendor"></a>Building a APK that should be signed with a specific vendor key</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Name of the APK to build
-  LOCAL_PACKAGE_NAME := LocalPackage
-  &nbsp;
-  LOCAL_CERTIFICATE := vendor/example/certs/app
-  &nbsp;
-  # Tell it to build an APK
-  include $(BUILD_PACKAGE)
-</pre>
-<h3><a name="prebuiltAPK"></a>Adding a prebuilt APK</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Module name should match apk name to be installed.
-  LOCAL_MODULE := LocalModuleName
-  LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
-  LOCAL_MODULE_CLASS := APPS
-  LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
-  &nbsp;
-  include $(BUILD_PREBUILT)
-</pre>
-<h3><a name="staticJava"></a>Adding a Static Java Library</h3>
-<pre>
-  LOCAL_PATH := $(call my-dir)
-  include $(CLEAR_VARS)
-  &nbsp;
-  # Build all java files in the java subdirectory
-  LOCAL_SRC_FILES := $(call all-subdir-java-files)
-  &nbsp;
-  # Any libraries that this library depends on
-  LOCAL_JAVA_LIBRARIES := android.test.runner
-  &nbsp;
-  # The name of the jar file to create
-  LOCAL_MODULE := sample
-  &nbsp;
-  # Build a static jar file.
-  include $(BUILD_STATIC_JAVA_LIBRARY)
-</pre>
-<h3><a name="mkVars"></a>Android.mk Variables</h3>
-
-<p>These are the variables that you'll commonly see in Android.mk files, listed
-alphabetically. First, a note on the variable naming: </p> 
-
-<ul> 
-    <li><b>LOCAL_</b> - These variables are set per-module.  They are cleared
-    by the <code>include $(CLEAR_VARS)</code> line, so you can rely on them
-    being empty after including that file.  Most of the variables you'll use
-    in most modules are LOCAL_ variables.</li> 
-    <li><b>PRIVATE_</b> - These variables are make-target-specific variables.  That
-    means they're only usable within the commands for that module.  It also
-    means that they're unlikely to change behind your back from modules that
-    are included after yours.  This 
-    <a href="http://www.gnu.org/software/make/manual/make.html#Target_002dspecific">link to the make documentation</a> 
-    describes more about target-specific variables.
-    </li> 
-    <li><b>HOST_</b> and <b>TARGET_</b> - These contain the directories
-    and definitions that are specific to either the host or the target builds.
-    Do not set variables that start with HOST_ or TARGET_ in your makefiles.
-    </li> 
-    <li><b>BUILD_</b> and <b>CLEAR_VARS</b> - These contain the names of
-    well-defined template makefiles to include.  Some examples are CLEAR_VARS
-    and BUILD_HOST_PACKAGE.</li> 
-    <li>Any other name is fair-game for you to use in your Android.mk.  However,
-    remember that this is a non-recursive build system, so it is possible that
-    your variable will be changed by another Android.mk included later, and be
-    different when the commands for your rule / module are executed.</li> 
-</ul>
-
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Parameter</th>
-  <th scope="col">Description</th>
- </tr>
-<tr>
-<td valign="top">LOCAL_AAPT_FLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ACP_UNAVAILABLE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ADDITIONAL_JAVA_DIR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_AIDL_INCLUDES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ALLOW_UNDEFINED_SYMBOLS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ARM_MODE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ASFLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ASSET_DIR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_ASSET_FILES</td>
-<td valign="top">In Android.mk files that <code>include $(BUILD_PACKAGE)</code> set this
-to the set of files you want built into your app.  Usually:</p> 
-<p><code>LOCAL_ASSET_FILES += $(call find-subdir-assets)</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_BUILT_MODULE_STEM</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_C_INCLUDES</td>
-<td valign="top"><p>Additional directories to instruct the C/C++ compilers to look for header
-files in.  These paths are rooted at the top of the tree.  Use
-<code>LOCAL_PATH</code> if you have subdirectories of your own that you
-want in the include paths.  For example:</p> 
-<p><code> 
-LOCAL_C_INCLUDES += extlibs/zlib-1.2.3<br/> 
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/src
-</code></p> 
-<p>You should not add subdirectories of include to
-<code>LOCAL_C_INCLUDES</code>, instead you should reference those files
-in the <code>#include</code> statement with their subdirectories.  For
-example:</p> 
-<p><code>#include &lt;utils/KeyedVector.h&gt;</code><br/> 
-not <code><s>#include &lt;KeyedVector.h&gt;</s></code></p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CC</td>
-<td valign="top">If you want to use a different C compiler for this module, set LOCAL_CC
-to the path to the compiler.  If LOCAL_CC is blank, the appropriate default
-compiler is used.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CERTIFICATE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CFLAGS</td>
-<td valign="top">If you have additional flags to pass into the C or C++ compiler, add
-them here.  For example:</p> 
-<p><code>LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CLASSPATH</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_COMPRESS_MODULE_SYMBOLS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_COPY_HEADERS</td>
-<td valign="top"><p>The set of files to copy to the install include tree.  You must also
-supply <code>LOCAL_COPY_HEADERS_TO</code>.</p> 
-<p>This is going away because copying headers messes up the error messages, and
-may lead to people editing those headers instead of the correct ones.  It also
-makes it easier to do bad layering in the system, which we want to avoid.  We
-also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any
-headers.</p></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_COPY_HEADERS_TO</td>
-<td valign="top"><p>The directory within "include" to copy the headers listed in
-<code>LOCAL_COPY_HEADERS</code> to.</p> 
-<p>This is going away because copying headers messes up the error messages, and
-may lead to people editing those headers instead of the correct ones.  It also
-makes it easier to do bad layering in the system, which we want to avoid.  We
-also aren't doing a C/C++ SDK, so there is no ultimate requirement to copy any
-headers.</p></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CPP_EXTENSION</td>
-<td valign="top">If your C++ files end in something other than "<code>.cpp</code>",
-you can specify the custom extension here.  For example:
-<p><code>LOCAL_CPP_EXTENSION := .cc</code></p> 
-Note that all C++ files for a given module must have the same
-extension; it is not currently possible to mix different extensions.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CPPFLAGS</td>
-<td valign="top">If you have additional flags to pass into <i>only</i> the C++ compiler, add
-them here.  For example:</p> 
-<p><code>LOCAL_CPPFLAGS += -ffriend-injection</code></p> 
-<code>LOCAL_CPPFLAGS</code> is guaranteed to be after <code>LOCAL_CFLAGS</code> 
-on the compile line, so you can use it to override flags listed in
-<code>LOCAL_CFLAGS</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_CXX</td>
-<td valign="top">If you want to use a different C++ compiler for this module, set LOCAL_CXX
-to the path to the compiler.  If LOCAL_CXX is blank, the appropriate default
-compiler is used.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_DX_FLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_EXPORT_PACKAGE_RESOURCES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_FORCE_STATIC_EXECUTABLE</td>
-<td valign="top"><p>If your executable should be linked statically, set 
-<code>LOCAL_FORCE_STATIC_EXECUTABLE:=true</code>.  There is a very short
-list of libraries that we have in static form (currently only libc).  This is
-really only used for executables in /sbin on the root filesystem.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_GENERATED_SOURCES</td>
-<td valign="top"><p>Files that you add to <code>LOCAL_GENERATED_SOURCES</code> will be
-automatically generated and then linked in when your module is built.
-See the <a href="#custom-tools">Custom Tools</a> template makefile for an
-example.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INSTRUMENTATION_FOR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INSTRUMENTATION_FOR_PACKAGE_NAME</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INTERMEDIATE_SOURCES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_INTERMEDIATE_TARGETS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_IS_HOST_MODULE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAR_MANIFEST</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JARJAR_RULES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAVA_LIBRARIES</td>
-<td valign="top"><p>When linking Java apps and libraries, <code>LOCAL_JAVA_LIBRARIES</code> 
-specifies which sets of java classes to include.  Currently there are
-two of these: <code>core</code> and <code>framework</code>.
-In most cases, it will look like this:</p> 
-<p><code>LOCAL_JAVA_LIBRARIES := core framework</code></p> 
-<p>Note that setting <code>LOCAL_JAVA_LIBRARIES</code> is not necessary
-(and is not allowed) when building an APK with
-"<code>include $(BUILD_PACKAGE)</code>".  The appropriate libraries
-will be included automatically.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAVA_RESOURCE_DIRS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JAVA_RESOURCE_FILES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_JNI_SHARED_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_LDFLAGS</td>
-<td valign="top"><p>You can pass additional flags to the linker by setting
-<code>LOCAL_LDFLAGS</code>.  Keep in mind that the order of parameters is
-very important to ld, so test whatever you do on all platforms.</p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_LDLIBS</td>
-<td valign="top"><p><code>LOCAL_LDLIBS</code> allows you to specify additional libraries
-that are not part of the build for your executable or library.  Specify
-the libraries you want in -lxxx format; they're passed directly to the 
-link line.  However, keep in mind that there will be no dependency generated
-for these libraries.  It's most useful in simulator builds where you want
-to use a library preinstalled on the host.  The linker (ld) is a particularly
-fussy beast, so it's sometimes necessary to pass other flags here if you're
-doing something sneaky. Some examples:</p> 
-<p><code>LOCAL_LDLIBS += -lcurses -lpthread<br/> 
-LOCAL_LDLIBS += -Wl,-z,origin
-</code></p> </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE</td>
-<td valign="top"><code>LOCAL_MODULE</code> is the name of what's supposed to be generated
-from your Android.mk.  For exmample, for libkjs, the <code>LOCAL_MODULE</code> 
-is "libkjs" (the build system adds the appropriate suffix -- .so .dylib .dll).
-For app modules, use <code>LOCAL_PACKAGE_NAME</code> instead of 
-<code>LOCAL_MODULE</code>. </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE_PATH</td>
-<td valign="top">Instructs the build system to put the module somewhere other than what's
-normal for its type.  If you override this, make sure you also set
-<code>LOCAL_UNSTRIPPED_PATH</code> if it's an executable or a shared library
-so the unstripped binary has somewhere to go.  An error will occur if you forget
-to.</p> 
-<p>See <a href="#moving-modules">Putting modules elsewhere</a> for more.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE_STEM</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_MODULE_TAGS</td>
-<td valign="top"><p>Set <code>LOCAL_MODULE_TAGS</code> to any number of whitespace-separated
-tags.  <p>This variable controls what build flavors the package gets included in. For example:</p>
-<ul type="disc">
-  <li><code>user</code>: include this in user/userdebug builds</li>
-  <li><code>eng</code>: include this in eng builds</li>
-  <li><code>tests</code>: the target is a testing target and makes it available for tests</li>
-  <li><code>optional</code>: don't include this</li>
-</ul></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_DEFAULT_COMPILER_FLAGS</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_EMMA_COMPILE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_EMMA_INSTRUMENT</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_NO_STANDARD_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_OVERRIDES_PACKAGES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PACKAGE_NAME</td>
-<td valign="top"><code>LOCAL_PACKAGE_NAME</code> is the name of an app.  For example,
-Dialer, Contacts, etc. </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_POST_PROCESS_COMMAND</td>
-<td valign="top"><p>For host executables, you can specify a command to run on the module
-after it's been linked.  You might have to go through some contortions
-to get variables right because of early or late variable evaluation:</p> 
-<p><code>module := $(HOST_OUT_EXECUTABLES)/$(LOCAL_MODULE)<br/> 
-LOCAL_POST_PROCESS_COMMAND := /Developer/Tools/Rez -d __DARWIN__ -t APPL\<br/> 
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-d __WXMAC__ -o $(module) Carbon.r
-</code></p> 
- </td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_EXECUTABLES</td>
-<td valign="top">When including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to
-executables that you want copied.  They're located automatically into the
-right bin directory.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_JAVA_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_LIBS</td>
-<td valign="top">When including $(BUILD_PREBUILT) or $(BUILD_HOST_PREBUILT), set these to
-libraries that you want copied.  They're located automatically into the
-right lib directory.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_OBJ_FILES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_PRELINK_MODULE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_REQUIRED_MODULES</td>
-<td valign="top"><p>Set <code>LOCAL_REQUIRED_MODULES</code> to any number of whitespace-separated
-module names, like "libblah" or "Email".  If this module is installed, all
-of the modules that it requires will be installed as well.  This can be
-used to, e.g., ensure that necessary shared libraries or providers are
-installed when a given app is installed.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_RESOURCE_DIR</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_SDK_VERSION</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_SHARED_LIBRARIES</td>
-<td valign="top">These are the libraries you directly link against.  You don't need to
-pass transitively included libraries.  Specify the name without the suffix:</p> 
-<p><code>LOCAL_SHARED_LIBRARIES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libutils \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libui \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libaudio \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libexpat \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libsgl
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_SRC_FILES</td>
-<td valign="top">The build system looks at <code>LOCAL_SRC_FILES</code> to know what source
-files to compile -- .cpp .c .y .l .java.  For lex and yacc files, it knows
-how to correctly do the intermediate .h and .c/.cpp files automatically.  If
-the files are in a subdirectory of the one containing the Android.mk, prefix
-them with the directory name:</p> 
-<p><code>LOCAL_SRC_FILES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;file1.cpp \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;dir/file2.cpp
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_STATIC_JAVA_LIBRARIES</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_STATIC_LIBRARIES</td>
-<td valign="top">These are the static libraries that you want to include in your module.
-Mostly, we use shared libraries, but there are a couple of places, like
-executables in sbin and host executables where we use static libraries instead.
-<p><code>LOCAL_STATIC_LIBRARIES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libutils \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libtinyxml
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_UNINSTALLABLE_MODULE</td>
-<td valign="top"></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_UNSTRIPPED_PATH</td>
-<td valign="top">Instructs the build system to put the unstripped version of the module
-somewhere other than what's normal for its type.  Usually, you override this
-because you overrode <code>LOCAL_MODULE_PATH</code> for an executable or a
-shared library.  If you overrode <code>LOCAL_MODULE_PATH</code>, but not 
-<code>LOCAL_UNSTRIPPED_PATH</code>, an error will occur.</p> 
-<p>See <a href="#moving-modules">Putting modules elsewhere</a> for more.</td>
-</tr>
-<tr>
-<td valign="top">LOCAL_WHOLE_STATIC_LIBRARIES</td>
-<td valign="top">These are the static libraries that you want to include in your module without allowing
-the linker to remove dead code from them. This is mostly useful if you want to add a static library
-to a shared library and have the static library's content exposed from the shared library.
-<p><code>LOCAL_WHOLE_STATIC_LIBRARIES := \<br/> 
-	&nbsp;&nbsp;&nbsp;&nbsp;libsqlite3_android<br/> 
-</code></td>
-</tr>
-<tr>
-<td valign="top">LOCAL_YACCFLAGS</td>
-<td valign="top">Any flags to pass to invocations of yacc for your module.  A known limitation
-here is that the flags will be the same for all invocations of YACC for your
-module.  This can be fixed.  If you ever need it to be, just ask.</p> 
-<p><code>LOCAL_YACCFLAGS := -p kjsyy</code></td>
-</tr>
-<tr>
-<td valign="top">OVERRIDE_BUILT_MODULE_PATH</td>
-<td valign="top"></td>
-</tr>
-
-</table>
diff --git a/pdk/docs/porting/build_new_device.jd b/pdk/docs/porting/build_new_device.jd
deleted file mode 100755
index 271a43a..0000000
--- a/pdk/docs/porting/build_new_device.jd
+++ /dev/null
@@ -1,241 +0,0 @@
-page.title=Configuring a New Product
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidOHDPortingDeviceBuildingProcess">Detailed Instructions</a></li>
-<li><a href="#androidBuildNewFileTree">New Product File Tree</a></li>
-<li><a href="#androidBuildSystemProductDefFiles">Product Definition Files</a></li>
-</ul>
-</div>
-</div>
-
-
-<a name="androidOHDPortingDeviceBuildingProcess"></a><h3>Detailed Instructions</h3>
-
-<p>The steps below describe how to configure makefiles for new mobile devices and products running Android.</p>
-<ol>
-  <li>Create a company directory in <code>//vendor/</code>.<br/>
-  <pre class="prettyprint">
-  mkdir vendor/&lt;company_name&gt;</pre></li>
-  <li>Create a <code>products</code> directory beneath the company directory you created in step 1.<BR>
-  <pre class="prettyprint">
-  mkdir vendor/&lt;company_name&gt;/products/</pre></li>
-  <li>Create a product-specific makefile, called <code>vendor/&lt;company_name&gt;/products/&lt;first_product_name&gt;.mk</code>, that includes at least the following code:<BR>
-    <pre class="prettyprint">
-  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
-  #
-  # Overrides
-  PRODUCT_NAME := &lt;first_product_name&gt;
-  PRODUCT_DEVICE := &lt;board_name&gt;</pre>
-  <li>
-  Additional product-specific variables can be added to this <a href="#androidBuildSystemProductDefFiles">Product Definition</a> 
-file.
-  </li>
-  <li>In the <code>products</code> directory, create an <code>AndroidProducts.mk</code> file that point to (and is responsible for finding) the individual product make files.<BR>
-  <pre class="prettyprint">
-  #
-  # This file should set PRODUCT_MAKEFILES to a list of product makefiles
-  # to expose to the build system.  LOCAL_DIR will already be set to
-  # the directory containing this file. 
-  #
-  # This file may not rely on the value of any variable other than
-  # LOCAL_DIR; do not use any conditionals, and do not look up the
-  # value of any variable that isn't set in this file or in a file that
-  # it includes.
-  #
-  
-  PRODUCT_MAKEFILES := \
-    $(LOCAL_DIR)/first_product_name.mk \</pre></li>
-  <li>Create a board-specific directory beneath your company directory that matches the <code>PRODUCT_DEVICE</code> variable <code>&lt;board_name&gt;</code> referenced in the product-specific make file above. This will include a make file that gets accessed by any product using this board.<BR>
-  <pre class="prettyprint">
-  mkdir vendor/&lt;company_name&gt;/&lt;board_name&gt;</pre></li>
-    <li>Create a <code>BoardConfig.mk</code> file in the directory created in the previous step (<code>vendor/&lt;company_name&gt;/&lt;board_name&gt;</code>). <BR>
-  <pre class="prettyprint">
-  # These definitions override the defaults in config/config.make for &lt;board_name&gt;
-  #
-  # TARGET_NO_BOOTLOADER := false
-  #
-  TARGET_USE_GENERIC_AUDIO := true</pre></li>  
-  <li>If you wish to modify system properties, create a <code>system.prop</code> file in your <code>&lt;board_name&gt;</code> directory(<code>vendor/&lt;company_name&gt;/&lt;board_name&gt;</code>).<BR>
-  <pre class="prettyprint">
-  # system.prop for <board_name>
-  # This overrides settings in the products/generic/system.prop file
-  #
-  # rild.libpath=/system/lib/libreference-ril.so
-  # rild.libargs=-d /dev/ttyS0</pre></li>   
-  <li>Add a pointer to <code>&lt;second_product_name&gt;.mk</code> within <code>products/AndroidProducts.mk</code>.<BR>
-  <pre class="prettypring">
-  PRODUCT_MAKEFILES := \
-    $(LOCAL_DIR)/first_product_name.mk \
-    $(LOCAL_DIR)/second_product_name.mk</pre></li>
-  <li>An <code>Android.mk</code> file must be included in <code>vendor/&lt;company_name&gt;/&lt;board_name&gt;</code> with at least the following code:<BR>
-  <pre class="prettyprint">
-  # make file for new hardware <board_name> from <company_name>
-  #
-  LOCAL_PATH := $(call my-dir)
-  #
-  # this is here to use the pre-built kernel
-  ifeq ($(TARGET_PREBUILT_KERNEL),)
-  TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
-  endif
-  #
-  file := $(INSTALLED_KERNEL_TARGET)
-  ALL_PREBUILT += $(file)
-  $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
-		$(transform-prebuilt-to-target)
-  #
-  # no boot loader, so we don't need any of that stuff..  
-  #
-  LOCAL_PATH := vendor/&lt;company_name&gt;/&lt;board_name&gt;
-  #
-  include $(CLEAR_VARS)
-  #
-  # include more board specific stuff here? Such as Audio parameters.      
-  #</pre>
-
-  </li>
-<li>To create a second product for the same board, create a second product-specific make file called <code>vendor/company_name/products/&lt;second_product_name&gt;.mk</code> that includes:<BR>
-<pre class="prettyprint">
-  $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
-  #
-  # Overrides
-  PRODUCT_NAME := &lt;second_product_name&gt;
-  PRODUCT_DEVICE := &lt;board_name&gt;</pre></li>   	
-</ol>
-<p>By now, you should have two new products, called <code>&lt;first_product_name&gt;</code> and <code>&lt;second_product_name&gt;</code> associated with <code>&lt;company_name&gt;</code>. To verify that a product is properly configured (<code>&lt;first_product_name&gt;</code>, for example), execute the following:<BR>
-<pre class="prettyprint">
-  . build/envsetup.sh
-  make PRODUCT-&lt;first_product_name&gt;-user
-</pre>
-<p>You should find new build binaries located in <code>/out/target/product/&lt;board_name&gt;</code>.
-
-
-<a name="androidBuildNewFileTree"></a><h3>New Product File Tree</h3>
-
-<p>The file tree below illustrates what your own system should look like after completing the steps above.</p>
-<p>
-<ul>
-  <li><code>&lt;company_name&gt;</code></li>
-  <ul>
-    <li><code>&lt;board_name&gt;</code></li>
-    <ul>
-      <li><code>Android.mk</code></li>
-      <li><code>product_config.mk</code></li>
-      <li><code>system.prop</code></li>
-    </ul>
-    <li><code>products</code></li>
-    <ul>
-      <li><code>AndroidProducts.mk</code></li>
-      <li><code>&lt;first_product_name&gt;.mk</code></li>
-      <li><code>&lt;second_product_name&gt;.mk</code></li>
-    </ul>
-  </ul>
-</ul>
-</p>
-
-<a name="androidBuildSystemProductDefFiles"></a><h3>Product Definition Files</h3>
-
-<p>Product-specific variables are defined in product definition files. A product definition file can inherit from other product definition files, thus reducing the need to copy and simplifying maintenance.</p>
-<p>Variables maintained in a product definition files include:</p>
-<p>
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Parameter</th>
-  <th scope="col">Description</th>
-  <th scope="col">Example</th>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_NAME</td>
-   <td valign="top">End-user-visible name for the overall product. Appears in the "About the phone" info.</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_MODEL</td>
-   <td valign="top">End-user-visible name for the end product</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_LOCALES</td>
-   <td valign="top">A space-separated list of two-letter language code, two-letter country code pairs that describe several settings for the user, such as the UI language and time, date and currency formatting. The first locale listed in PRODUCT_LOCALES is is used if the locale has never been set before.</td>
-   <td valign="top"><code>en_GB de_DE es_ES fr_CA</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_PACKAGES</td>
-   <td valign="top">Lists the APKs to install.</td>
-   <td valign="top"><code>Calendar Contacts</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_DEVICE</td>
-   <td valign="top">Name of the industrial design</td>
-   <td valign="top"><code>dream</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_MANUFACTURER</td>
-   <td valign="top">Name of the manufacturer</td>
-   <td valign="top"><code>acme</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_BRAND</td>
-   <td valign="top">The brand (e.g., carrier) the software is customized for, if any</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_PROPERTY_OVERRIDES</td>
-   <td valign="top">List of property assignments in the format "key=value"</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_COPY_FILES</td>
-   <td valign="top">List of words like <code>source_path:destination_path</code>. The file at the source path should be copied to the destination path when building this product. The rules for the copy steps are defined in config/Makefile</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_OTA_PUBLIC_KEYS</td>
-   <td valign="top">List of OTA public keys for the product</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_POLICY</td>
-   <td valign="top">Indicate which policy this product should use</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_PACKAGE_OVERLAYS</td>
-   <td valign="top">Indicate whether to use default resources or add any product specific overlays</td>
-   <td valign="top"><code>vendor/acme/overlay</code></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_CONTRIBUTORS_FILE</td>
-   <td valign="top">HTML file containing the contributors to the project.</td>
-   <td valign="top"></td>
- </tr>
- <tr>
-   <td valign="top">PRODUCT_TAGS</td>
-   <td valign="top">list of space-separated words for a given product</td>
-   <td valign="top"></td>
- </tr>
-</table>
-
-</P>
-<p>The snippet below illustrates a typical product definition file.</p>
-<pre class="prettyprint">
-$(call inherit-product, build/target/product/generic.mk)
-
-#Overrides
-PRODUCT_NAME := MyDevice
-PRODUCT_MANUFACTURER := acme
-PRODUCT_BRAND := acme_us
-PRODUCT_LOCALES := en_GB es_ES fr_FR
-PRODUCT_PACKAGE_OVERLAYS := vendor/acme/overlay
-
-</pre>
-
-
diff --git a/pdk/docs/porting/build_system.jd b/pdk/docs/porting/build_system.jd
deleted file mode 100755
index 686fba0..0000000
--- a/pdk/docs/porting/build_system.jd
+++ /dev/null
@@ -1,270 +0,0 @@
-page.title=Android Build System
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidBuildSystemOverview">Understanding the makefile</a></li>
-<li><a href="#androidBuildSystemLayers">Layers</a></li>
-<li><a href="#androidSourceSetupBuildingCodeBase">Building the Android Platform</a></li>
-<li><a href="#androidSourceSetupBuildingKernel">Building the Android Kernel</a></li>
-<li><a href="#androidBuildVariants">Build Variants</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android uses a custom build system to generate tools, binaries, and documentation. This document provides an overview of Android's build system and instructions for doing a simple build. </p>
-<p>Android's build system is make based and requires a recent version of GNU Make (note that Android uses advanced features of GNU Make that may not yet appear on the GNU Make web site). Before continuing, check your version of make by running <code>% make -v</code>. If you don't have version 3.80 or greater, you need to <a href="http://www.gnu.org/software/make/">upgrade your version of make</a>. </p>
-
-
-
-
-<a name="androidBuildSystemOverview"></a><h4>Understanding the makefile</h4>
-
-<p>A makefile defines how to build a particular application. Makefiles typically include all of the following elements:</p>
-<ol>
-  <li>Name: Give your build a name (<code>LOCAL_MODULE := &lt;build_name&gt;</code>).</li>
-  <li>Local Variables: Clear local variables with CLEAR_VARS  (<code>include $(CLEAR_VARS)</code>).</li>
-  <li>Files: Determine which files your application depends upon (<code>LOCAL_SRC_FILES := main.c</code>).</li>
-  <li>Tags: Define tags, as necessary (<code>LOCAL_MODULE_TAGS := eng development</code>).</li>
-  <li>Libraries: Define whether your application links with other libraries (<code>LOCAL_SHARED_LIBRARIES := cutils</code>).</li>
-  <li>Template file: Include a template file to define underlining make tools for a particular target (<code>include $(BUILD_EXECUTABLE)</code>).</li>
-</ol>
-
-<p>The following snippet illustrates a typical makefile.</p>
-<pre class="prettyprint">
-LOCAL_PATH := $(my-dir)
-include $(CLEAR_VARS)
-LOCAL_MODULE := &lt;buil_name&gt;
-LOCAL_SRC_FILES := main.c
-LOCAL_MODULE_TAGS := eng development
-LOCAL_SHARED_LIBRARIES := cutils
-include $(BUILD_EXECUTABLE)
-(HOST_)EXECUTABLE, (HOST_)JAVA_LIBRARY, (HOST_)PREBUILT, (HOST_)SHARED_LIBRARY,
-  (HOST_)STATIC_LIBRARY, PACKAGE, JAVADOC, RAW_EXECUTABLE, RAW_STATIC_LIBRARY,
-  COPY_HEADERS, KEY_CHAR_MAP
-</pre>
-<p>The snippet above includes artificial line breaks to maintain a print-friendly document.</p>
-
-
-<a name="androidBuildSystemLayers"></a><h4>Layers</h4>
-
-<p>The build hierarchy includes the abstraction layers described in the table below.</p>
-
-<p>Each layer relates to the one above it in a one-to-many relationship. For example, an arch can have more than one board and each board can have more than one device. You may define an element in a given layer as a specialization of an element in the same layer, thus eliminating copying and simplifying maintenance.</p>
- 
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Layer</th>
-  <th  scope="col">Example</th>
-  <th  scope="col">Description</th>
- </tr>
-  <tr>
-    <td valign="top">Product</td>
-    <td valign="top">myProduct, myProduct_eu, myProduct_eu_fr, j2, sdk</td>
-    <td valign="top">The product layer defines a complete specification of a shipping product, defining which modules to build and how to configure them. You might offer a device in several different versions based on locale, for example, or on features such as a camera. </td>
-  </tr>
-  <tr>
-    <td valign="top">Device</td>
-    <td valign="top">myDevice, myDevice_eu, myDevice_eu_lite</td>
-    <td valign="top">The device layer represents the physical layer of plastic on the device. For example, North American devices probably include QWERTY keyboards whereas devices sold in France probably include AZERTY keyboards. Peripherals typically connect to the device layer. </td>
-  </tr>
-  <tr>
-    <td valign="top">Board</td>
-    <td valign="top">sardine, trout, goldfish </td>
-    <td valign="top">The board layer represents the bare schematics of a product. You may still connect peripherals to the board layer. </td>
-  </tr>
-  <tr>
-    <td valign="top">Arch</td>
-    <td valign="top">arm (arm5te) (arm6), x86, 68k </td>
-    <td valign="top">The arch layer describes the processor running on your board. </td>
-  </tr>
-</table>
-
-<a name="androidSourceSetupBuildingCodeBase"></a><h3>Building the Android Platform</h3>
-
-<p>This section describes how to build the default version of Android. Once you are comfortable with a generic build, then you can begin to modify Android for your own target device.</p>
-
-
-<a name="androidSourceSetupBuildingDeviceCodeBase"></a><h4>Device Code</h4>
-
-<p>To do a generic build of android, source <code>build/envsetup.sh</code>, which contains necessary variable and function definitions, as described below.</p>
-<pre class="prettyprint">
-% cd $TOP
-
-% . build/envsetup.sh
-
-# pick a configuration using choosecombo
-% choosecombo
-
-% make -j4 PRODUCT-generic-user
-</pre>
-<p>You can also replace user with eng for a debug engineering build:</p>
-
-<pre class="prettyprint">
-% make -j4 PRODUCT-generic-eng
-</pre>
-
-<p>These <a href="#androidBuildVariants">Build Variants</a> differ in terms of debug options and packages installed. 
- 
-
-<a name="androidBuildingCleaning"></a><h4>Cleaning Up</h4>
-
-<p>Execute <code>% m clean</code> to clean up the binaries you just created. You can also execute <code>% m clobber</code> to get rid of the binaries of all combos. <code>% m clobber</code> is equivalent to removing the <code>//out/</code> directory where all generated files are stored.</p>
-
-
-<a name="androidBuildingSpeeding"></a><h4>Speeding Up Rebuilds</h4>
-
-<p> The binaries of each combo are stored as distinct sub-directories of <code>//out/</code>, making it possible to quickly switch between combos without having to recompile all sources each time. </p>
-<p> However, performing a clean rebuild is necessary if the build system doesn't catch changes to environment variables or makefiles. If this happens often, you should define the <code>USE_CCACHE</code> environment variable as shown below: </p>
-<pre class="prettyprint">
-% export USE_CCACHE=1
-</pre>
-<p>Doing so will force the build system to use the ccache compiler cache tool, which reduces recompiling all sources.</p>
-
-<p><code>ccache</code> binaries are provided in <code>//prebuilt/...</code> and don't need to get installed on your system.</p>
-
-
-<a name="androidBuildingTroubleshooting"></a><h4>Troubleshooting</h4>
-
-<p>The following error is likely caused by running an outdated version of Java.</p>
-<pre class="prettyprint">
-device Dex: core  UNEXPECTED TOP-LEVEL ERROR:
-java.lang.NoSuchMethodError: method java.util.Arrays.hashCode with
-signature ([Ljava.lang.Object;)I was not found.
-  at com.google.util.FixedSizeList.hashCode(FixedSizeList.java:66)
-  at com.google.rop.code.Rop.hashCode(Rop.java:245)
-  at java.util.HashMap.hash(libgcj.so.7)
-[...]
-</pre>
-<p><code>dx</code> is a Java program that uses facilities first made available in Java version 1.5. Check your version of Java by executing <code>% java -version</code> in the shell you use to build. You should see something like:</p>
-<pre class="prettyprint">
-java version "1.5.0_07"
-Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_07-164)
-Java HotSpot(TM) Client VM (build 1.5.0_07-87, mixed mode, sharing)
-</pre>
-<p>If you do have Java 1.5 or later and your receive this error, verify that you have properly updated your <code>PATH</code> variable.</p>
-
-
-<a name="androidSourceSetupBuildingKernel"></a><h3>Building the Android Kernel</h3>
-
-<p>This section describes how to build Android's default kernel. Once you are comfortable with a generic build, then you can begin to modify Android drivers for your own target device.</p>
-
-
-<p>To build the kernel base, switch to the device directory (<code>/home/joe/android/device</code>) in order to establish variables and run:
-<pre class="prettyprint">
-% . build/envsetup.sh
-% partner_setup generic
-</pre>
-<p>Then switch to the kernel directory <code>/home/joe/android/kernel</code>.
-
-
-<a name="androidSourceSetupBuildingKernelCheckingBranch"></a><h4>Checking Out a Branch</h4>
-
-<p>The default branch is always <code>android</code>. To check out a different branch, execute the following:</p>
-
-<pre class="prettyprint">
-% git checkout --track -b android-mydevice origin/android-mydevice
-  //Branch android-mydevice set up to track remote branch
-% refs/remotes/origin/android-mydevice.
-  //Switched to a new branch "android-mydevice"
-</pre>
-
-<p>To simplify code management, give your local branch the same name as the remote branch it is tracking (as illustrated in the snippet above). Switch between branches by executing <code>% git checkout &lt;branchname&gt;</code>.</p>
-
-
-<a name="androidSourceSetupBuildingKernelBranchLocation"></a><h4>Verifying Location</h4>
-
-<p>Find out which branches exist (both locally and remotely) and which one is active (marked with an asterisk) by executing the following:</p>
-<pre class="prettyprint">
-% git branch -a
-  android
-* android-mydevice
-  origin/HEAD
-  origin/android
-  origin/android-mydevice
-  origin/android-mychipset
-</pre>
-<p>To only see local branches, omit the <code>-a</code> flag.</p> 
-
-
-<a name="androidSourceSetupBuildingKernelBuild"></a><h4>Building the Kernel</h4>
-
-<p>To build the kernel, execute:</p>
-<pre class="prettyprint">
-% make -j4
-</pre>
-
-<a name="androidBuildVariants"></a><h3>Build Variants</h3>
-
-<p> 
-When building for a particular product, it's often useful to have minor
-variations on what is ultimately the final release build.  These are the
-currently-defined build variants:
-</p> 
- 
-<table border=1> 
-<tr> 
-    <td> 
-        <code>eng <code> 
-    </td> 
-    <td> 
-        This is the default flavor. A plain <code>make</code> is the
-        same as <code>make eng</code>.
-        <ul> 
-        <li>Installs modules tagged with: <code>eng</code>, <code>debug</code>,
-            <code>user</code>, and/or <code>development</code>.
-        <li>Installs non-APK modules that have no tags specified.
-        <li>Installs APKs according to the product definition files, in
-            addition to tagged APKs.
-        <li><code>ro.secure=0</code> 
-        <li><code>ro.debuggable=1</code> 
-        <li><code>ro.kernel.android.checkjni=1</code> 
-        <li><code>adb</code> is enabled by default.
-    </td> 
-</tr> 
-<tr> 
-    <td> 
-        <code>user <code> 
-    </td> 
-    <td> 
-        <code>make user</code>
-        <p> 
-        This is the flavor intended to be the final release bits.
-        <ul> 
-        <li>Installs modules tagged with <code>user</code>.</li>
-        <li>Installs non-APK modules that have no tags specified.</li>
-        <li>Installs APKs according to the product definition files; tags
-            are ignored for APK modules.</li>
-        <li><code>ro.secure=1</code> </li>
-        <li><code>ro.debuggable=0</code> </li>
-        <li><code>adb</code> is disabled by default.</li>
-    </td> 
-</tr> 
-<tr> 
-    <td> 
-        <code>userdebug <code> 
-    </td> 
-    <td> 
-        <code>make userdebug</code>
-        <p> 
-        The same as <code>user</code>, except:
-        <ul> 
-        <li>Also installs modules tagged with <code>debug</code>.
-        <li><code>ro.debuggable=1</code> 
-        <li><code>adb</code> is enabled by default.
-    </td> 
-</tr> 
-</table> 
- 
-<p> 
-If you build one flavor and then want to build another, you should run
-<code>make installclean</code> between the two makes to guarantee that
-you don't pick up files installed by the previous flavor.  <code>make
-clean</code> will also suffice, but it takes a lot longer.
-</p> 
diff --git a/pdk/docs/porting/camera.jd b/pdk/docs/porting/camera.jd
deleted file mode 100755
index 0571fb5..0000000
--- a/pdk/docs/porting/camera.jd
+++ /dev/null
@@ -1,76 +0,0 @@
-page.title=Camera
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidCameraBuildingDriver">Building a Camera Library</a></li>
-<li><a href="#androidCameraSequenceDiagrams">Sequence Diagrams</a></li>
-<li><a href="#androidCameraInterfaceIntro">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android's camera subsystem connects the camera application to the application framework and user space libraries, which in turn communicate with the camera hardware layer that operates the physical camera.</p>
-<p>The diagram below illustrates the structure of the camera subsystem.</p>
-<p><img src="images/camera_video2.gif"></p>
-
-
-<a name="androidCameraBuildingDriver"></a><h3>Building a Camera Library</h3>
-
-<p>To implement a camera driver, create a shared library that implements the interface defined in <code>CameraHardwareInterface.h</code>. You must name your shared library <code>libcamera.so</code> so that it will get loaded from <code>/system/lib</code> at runtime.  Place libcamera sources and <code>Android.mk</code> in <code>vendor/acme/chipset_or_board/libcamera/</code>.</p>
-<p>The following stub <code>Android.mk</code> file ensures that <code>libcamera</code> compiles and links to the appropriate libraries:</p>
-<pre class="prettify">
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libcamera
-
-LOCAL_SHARED_LIBRARIES := \
-    libutils \
-    librpc \
-    liblog
-
-LOCAL_SRC_FILES += MyCameraHardware.cpp
-
-LOCAL_CFLAGS +=
-
-LOCAL_C_INCLUDES +=
-
-LOCAL_STATIC_LIBRARIES += \
-    libcamera-common \
-    libclock-rpc \
-    libcommondefs-rpc
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
-
-
-<a name="androidCameraSequenceDiagrams"></a><h3>Sequence Diagrams</h3>
-
-
-
-<a name="androidCameraSequenceDiagramsPreview"></a><h4>Preview</h4>
-
-<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to preview.</p>
-<img src="images/cameraPreview.jpg">
-
-
-<a name="androidCameraSequenceDiagramsTakePic"></a><h4>Taking a Picture</h4>
-
-<p>The following diagram illustrates the sequence of function calls and actions necessary for your camera to take a picture.</p>
-<img src="images/cameraTakePicture.jpg">
-
-
-<a name="androidCameraInterfaceIntro"></a><h3>Interface</h3>
-
-
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="camera.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="CameraHardwareInterface_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/porting/customization.jd b/pdk/docs/porting/customization.jd
deleted file mode 100755
index 7c11a8e..0000000
--- a/pdk/docs/porting/customization.jd
+++ /dev/null
@@ -1,321 +0,0 @@
-page.title=Customization
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidBootScreenCustomization">Boot Screen Customization</a></li>
-<li><a href="#androidNetCustPlat">Network Customization Platform</a></li>
-<li><a href="#androidCustomizingPre-LoadedApps">Customizing pre-loaded applications</a></li> 
-<li><a href="#androidBrowserBookmarks">Customizing browser bookmarks</a></li> 
-<li><a href="#androidEmailProviderCustomization">Email Provider Customization</a></li>
-<li><a href="#androidThemes">Platform Themes</a></li>
-</ul>
-</div>
-</div>
-
-
- 
-<a name="androidBootScreenCustomization"></a><h3>Boot Screen Customization</h3> 
- 
-<p>At startup, Android displays a splashscreen image while booting the device. Do the following if you wish to modify the default splash screen:</p> 
-<p> 
-<ol><li>Create a 320x480 image, <code>splashscreen.jpg</code> in this example.</li> 
-<li>Using ImageMagick, convert your .jpg file to .r format:
-<pre class="prettify"> 
-convert screen.jpg screen.r
-</pre> 
-</li> 
-<li>Use the rgb2565 application to convert the image to 565 format:
-<pre class="prettify"> 
-rgb2565 < screen.rgb > screen.565
-</pre> 
-</li> 
-<li>Use fastboot to flash the image to the device:
-<pre class="prettify"> 
-fastboot flash splash1 screen.565
-</pre> 
-</li> 
-</ol> 
- 
- 
-<a name="androidNetCustPlat"></a><h3>Network Customization Platform</h3> 
- 
- 
- 
-<a name="androidNetCustPlatNetworkConfig"></a><h4>Network Configuration</h4> 
- 
-<p>Android stores network configurations as a resource that gets compiled into binary at form at build time. The XML representation of this resource is located at <code>//android/frameworks/base/core/res/res/xml/apns.xml</code>. This file does not include any configured APNs. You should not modify this file, but instead configure APNs by product at build time (see Build-time APN Configuration below).</p> 
-<p>Each network configuration is stored in an XML element following this syntax:</p> 
-<pre class="prettify"> 
-&lt;apn carrier="T-Mobile US"
-         mcc="310"
-         mnc="260"
-         apn=" wap.voicestream.com"
-         user="none"
-         server="*"
-         password="none"
-         proxy=" 216.155.165.50"
-         port="8080"
-         mmsc="http://216.155.174.84/servlets/mms"
-/&gt;
-</pre> 
- 
- 
-<a name="androidNetCustPlatAPNConfig"></a><h4>Build-time APN configuration</h4> 
- 
-<p>To set the APN configuration for a particular product target, add an <code>apns-conf.xml</code> file to the product configuration (do not modify the default platform APNs). This allows multiple products, all with different APNs, to be built off the same code base.  </p> 
- 
-<p>To configure APNs at the product level, add a line to the product configuration file like the example below (<code>vendor/&lt;vendor_name&gt;/products/myphone-us.mk</code>): </p> 
- 
-<pre class="prettify"> 
-PRODUCT_COPY_FILES := vendor/acme/etc/apns-conf-us.xml:system/etc/apns-conf.xml
-</pre> 
- 
- 
- 
-<a name="androidNetCustPlatAPNRunTime"></a><h4>APN configuration at run time</h4> 
- 
-<p>At runtime, the Android reads APNs from the following file:</p> 
-<pre class="prettify"> 
-system/etc/apns-conf.xml
-</pre> 
- 
-<p>Android supports the following run-time network configuration methods to choose the appropriate APN from the list of configured APNs:</p> 
-<p><ul> 
-<li><b>Automatic Configuration</b>: At boot time, Android determines the correct network configuration based on the MCC and MNC from the SIM card and automatically configure all network settings.</li> 
-<li><b>Manual Configuration</b>: The platform will also support runtime (user) manual selection of network settings by name, for example, "Company Name US," and will support manual network configuration entry.</li> 
-<li><b>WAP / SMS Push Configuration</b>: The network configurations are standard Android resources. You can upgrade a resource at runtime by installing a new system resource APK package. It will be possible to develop a network configuration service which listens to a specific binary SMS port for binary SMS messages containing the network configurations.  NOTE: The implementation will likely be network operator dependent due to inconsistent SMS ports, binary SMS formats, etc.</li> 
-</ul> 
- 
- 
- 
- 
-<a name="androidCustomizingPre-LoadedApps"></a><h3>Customizing pre-loaded applications</h3> 
- 
-<p>To customize the list of Android packages for a particular product (applications, input methods, providers, services, etc.), set <code>PRODUCT_PACKAGES</code> property in the product configuration, as illustrated below:</p> 
- 
-<pre class="prettify"> 
-PRODUCT_PACKAGES := \
- &lt;company_name&gt;Mail \
-    &lt;company_name&gt;IM \
- &lt;company_name&gt;HomeScreen \
- &lt;company_name&gt;Maps \
- &lt;company_name&gt;SystemUpdater
-</pre> 
- 
-<p>Package names should correspond to the <code>LOCAL_PACKAGE_NAME</code> specified for each package's build target. For example, the <code>Android.mk</code> build target for &lt;company_name&gt;Mail, referenced above, could look like this:
- 
-<pre class="prettify"> 
-# Build the &lt;company_name&gt;Mail application
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
- 
-LOCAL_MODULE_TAGS := user development
- 
-LOCAL_SRC_FILES := $(call all-java-files-under,src,tests)
- 
-LOCAL_STATIC_JAVA_LIBRARIES := &lt;company_name&gt;login-client
- 
-# Specify the package name
-LOCAL_PACKAGE_NAME := &lt;company_name&gt;Mail
- 
-# Specify the certificate used to sign the application
-LOCAL_CERTIFICATE := vendor/&lt;company_name&gt;/certs/app
- 
-include $(BUILD_PACKAGE)
- 
-# Build the login client static library
-include $(LOCAL_PATH)/client/Android.mk
-</pre> 
- 
-<p>Note that the home screen is just an Android application that can be replaced entirely or customized by changing source code and application resources (Java source, layouts, etc.).</p> 
- 
- 
- 
-<a name="androidBrowserBookmarks"></a><h3>Customizing browser bookmarks</h3> 
- 
-<p>Browser bookmarks are stored as string resources in the Browser application: <code>//android/packages/apps/Browser/res/values/strings.xml</code>.  Bookmarks are defined as simple value string arrays called &quot;bookmarks&quot;.  Each bookmark entry is stored as a pair of array values; the first represents the bookmark name and the second the bookmark URL.  For example:</p> 
-<pre class="prettify"> 
-&lt;!-- Bookmarks --&gt;
-&lt;string-array name=&quot;bookmarks&quot;&gt;
-    &lt;item&gt;Google&lt;/item&gt;
-    &lt;item&gt;http://www.google.com/&lt;/item&gt;
-    &lt;item&gt;Yahoo!&lt;/item&gt;
-    &lt;item&gt;http://www.yahoo.com/&lt;/item&gt;
-    &lt;item&gt;MSN&lt;/item&gt;
-    &lt;item&gt;http://www.msn.com/&lt;/item&gt;
-    &lt;item&gt;MySpace&lt;/item&gt;
-    &lt;item&gt;http://www.myspace.com/&lt;/item&gt;
-    &lt;item&gt;Facebook&lt;/item&gt;
-    &lt;item&gt;http://www.facebook.com/&lt;/item&gt;
-    &lt;item&gt;Wikipedia&lt;/item&gt;
-    &lt;item&gt;http://www.wikipedia.org/&lt;/item&gt;
-    &lt;item&gt;eBay&lt;/item&gt;
-    &lt;item&gt;http://www.ebay.com/&lt;/item&gt;
-    &lt;item&gt;CNN&lt;/item&gt;
-    &lt;item&gt;http://www.cnn.com/&lt;/item&gt;
-    &lt;item&gt;New York Times&lt;/item&gt;
-    &lt;item&gt;http://www.nytimes.com/&lt;/item&gt;
-    &lt;item&gt;ESPN&lt;/item&gt;
-    &lt;item&gt;http://espn.go.com/&lt;/item&gt;
-    &lt;item&gt;Amazon&lt;/item&gt;
-    &lt;item&gt;http://www.amazon.com/&lt;/item&gt;
-    &lt;item&gt;Weather Channel&lt;/item&gt;
-    &lt;item&gt;http://www.weather.com/&lt;/item&gt;
-    &lt;item&gt;BBC&lt;/item&gt;
-    &lt;item&gt;http://www.bbc.co.uk/&lt;/item&gt;
-&lt;/string-array&gt;
-</pre> 
-<p>Like and Android application resource, the platform will load alternate resources based on the platform configuration values.  See <a href="http://developer.android.com/guide/topics/resources/resources-i18n.html">Resources and Internationalization</a> in the Android SDK for details.  To configure bookmarks for a specific mobile network operator, place your customized bookmarks in a separate <code>strings.xml</code> file and place it under a Mobile Network Code (MNO) specific resource folder.  For example, <code>Browser/res/values-mccXXX-mncYYY/strings.xml</code> where XXX and YYY represent the three-digit MCC and two to three digit MNC values.</p> 
-<p>Android loads any configuration-specific resources as override values for the default values, so it is only necessary to include the bookmarks string-array values in this file.</p> 
- 
- 
- 
-<a name="androidEmailProviderCustomization"></a>
-<h3>Email Provider Customization</h3> 
- 
-<p>The default email provider settings are stored as string resources in the Email application (<code>//android/packages/apps/Email/res/xml/providers.xml</code>) as illustrated below.</p> 
-<p>&lt;providers&gt;</p> 
-<pre class="prettify"> 
-&lt;!-- Gmail variants --&gt;
-    &lt;provider id=&quot;gmail&quot; label=&quot;Gmail&quot; domain=&quot;gmail.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.gmail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.gmail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;googlemail&quot; label=&quot;Google Mail&quot; domain=&quot;googlemail.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.googlemail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.googlemail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;google&quot; label=&quot;Google&quot; domain=&quot;google.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.gmail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.gmail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;android&quot; label=&quot;Android&quot; domain=&quot;android.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.gmail.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.gmail.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;</p> 
- 
-    &lt;!-- Common US providers --&gt;
-    
-    &lt;provider id=&quot;aim&quot; label=&quot;AIM&quot; domain=&quot;aim.com&quot;&gt;
-        &lt;incoming uri=&quot;imap://imap.aim.com&quot; label=&quot;IMAP&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.aim.com:587&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;aol&quot; label=&quot;AOL&quot; domain=&quot;aol.com&quot;&gt;
-        &lt;incoming uri=&quot;imap://imap.aol.com&quot; label=&quot;IMAP&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.aol.com:587&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;comcast&quot; label=&quot;Comcast&quot; domain=&quot;comcast.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://mail.comcast.net&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.comcast.net&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;compuserve&quot; label=&quot;CompuServe&quot; domain=&quot;cs.com&quot;&gt;
-        &lt;incoming uri=&quot;imap://imap.cs.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.cs.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;dotmac&quot; label=&quot;.Mac&quot; domain=&quot;mac.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+tls://mail.mac.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://smtp.mac.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;earthlink&quot; label=&quot;Earthlink&quot; domain=&quot;earthlink.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.earthlink.net&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtpauth.earthlink.net:587&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;juno&quot; label=&quot;Juno&quot; domain=&quot;juno.com&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.juno.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.juno.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;live&quot; label=&quot;Windows Live Hotmail Plus&quot; domain=&quot;live.com&quot; note=&quot;@string/provider_note_live&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop3.live.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls+://smtp.live.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;hotmail&quot; label=&quot;Windows Live Hotmail Plus&quot; domain=&quot;hotmail.com&quot; note=&quot;@string/provider_note_live&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop3.live.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls+://smtp.live.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;msn&quot; label=&quot;Windows Live Hotmail Plus&quot; domain=&quot;msn.com&quot; note=&quot;@string/provider_note_live&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop3.live.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls+://smtp.live.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;mobileme&quot; label=&quot;MobileMe&quot; domain=&quot;me.com&quot;&gt;
-        &lt;incoming uri=&quot;imap+tls://mail.me.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://smtp.me.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;netzero&quot; label=&quot;NetZero&quot; domain=&quot;netzero.com&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.netzero.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.netzero.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;sbcglobal&quot; label=&quot;SBC Global&quot; domain=&quot;sbcglobal.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.sbcglobal.yahoo.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.sbcglobal.yahoo.com&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;verizon&quot; label=&quot;Verizon&quot; domain=&quot;verizon.net&quot;&gt;
-        &lt;incoming uri=&quot;pop3://incoming.verizon.net&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://outgoing.verizon.net&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;yahoo&quot; label=&quot;Yahoo Plus&quot; domain=&quot;yahoo.com&quot; note=&quot;@string/provider_note_yahoo&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://plus.pop.mail.yahoo.com&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://plus.smtp.mail.yahoo.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-  
-    &lt;!-- Common UK providers --&gt;
-    
-    &lt;provider id=&quot;aol-uk&quot; label=&quot;AOL&quot; domain=&quot;aol.co.uk&quot;&gt;
-        &lt;incoming uri=&quot;imap+ssl+://imap.uk.aol.com&quot; label=&quot;IMAP&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.uk.aol.com&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;bt&quot; label=&quot;BT Internet&quot; domain=&quot;btinternet.com&quot;&gt;
-        &lt;incoming uri=&quot;pop3://mail.btinternet.com&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://mail.btinternet.com&quot; username=&quot;&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;tiscali&quot; label=&quot;Tiscali&quot; domain=&quot;tiscali.co.uk&quot;&gt;
-        &lt;incoming uri=&quot;pop3://pop.tiscali.co.uk&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtp.tiscali.co.uk&quot; username=&quot;$email:wq&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;yahoo-uk&quot; label=&quot;Yahoo&quot; domain=&quot;yahoo.co.uk&quot; note=&quot;@string/provider_note_yahoo_uk&quot;&gt;
-        &lt;incoming uri=&quot;pop3+ssl+://pop.mail.yahoo.co.uk&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl+://smtp.mail.yahoo.co.uk&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-    
-    &lt;!-- Common Germany providers --&gt;
-    
-    &lt;provider id=&quot;freenet&quot; label=&quot;Freenet&quot; domain=&quot;freenet.de&quot;&gt;
-        &lt;incoming uri=&quot;pop3://mx.freenet.de&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+ssl://mx.freenet.de&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;gmx&quot; label=&quot;GMX&quot; domain=&quot;gmx.de&quot;&gt;
-        &lt;incoming uri=&quot;pop3+tls://pop.gmx.net&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://mail.gmx.net&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;T-Online&quot; label=&quot;T-Online&quot; domain=&quot;t-online.de&quot; note=&quot;@string/provider_note_t_online&quot;&gt;
-        &lt;incoming uri=&quot;pop3://popmail.t-online.de&quot; username=&quot;$email&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp://smtpmail.t-online.de&quot; username=&quot;$email&quot;/&gt;
-    &lt;/provider&gt;
-    &lt;provider id=&quot;web.de&quot; label=&quot;Web.de&quot; domain=&quot;web.de&quot;&gt;
-        &lt;incoming uri=&quot;pop3+tls://pop3.web.de&quot; username=&quot;$user&quot;/&gt;
-        &lt;outgoing uri=&quot;smtp+tls://smtp.web.de&quot; username=&quot;$user&quot;/&gt;
-    &lt;/provider&gt;
-&lt;/providers&gt;
-</pre> 
-<p>As with all Android application resources, the platform will load alternate resources based on the platform configuration values.  See <a href="http://developer.android.com/guide/topics/resources/resources-i18n.html">Resources and Internationalization</a> in the Android SDK for details.  To configure email providers for a specific mobile network operator, place the customized providers in a separate <code>providers.xml</code> file and place it under  a Mobile Network Code (MNO) specific resource folder.  For example, <code>Email/res/xml-mccXXX-mncYYY/providers.xml</code> where XXX and YYY represent the three-digit MCC and two to three digit MNC values.</p> 
- 
- 
- 
-<a name="androidThemes"></a><h3>Platform Themes</h3> 
- 
- 
- 
-<a name="androidThemesStyles"></a><h4>Themes and Styles</h4> 
- 
-<p>System level styles are defined in <code>//android/framework/base/core/res/res/values/styles.xml</code>.</p> 
- 
- 
-<a name="androidThemesAnimations"></a><h4>Animations</h4> 
- 
-<p>Android supports configurable animations for window and view transitions.  System-level animations are defined in XML in global resource files located in <code>//android/framework/base/core/res/res/anim/</code>.</p> 
- 
diff --git a/pdk/docs/porting/dalvik.jd b/pdk/docs/porting/dalvik.jd
deleted file mode 100755
index 50b7499..0000000
--- a/pdk/docs/porting/dalvik.jd
+++ /dev/null
@@ -1,355 +0,0 @@
-page.title=Dalvik
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#dalvikCoreLibraries">Core Libraries</a></li>
-<li><a href="#dalvikJNICallBridge">JNI Call Bridge</a></li>
-<li><a href="#dalvikInterpreter">Interpreter</a></li>
-</ul>
-</div>
-</div>
-
-<p> 
-The Dalvik virtual machine is intended to run on a variety of platforms.
-The baseline system is expected to be a variant of UNIX (Linux, BSD, Mac
-OS X) running the GNU C compiler.  Little-endian CPUs have been exercised
-the most heavily, but big-endian systems are explicitly supported.
-</p><p> 
-There are two general categories of work: porting to a Linux system
-with a previously unseen CPU architecture, and porting to a different
-operating system.  This document covers the former.
-</p>
- 
- 
-<a name="dalvikCoreLibraries"></a><h3>Core Libraries</h3> 
- 
-<p> 
-The native code in the core libraries (chiefly <code>dalvik/libcore</code>,
-but also <code>dalvik/vm/native</code>) is written in C/C++ and is expected
-to work without modification in a Linux environment.  Much of the code
-comes directly from the Apache Harmony project.
-</p><p> 
-The core libraries pull in code from many other projects, including
-OpenSSL, zlib, and ICU.  These will also need to be ported before the VM
-can be used.
-</p> 
- 
- 
-<a name="dalvikJNICallBridge"></a><h3>JNI Call Bridge</h3> 
- 
-<p> 
-Most of the Dalvik VM runtime is written in portable C.  The one
-non-portable component of the runtime is the JNI call bridge.  Simply put,
-this converts an array of integers into function arguments of various
-types, and calls a function.  This must be done according to the C calling
-conventions for the platform.  The task could be as simple as pushing all
-of the arguments onto the stack, or involve complex rules for register
-assignment and stack alignment.
-</p><p> 
-To ease porting to new platforms, the <a href="http://sourceware.org/libffi/"> 
-open-source FFI library</a> (Foreign Function Interface) is used when a
-custom bridge is unavailable.  FFI is not as fast as a native implementation,
-and the optional performance improvements it does offer are not used, so
-writing a replacement is a good first step.
-</p><p> 
-The code lives in <code>dalvik/vm/arch/*</code>, with the FFI-based version
-in the "generic" directory.  There are two source files for each architecture.
-One defines the call bridge itself:
-</p><p><blockquote> 
-<code>void dvmPlatformInvoke(void* pEnv, ClassObject* clazz, int argInfo,
-int argc, const u4* argv, const char* signature, void* func,
-JValue* pReturn)</code> 
-</blockquote></p><p> 
-This will invoke a C/C++ function declared:
-</p><p><blockquote> 
-    <code>return_type func(JNIEnv* pEnv, Object* this [, <i>args</i>])<br></code> 
-</blockquote>or (for a "static" method):<blockquote> 
-    <code>return_type func(JNIEnv* pEnv, ClassObject* clazz [, <i>args</i>])</code> 
-</blockquote></p><p> 
-The role of <code>dvmPlatformInvoke</code> is to convert the values in
-<code>argv</code> into C-style calling conventions, call the method, and
-then place the return type into <code>pReturn</code> (a union that holds
-all of the basic JNI types).  The code may use the method signature
-(a DEX "shorty" signature, with one character for the return type and one
-per argument) to determine how to handle the values.
-</p><p> 
-The other source file involved here defines a 32-bit "hint".  The hint
-is computed when the method's class is loaded, and passed in as the
-"argInfo" argument.  The hint can be used to avoid scanning the ASCII
-method signature for things like the return value, total argument size,
-or inter-argument 64-bit alignment restrictions.
-</p> 
- 
-<a name="dalvikInterpreter"></a><h3>Interpreter</h3> 
- 
-<p> 
-The Dalvik runtime includes two interpreters, labeled "portable" and "fast".
-The portable interpreter is largely contained within a single C function,
-and should compile on any system that supports gcc.  (If you don't have gcc,
-you may need to disable the "threaded" execution model, which relies on
-gcc's "goto table" implementation; look for the THREADED_INTERP define.)
-</p><p> 
-The fast interpreter uses hand-coded assembly fragments.  If none are
-available for the current architecture, the build system will create an
-interpreter out of C "stubs".  The resulting "all stubs" interpreter is
-quite a bit slower than the portable interpreter, making "fast" something
-of a misnomer.
-</p><p> 
-The fast interpreter is enabled by default.  On platforms without native
-support, you may want to switch to the portable interpreter.  This can
-be controlled with the <code>dalvik.vm.execution-mode</code> system
-property.  For example, if you:
-</p><p><blockquote> 
-<code>adb shell "echo dalvik.vm.execution-mode = int:portable >> /data/local.prop"</code> 
-</blockquote></p><p> 
-and reboot, the Android app framework will start the VM with the portable
-interpreter enabled.
-</p> 
- 
- 
-<h3>Mterp Interpreter Structure</h3> 
- 
-<p> 
-There may be significant performance advantages to rewriting the
-interpreter core in assembly language, using architecture-specific
-optimizations.  In Dalvik this can be done one instruction at a time.
-</p><p> 
-The simplest way to implement an interpreter is to have a large "switch"
-statement.  After each instruction is handled, the interpreter returns to
-the top of the loop, fetches the next instruction, and jumps to the
-appropriate label.
-</p><p> 
-An improvement on this is called "threaded" execution.  The instruction
-fetch and dispatch are included at the end of every instruction handler.
-This makes the interpreter a little larger overall, but you get to avoid
-the (potentially expensive) branch back to the top of the switch statement.
-</p><p> 
-Dalvik mterp goes one step further, using a computed goto instead of a goto
-table.  Instead of looking up the address in a table, which requires an
-extra memory fetch on every instruction, mterp multiplies the opcode number
-by a fixed value.  By default, each handler is allowed 64 bytes of space.
-</p><p> 
-Not all handlers fit in 64 bytes.  Those that don't can have subroutines
-or simply continue on to additional code outside the basic space.  Some of
-this is handled automatically by Dalvik, but there's no portable way to detect
-overflow of a 64-byte handler until the VM starts executing.
-</p><p> 
-The choice of 64 bytes is somewhat arbitrary, but has worked out well for
-ARM and x86.
-</p><p> 
-In the course of development it's useful to have C and assembly
-implementations of each handler, and be able to flip back and forth
-between them when hunting problems down.  In mterp this is relatively
-straightforward.  You can always see the files being fed to the compiler
-and assembler for your platform by looking in the
-<code>dalvik/vm/mterp/out</code> directory.
-</p><p> 
-The interpreter sources live in <code>dalvik/vm/mterp</code>.  If you
-haven't yet, you should read <code>dalvik/vm/mterp/README.txt</code> now.
-</p> 
- 
- 
-<h3>Getting Started With Mterp</h3> 
- 
-</p><p> 
-Getting started:
-<ol> 
-<li>Decide on the name of your architecture.  For the sake of discussion,
-let's call it <code>myarch</code>.
-<li>Make a copy of <code>dalvik/vm/mterp/config-allstubs</code> to
-<code>dalvik/vm/mterp/config-myarch</code>.
-<li>Create a <code>dalvik/vm/mterp/myarch</code> directory to hold your
-source files.
-<li>Add <code>myarch</code> to the list in
-<code>dalvik/vm/mterp/rebuild.sh</code>.
-<li>Make sure <code>dalvik/vm/Android.mk</code> will find the files for
-your architecture.  If <code>$(TARGET_ARCH)</code> is configured this
-will happen automatically.
-</ol> 
-</p><p> 
-You now have the basic framework in place.  Whenever you make a change, you
-need to perform two steps: regenerate the mterp output, and build the
-core VM library.  (It's two steps because we didn't want the build system
-to require Python 2.5.  Which, incidentally, you need to have.)
-<ol> 
-<li>In the <code>dalvik/vm/mterp</code> directory, regenerate the contents
-of the files in <code>dalvik/vm/mterp/out</code> by executing
-<code>./rebuild.sh</code>.  Note there are two files, one in C and one
-in assembly.
-<li>In the <code>dalvik</code> directory, regenerate the
-<code>libdvm.so</code> library with <code>mm</code>.  You can also use
-<code>make libdvm</code> from the top of the tree.
-</ol> 
-</p><p> 
-This will leave you with an updated libdvm.so, which can be pushed out to
-a device with <code>adb sync</code> or <code>adb push</code>.  If you're
-using the emulator, you need to add <code>make snod</code> (System image,
-NO Dependency check) to rebuild the system image file.  You should not
-need to do a top-level "make" and rebuild the dependent binaries.
-</p><p> 
-At this point you have an "all stubs" interpreter.  You can see how it
-works by examining <code>dalvik/vm/mterp/cstubs/entry.c</code>.  The
-code runs in a loop, pulling out the next opcode, and invoking the
-handler through a function pointer.  Each handler takes a "glue" argument
-that contains all of the useful state.
-</p><p> 
-Your goal is to replace the entry method, exit method, and each individual
-instruction with custom implementations.  The first thing you need to do
-is create an entry function that calls the handler for the first instruction.
-After that, the instructions chain together, so you don't need a loop.
-(Look at the ARM or x86 implementation to see how they work.)
-</p><p> 
-Once you have that, you need something to jump to.  You can't branch
-directly to the C stub because it's expecting to be called with a "glue"
-argument and then return.  We need a C stub "wrapper" that does the
-setup and jumps directly to the next handler.  We write this in assembly
-and then add it to the config file definition.
-</p><p> 
-To see how this works, create a file called
-<code>dalvik/vm/mterp/myarch/stub.S</code> that contains one line:
-<pre> 
-/* stub for ${opcode} */
-</pre> 
-Then, in <code>dalvik/vm/mterp/config-myarch</code>, add this below the
-<code>handler-size</code> directive:
-<pre> 
-# source for the instruction table stub
-asm-stub myarch/stub.S
-</pre> 
-</p><p> 
-Regenerate the sources with <code>./rebuild.sh</code>, and take a look
-inside <code>dalvik/vm/mterp/out/InterpAsm-myarch.S</code>.  You should
-see 256 copies of the stub function in a single large block after the
-<code>dvmAsmInstructionStart</code> label.  The <code>stub.S</code> 
-code will be used anywhere you don't provide an assembly implementation.
-</p><p> 
-Note that each block begins with a <code>.balign 64</code> directive.
-This is what pads each handler out to 64 bytes.  Note also that the
-<code>${opcode}</code> text changed into an opcode name, which should
-be used to call the C implementation (<code>dvmMterp_${opcode}</code>).
-</p><p> 
-The actual contents of <code>stub.S</code> are up to you to define.
-See <code>entry.S</code> and <code>stub.S</code> in the <code>armv5te</code> 
-or <code>x86</code> directories for working examples.
-</p><p> 
-If you're working on a variation of an existing architecture, you may be
-able to use most of the existing code and just provide replacements for
-a few instructions.  Look at the <code>armv4t</code> implementation as
-an example.
-</p> 
- 
- 
-<h3>Replacing Stubs</h3> 
- 
-<p> 
-There are roughly 230 Dalvik opcodes, including some that are inserted by
-<a href="dexopt.html">dexopt</a> and aren't described in the
-<a href="dalvik-bytecode.html">Dalvik bytecode</a> documentation.  Each
-one must perform the appropriate actions, fetch the next opcode, and
-branch to the next handler.  The actions performed by the assembly version
-must exactly match those performed by the C version (in
-<code>dalvik/vm/mterp/c/OP_*</code>).
-</p><p> 
-It is possible to customize the set of "optimized" instructions for your
-platform.  This is possible because optimized DEX files are not expected
-to work on multiple devices.  Adding, removing, or redefining instructions
-is beyond the scope of this document, and for simplicity it's best to stick
-with the basic set defined by the portable interpreter.
-</p><p> 
-Once you have written a handler that looks like it should work, add
-it to the config file.  For example, suppose we have a working version
-of <code>OP_NOP</code>.  For demonstration purposes, fake it for now by
-putting this into <code>dalvik/vm/mterp/myarch/OP_NOP.S</code>:
-<pre> 
-/* This is my NOP handler */
-</pre> 
-</p><p> 
-Then, in the <code>op-start</code> section of <code>config-myarch</code>, add:
-<pre> 
-    op OP_NOP myarch
-</pre> 
-</p><p> 
-This tells the generation script to use the assembly version from the
-<code>myarch</code> directory instead of the C version from the <code>c</code> 
-directory.
-</p><p> 
-Execute <code>./rebuild.sh</code>.  Look at <code>InterpAsm-myarch.S</code> 
-and <code>InterpC-myarch.c</code> in the <code>out</code> directory.  You
-will see that the <code>OP_NOP</code> stub wrapper has been replaced with our
-new code in the assembly file, and the C stub implementation is no longer
-included.
-</p><p> 
-As you implement instructions, the C version and corresponding stub wrapper
-will disappear from the output files.  Eventually you will have a 100%
-assembly interpreter.
-</p> 
- 
- 
-<h3>Interpreter Switching</h3> 
- 
-<p> 
-The Dalvik VM actually includes a third interpreter implementation: the debug
-interpreter.  This is a variation of the portable interpreter that includes
-support for debugging and profiling.
-</p><p> 
-When a debugger attaches, or a profiling feature is enabled, the VM
-will switch interpreters at a convenient point.  This is done at the
-same time as the GC safe point check: on a backward branch, a method
-return, or an exception throw.  Similarly, when the debugger detaches
-or profiling is discontinued, execution transfers back to the "fast" or
-"portable" interpreter.
-</p><p> 
-Your entry function needs to test the "entryPoint" value in the "glue"
-pointer to determine where execution should begin.  Your exit function
-will need to return a boolean that indicates whether the interpreter is
-exiting (because we reached the "bottom" of a thread stack) or wants to
-switch to the other implementation.
-</p><p> 
-See the <code>entry.S</code> file in <code>x86</code> or <code>armv5te</code> 
-for examples.
-</p> 
- 
- 
-<h3>Testing</h3> 
- 
-<p> 
-A number of VM tests can be found in <code>dalvik/tests</code>.  The most
-useful during interpreter development is <code>003-omnibus-opcodes</code>,
-which tests many different instructions.
-</p><p> 
-The basic invocation is:
-<pre> 
-$ cd dalvik/tests
-$ ./run-test 003
-</pre> 
-</p><p> 
-This will run test 003 on an attached device or emulator.  You can run
-the test against your desktop VM by specifying <code>--reference</code> 
-if you suspect the test may be faulty.  You can also use
-<code>--portable</code> and <code>--fast</code> to explictly specify
-one Dalvik interpreter or the other.
-</p><p> 
-Some instructions are replaced by <code>dexopt</code>, notably when
-"quickening" field accesses and method invocations.  To ensure
-that you are testing the basic form of the instruction, add the
-<code>--no-optimize</code> option.
-</p><p> 
-There is no in-built instruction tracing mechanism.  If you want
-to know for sure that your implementation of an opcode handler
-is being used, the easiest approach is to insert a "printf"
-call.  For an example, look at <code>common_squeak</code> in
-<code>dalvik/vm/mterp/armv5te/footer.S</code>.
-</p><p> 
-At some point you need to ensure that debuggers and profiling work with
-your interpreter.  The easiest way to do this is to simply connect a
-debugger or toggle profiling.  (A future test suite may include some
-tests for this.)
-</p> 
-
-
diff --git a/pdk/docs/porting/debugging_gdb.jd b/pdk/docs/porting/debugging_gdb.jd
deleted file mode 100755
index 17ff471..0000000
--- a/pdk/docs/porting/debugging_gdb.jd
+++ /dev/null
@@ -1,146 +0,0 @@
-page.title=Debugging with GDB
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#gdb">Debugging</a></li>
-  <li><a href="#justInTime">Just-In-Time Debug Feature</a></li>
-</ul>
-</div>
-</div>
-
-<p>The current version of <code>envsetup.sh</code> has a <code>gdbclient</code> command that handles much of the setup.  For example, to attach the
-  already-running <code>globaltime</code> application, execute the following, making sure that: 1) you do this from the same window used to build the software on the device you are debugging and 2) verify that the symbols in the object files in the build tree match up with what is installed on the device or emulator.</p>
-<pre class="prettify">
-gdbclient app_process :5039 globaltime
-</pre>
-<a name="gdb"></a><h3>Debugging</h3>
-<a name="gdbShort"></a>
-<h4>Short Instructions</h4>
-<p>Android runs <code>gdbserver</code> on the device and an ARM aware <code>gdb</code>, named <code>arm-eabi-gdb</code>, on the desktop machine.</p>
-<ol>
-  <li>First you need to
-    run <code>gdbserver</code> on the device:<BR>
-    <pre class="prettify">
-	gdbserver :5039 /system/bin/<i>executable</i>       
-  </pre>
-    <BR>
-    The <code>:5039</code> tells gdbserver to listen on port 5039 on the localhost, which adb bridges from the host to the device. <code>executable</code> represents the command to debug, a common one being runtime -s which starts the entire system all running in a single process. <br>
-    <br>
-  </li>
-  <li>Launch <code>gdb</code> on the desktop.
-    This can be
-    done easily with the following command in the shell from which you built:
-    <pre class="prettify">
-gdbclient <i>executable</i>
-</pre>
-  </li>
-</ol>
-<p>At this point <code>gdb</code> will connect with your device
-  and you should be
-  able to enter <code>c</code> to have the device start executing inside of the
-  desktop <code>gdb</code> session.</p>
-<a name="gdbDetailed"></a>
-<h4>Detailed Instructions</h4>
-<p>If the short instructions don't work, these detailed instructions should:
-<ol>
-  <li>On the device, launch a new command:
-    <pre class="prettify">gdbserver :5039 /system/bin/<i>executable</i></pre>
-    or attach to an existing process:
-    <pre class="prettify">gdbserver :5039 --attach <i>pid</i></pre>
-  </li>
-  <li>On your workstation, forward port 5039 to the device with adb:
-    <pre class="prettify">adb forward tcp:5039 tcp:5039</pre>
-  </li>
-  <li>Start a special version of <code>gdb</code> that lives in the "prebuilt" area of the source tree: <br>
-    <code>prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb</code> (for Linux) <br>
-    <code>prebuilt/darwin-x86/toolchain-eabi-4.2.1/bin/arm-eabi-gdb</code> (for Darwin) </li>
-  <li>If you can't find either special version of <code>gdb</code>, run <code>find prebuilt -name arm-eabi-gdb</code> in your source tree to find and run the latest version:
-    <pre class="prettify">
-prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-eabi-gdb  out/target/product/<i>product-name</i>/symbols/system/bin/<i>executable</i>
-</pre>
-    <BR>
-    Where <i>product-name</i> is the name of the device product that you're building (for example, <code>sooner</code>),
-    and <i>executable</i> is the program to debug (usually <code>app_process</code> for an application).<br>
-    <br>
-    Make sure to use the copy of the executable in the symbols directory, not the
-    primary android directory, because the one in the primary directory has
-    been stripped of its debugging information.</li>
-  <li>In <code>gdb</code>, Tell <code>gdb</code> where to find the shared libraries that will get loaded:
-    <pre class="prettify">
-set solib-absolute-prefix /<i>absolute-source-path</i>/out/target/product/<i>product-name</i>/symbols
-set solib-search-path /<i>absolute-source-path</i>/out/target/product/<i>product-name</i>/symbols/system/lib
-</pre>
-    <BR>
-    <i>absolute-source-path</i> is the path to your source tree; for example, <code>/work/device</code> or <code>/Users/hoser/android/device</code>.<BR>
-    <i>product-name</i> is the same as above; for example, <code>sooner</code>. <BR>
-    <BR>
-    Make sure you specify the correct directories&#151;<code>gdb</code> may not tell you if you make a mistake.</li>
-  <li>Connect to the device by issuing the <code>gdb</code> command:<BR>
-    <pre class="prettify">
-target remote :5039
-</pre>
-    <BR>
-    <BR>
-    The <code>:5039</code> tells <code>gdb</code> to connect to the localhost port 5039, which is bridged to the device by <code>adb</code>.<BR>
-    <BR>
-    You may need to inspire gdb to load some symbols by typing:
-    <pre class="prettify">shared</pre>
-  </li>
-</ol>
-<p>You should be connected and able to debug as you normally would. You can ignore the error about not 
-  finding the location for the thread creation breakpoint. It will be found when
-  the linker loads <code>libc</code> into your process before hitting <code>main()</code>. Also note that
-  the <code>gdb</code> remote protocol doesn't have a way for the device to
-  tell the host about
-  newly created threads so you will not always see notifications about newly
-  created threads. Info about other threads will be queried from the
-  device when a
-  breakpoint is hit or you ask for it by running info thread. <a name="justInTime"></a>
-<h3>Just-In-Time Debug Feature</h3>
-If you see the red LED flashing it means a process is in that new
-state (crashed and waiting for GDB connection). If this happens to the
-system process, most likely your device will be frozen at this point. <strong>Do not press the home key</strong>. Bring the device to someone who can
-debug native crashes and ask for advice.
-If you're in the field and just want your device to continue as it
-would have without this feature (like cylonning), press home (a
-tombstone will be recorded as usual).
-
-To enable a process to be debugged this way, you need to set a property:
-<pre class="prettify">
-adb shell setprop debug.db.uid 10000
-</pre>
-and all processes with a <code>uid &lt;= 10000</code> will be trapped in this 
-manner.  When one of them crashes, the tombstone is processed as usual, an explicit message is printed into the log, and the red LED starts
-flashing waiting for the Home key to be depressed (in which case it
-continues execution as usual).
-<pre class="prettify">
-I/DEBUG   (   27): ********************************************************
-I/DEBUG   (   27): * process 82 crashed. debuggerd waiting for gdbserver
-I/DEBUG   (   27): *
-I/DEBUG   (   27): *     adb shell gdbserver :port --attach 82 &
-I/DEBUG   (   27): *
-I/DEBUG   (   27): * and press the HOME key.
-I/DEBUG   (   27): ********************************************************
-</pre>
-<p>When you see the entry above, make sure <code>adb</code> is forwarding port 5039 (you only need to do this once,
-  unless the ADB server dies) and execute:</p>
-<pre class="prettify">% adb forward tcp:5039 tcp:5039</pre>
-Execute the line shown in the debug output, substituting 5039  for the proper <code>port</code>:
-<pre class="prettify">
-% adb shell gdbserver :5039 --attach 82 &
-</pre>
-<p>If the crashing process is based off zygote (that is, system_server and all
-  applications), the default values for the <code>gdbclient</code> command, <code>app_process</code> binary and port <code>5039</code>, are correct, so you can execute:</p>
-<pre class="prettify">
-% cd &lt;top of device source tree&gt;
-% gdbclient
-</pre>
-<p>Otherwise you need to determine the path of the crashing binary and follow the
-  steps as mentioned above (for example, <code>gdbclient hoser :5039</code> if
-  the <code>hoser</code> command has failed).</p>
diff --git a/pdk/docs/porting/debugging_native.jd b/pdk/docs/porting/debugging_native.jd
deleted file mode 100755
index 44e8219..0000000
--- a/pdk/docs/porting/debugging_native.jd
+++ /dev/null
@@ -1,299 +0,0 @@
-page.title=Debugging Native Code
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#Capturing_logs">Capturing logs</a></li>
-<li><a href="#Debug_Scenarios">Debug Scenarios</a></li>
-</ul>
-</div>
-</div>
-
-<a name="Capturing_logs"></a><h3>Capturing logs</h3>
-
-<p>To capture log output:</p>
-<ol>
-<li> Produce a process list with <code>ps</code>   (<code>ps -t</code> if you want verbose thread feedback).</li>
-<li> Dump kernel messages with <code>dmesg</code>.</li>
-<li> Get verbose log messages with <code>logcat '*:v' &amp;</code>   (running in bg with &amp; is important).</li>
-
-</ol>
-
-<a name="Debug_Scenarios"></a><h3>Debug Scenarios</h3>
-<pre class="prettify">
-  # command to device shell (via adb)
-  % command to host pc shell
-</pre>
-<p>
-</p>
-
-<a name="Crash_but_no_exit_stuck"></a><h4>Crash but no exit...stuck</h4>
-
-<p>In this scenario, the GTalk app crashed but did not actually exit or seems stuck. Check the debug logs to see if there is anything unusual: </p>
-
-<pre class="prettify">
-# logcat &amp;
-
-...
-E/WindowManager(  182): Window client android.util.BinderProxy@4089f948 has died!!  Removing window.
-W/WindowManager(  182): **** WINDOW CLIENT android.view.WindowProxy@40882248 DIED!
-W/ActivityManager(  182): **** APPLICATION com.google.android.gtalk DIED!
-I/ServiceManager(  257): Executing: /android/bin/app_process (link=/tmp/android-servicemanager/com.google.android.gtalk, wrapper=/tmp/android-servi
-cemanager/com.google.android.gtalk)
-I/appproc (  257): App process is starting with pid=257, class=android/activity/ActivityThread.
-I/        (  257): java.io.FileDescriptor: class initialization
-I/SurfaceFlinger.HW(  182): About to give-up screen
-I/SurfaceFlinger.HW(  182): screen given-up
-I/SurfaceFlinger.HW(  182): Screen about to return
-I/SurfaceFlinger.HW(  182): screen returned
-I/SurfaceFlinger.HW(  182): About to give-up screen
-I/SurfaceFlinger.HW(  182): screen given-up
-I/SurfaceFlinger.HW(  182): Screen about to return
-...
-</pre>
-
-<p>
-The logs indicate that the system launched a replacement GTalk process but that it got stuck somehow:
-</p>
-
-<pre class="prettify">
-# ps
-PID   PPID  VSIZE RSS   WCHAN    PC         NAME
-257   181   45780 5292  ffffffff 53030cb4 S com.google.andr
-</pre>
-
-<p>
-GTalk's PC is at 53030cb4. Look at the memory map to find out what lib is 0x53......
-</p>
-
-<pre class="prettify">
-# cat /proc/257/maps
-...
-51000000-5107c000 rwxp 00000000 1f:03 619        /android/lib/libutils.so
-52000000-52013000 rwxp 00000000 1f:03 639        /android/lib/libz.so
-53000000-53039000 rwxp 00000000 1f:03 668        /android/lib/libc.so
-53039000-53042000 rw-p 53039000 00:00 0
-54000000-54002000 rwxp 00000000 1f:03 658        /android/lib/libstdc++.so
-...
-</pre>
-
-<p>
-Disassemble <code>libc</code> to figure out what is going on:
-</p>
-
-<pre class="prettify">
-% prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-elf-objdump -d out/target/product/sooner/symbols/android/lib/libc.so
-
-00030ca4 &lt;__futex_wait&gt;:
-  30ca4:       e1a03002        mov     r3, r2
-  30ca8:       e1a02001        mov     r2, r1
-  30cac:       e3a01000        mov     r1, #0  ; 0x0
-  30cb0:       ef9000f0        swi     0x009000f0
-  30cb4:       e12fff1e        bx      lr
-</pre>
-
-<a name="Blocked_in_a_syscall"></a><h4>Blocked in a syscall</h4>
-
-<p>
-In this scenario, the system is blocked in a syscall. To debug using <code>gdb</code>, first tell <code>adb</code> to forward the <code>gdb</code> port:
-</p>
-
-<pre class="prettify">
-
-% adb forward tcp:5039 tcp:5039
-</pre>
-
-<p>
-Start the <code>gdb</code> server and attach to process 257 (as demonstrated in the previous example):
-</p>
-
-<pre class="prettify">
-# gdbserver :5039 --attach 257 &amp;
-Attached; pid = 257
-Listening on port 5039
-
-% prebuilt/Linux/toolchain-eabi-4.2.1/bin/arm-elf-gdb out/target/product/sooner/system/bin/app_process
-(gdb) set solib-absolute-prefix /work/android/device/out/target/product/sooner/symbols
-(gdb) set solib-search-path /work/android/device/out/target/product/sooner/symbols/android/lib
-(gdb) target remote :5039
-Remote debugging using :5039
-0x53030cb4 in ?? ()
-Current language:  auto; currently asm
-</pre>
-
-<p>
-Don't let other threads get scheduled while we're debugging.
-You should "set scheduler-locking off" before issuing a "continue", or else your thread may get stuck on a futex or other
-spinlock because no other thread can release it.
-</p>
-
-<pre class="prettify">
-(gdb) set scheduler-locking on
-</pre>
-
-<pre class="prettify">
-(gdb) where
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010eb8 in pthread_cond_timedwait (cond=0x12081c, mutex=0x120818, abstime=0xffffffff)
-   at system/klibc/android/pthread.c:490
-#2  0x6b01c848 in monitorWait (mon=0x120818, self=0x6b039ba4, ms=0, ns=0) at extlibs/jamvm-1.4.1/src/lock.c:194
-#3  0x6b01d1d8 in objectWait (obj=0x408091c0, ms=0, ns=0) at extlibs/jamvm-1.4.1/src/lock.c:420
-#4  0x6b01d4c8 in jamWait (clazz=0xfffffffc, mb=0x0, ostack=0x2e188) at extlibs/jamvm-1.4.1/src/natives.c:91
-#5  0x6b013b2c in resolveNativeWrapper (clazz=0x408001d0, mb=0x41798, ostack=0x2e188) at extlibs/jamvm-1.4.1/src/dll.c:236
-#6  0x6b015c04 in executeJava () at extlibs/jamvm-1.4.1/src/interp.c:2614
-#7  0x6b01471c in executeMethodVaList (ob=0x0, clazz=0x40808f20, mb=0x12563c, jargs=0xbe9229f4)
-   at extlibs/jamvm-1.4.1/src/execute.c:91
-#8  0x6b01bcd0 in Jam_CallStaticVoidMethod (env=0xfffffffc, klass=0x0, methodID=0x12563c)
-   at extlibs/jamvm-1.4.1/src/jni.c:1063
-#9  0x58025b2c in android::AndroidRuntime::callStatic (this=0xfffffffc,
-   className=0xbe922f0a "android/activity/ActivityThread", methodName=0x57000b7c "main")
-   at libs/android_runtime/AndroidRuntime.cpp:215
-#10 0x57000504 in android::app_init (className=0xbe922f0a "android/activity/ActivityThread")
-   at servers/app/library/app_init.cpp:20
-#11 0x000089b0 in android::sp&lt;android::ProcessState&gt;::~sp ()
-#12 0x000089b0 in android::sp&lt;android::ProcessState&gt;::~sp ()
-Previous frame identical to this frame (corrupt stack?)
-
-(gdb) info threads
- 7 thread 263  __ioctl () at system/klibc/syscalls/__ioctl.S:12
- 6 thread 262  accept () at system/klibc/syscalls/accept.S:12
- 5 thread 261  __futex_wait () at system/klibc/android/atomics_arm.S:88
- 4 thread 260  __futex_wait () at system/klibc/android/atomics_arm.S:88
- 3 thread 259  __futex_wait () at system/klibc/android/atomics_arm.S:88
- 2 thread 258  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
- 1 thread 257  __futex_wait () at system/klibc/android/atomics_arm.S:88
-
-
-(gdb) thread 7
-[Switching to thread 7 (thread 263)]#0  __ioctl () at system/klibc/syscalls/__ioctl.S:12
-12          movs    r0, r0
-(gdb) bt
-#0  __ioctl () at system/klibc/syscalls/__ioctl.S:12
-#1  0x53010704 in ioctl (fd=-512, request=-1072143871) at system/klibc/android/ioctl.c:22
-#2  0x51040ac0 in android::IPCThreadState::talkWithDriver (this=0x1207b8, doReceive=true) at RefBase.h:83
-#3  0x510418a0 in android::IPCThreadState::joinThreadPool (this=0x1207b8, isMain=false)
-   at libs/utils/IPCThreadState.cpp:343
-#4  0x51046004 in android::PoolThread::threadLoop (this=0xfffffe00) at libs/utils/ProcessState.cpp:52
-#5  0x51036428 in android::Thread::_threadLoop (user=0xfffffe00) at libs/utils/Threads.cpp:1100
-#6  0x58025c68 in android::AndroidRuntime::javaThreadShell (args=0x105ffe28) at libs/android_runtime/AndroidRuntime.cpp:540
-
-(gdb) thread 6
-[Switching to thread 6 (thread 262)]#0  accept () at system/klibc/syscalls/accept.S:12
-12          movs    r0, r0
-(gdb) bt
-#0  accept () at system/klibc/syscalls/accept.S:12
-#1  0x6b0334e4 in jdwpAcceptConnection (state=0xfffffe00) at extlibs/jamvm-1.4.1/jdwp/JdwpNet.c:213
-#2  0x6b032660 in jdwpThreadEntry (self=0x4d020) at extlibs/jamvm-1.4.1/jdwp/JdwpMain.c:37
-#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 5
-[Switching to thread 5 (thread 261)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-88              bx              lr
-(gdb) bt
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010f48 in pthread_cond_timeout (cond=0x6b039b64, mutex=0x6b039b60, msecs=0) at system/klibc/android/pthread.c:513
-#2  0x6b01c8d0 in monitorWait (mon=0x6b039b60, self=0x4d400, ms=1000, ns=272629312) at extlibs/jamvm-1.4.1/src/lock.c:183
-#3  0x6b022084 in threadSleep (thread=0x4d400, ms=1000, ns=272629312) at extlibs/jamvm-1.4.1/src/thread.c:215
-#4  0x6b00d4fc in asyncGCThreadLoop (self=0x4d400) at extlibs/jamvm-1.4.1/src/alloc.c:1179
-#5  0x6b022c2c in shell (args=0x4d480) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 4
-[Switching to thread 4 (thread 260)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-88              bx              lr
-(gdb) bt
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010eb8 in pthread_cond_timedwait (cond=0x6b039934, mutex=0x6b039930, abstime=0x0)
-   at system/klibc/android/pthread.c:490
-#2  0x6b00b3ec in referenceHandlerThreadLoop (self=0x4d360) at extlibs/jamvm-1.4.1/src/alloc.c:1247
-#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 3
-[Switching to thread 3 (thread 259)]#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-88              bx              lr
-(gdb) bt
-#0  __futex_wait () at system/klibc/android/atomics_arm.S:88
-#1  0x53010eb8 in pthread_cond_timedwait (cond=0x6b03992c, mutex=0x6b039928, abstime=0x0)
-   at system/klibc/android/pthread.c:490
-#2  0x6b00b1dc in finalizerThreadLoop (self=0x4d8e0) at extlibs/jamvm-1.4.1/src/alloc.c:1238
-#3  0x6b022c2c in shell (args=0x4d960) at extlibs/jamvm-1.4.1/src/thread.c:629
-
-(gdb) thread 2
-[Switching to thread 2 (thread 258)]#0  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
-12          movs    r0, r0
-(gdb) bt
-#0  __sigsuspend () at system/klibc/syscalls/__sigsuspend.S:12
-#1  0x6b023814 in dumpThreadsLoop (self=0x51b98) at extlibs/jamvm-1.4.1/src/thread.c:1107
-#2  0x6b022c2c in shell (args=0x51b58) at extlibs/jamvm-1.4.1/src/thread.c:629
-</pre>
-
-<a name="Crash_in_C_C_code"></a><h4>Crash in C / C++ code</h4>
-<p>If it crashes, connect with <code>adb</code> and run <code>logcat</code> on the device. You should see output like this:</p>
-
-<pre class="prettify">
-I/ActivityManager(  188): Starting activity: Intent { component=com.android.calendar.MonthScreen }
-I/ActivityManager(  188): Starting application com.android.calendar to host activity com.android.calendar.MonthScree
-n
-I/ServiceManager(  417): Executing: /android/bin/app_process (link=/android/bin/app_process, wrapper=/android/bin/app_process)
-I/DEBUG: -- observer of pid 417 starting --
-I/appproc (  417): App process is starting with pid=417, class=android/activity/ActivityThread.
-I/DEBUG: -- observer of pid 417 exiting --
-I/DEBUG: -- observer of pid 420 starting --
-I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
-I/DEBUG: pid: 373, tid: 401  &gt;&gt;&gt; android.content.providers.pim &lt;&lt;&lt;
-I/DEBUG: signal 11 (SIGSEGV), fault addr 00000000
-I/DEBUG:  r0 ffffffff  r1 00000000  r2 00000454  r3 002136d4
-I/DEBUG:  r4 002136c0  r5 40804810  r6 0022dc70  r7 00000010
-I/DEBUG:  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
-I/DEBUG:  ip 6b039e90  sp 109ffc0c  lr 580239f0  pc 6b0156a0
-I/DEBUG:          #01  pc 6b0156a0  /android/lib/libjamvm.so
-I/DEBUG:          #01  lr 580239f0  /android/lib/libandroid_runtime.so
-I/DEBUG:          #02  pc 6b01481c  /android/lib/libjamvm.so
-I/DEBUG:          #03  pc 6b0148a4  /android/lib/libjamvm.so
-I/DEBUG:          #04  pc 6b00ebc0  /android/lib/libjamvm.so
-I/DEBUG:          #05  pc 6b02166c  /android/lib/libjamvm.so
-I/DEBUG:          #06  pc 6b01657c  /android/lib/libjamvm.so
-I/DEBUG:          #07  pc 6b01481c  /android/lib/libjamvm.so
-I/DEBUG:          #08  pc 6b0148a4  /android/lib/libjamvm.so
-I/DEBUG:          #09  pc 6b0235c0  /android/lib/libjamvm.so
-I/DEBUG:          #10  pc 5300fac4  /android/lib/libc.so
-I/DEBUG:          #11  pc 5300fc5c  /android/lib/libc.so
-I/DEBUG: -- observer of pid 373 exiting --
-I/DEBUG: -- observer of pid 423 starting --
-</pre>
-
-<p>If debugging output indicates an error in C or C++ code, the addresses aren't particularly useful, but the debugging symbols aren't present on the device.  Use the "stack" tool to convert these addresses to files and line numbers, for example:</p>
-
-<pre class="prettify"> 
-pid: 373, tid: 401  &gt;&gt;&gt; android.content.providers.pim &lt;&lt;&lt;
-
- signal 11 (SIGSEGV), fault addr 00000000
-  r0 ffffffff  r1 00000000  r2 00000454  r3 002136d4
-  r4 002136c0  r5 40804810  r6 0022dc70  r7 00000010
-  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
-  r8 0020a258  r9 00000014  10 6b039074  fp 109ffcf8
-
-  ADDR      FUNCTION                        FILE:LINE
-  6b0156a0  executeJava                     extlibs/jamvm-1.4.1/src/interp.c:2674
-  580239f0  android_util_Parcel_freeBuffer  libs/android_runtime/android_util_Binder.cpp:765
-  6b01481c  executeMethodVaList             extlibs/jamvm- 1.4.1/src/execute.c:91
-  6b0148a4  executeMethodArgs               extlibs/jamvm-1.4.1/src/execute.c:67
-  6b00ebc0  initClass                       extlibs/jamvm-1.4.1/src/class.c:1124
-  6b02166c  resolveMethod                   extlibs/jamvm- 1.4.1/src/resolve.c:197
-  6b01657c  executeJava                     extlibs/jamvm-1.4.1/src/interp.c:2237
-  6b01481c  executeMethodVaList             extlibs/jamvm-1.4.1/src/execute.c:91
-  6b0148a4  executeMethodArgs               extlibs/jamvm- 1.4.1/src/execute.c:67
-  6b0235c0  threadStart                     extlibs/jamvm-1.4.1/src/thread.c:355
-  5300fac4  __thread_entry                  system/klibc/android/pthread.c:59
-  5300fc5c  pthread_create                  system/klibc/android/pthread.c:182
-</pre>
-
-<p>Or you can run <code>logcat</code> without any parameters and it will read from <code>stdin</code>.  You can then paste output into the terminal or pipe it. Run <code>logcat</code> from the top of the tree in the environment in which you do builds so that the application can determine relative paths to the toolchain to use to decode the object files.
-</p>
-</body>
-</html>
diff --git a/pdk/docs/porting/display_drivers.jd b/pdk/docs/porting/display_drivers.jd
deleted file mode 100755
index 570f6f6..0000000
--- a/pdk/docs/porting/display_drivers.jd
+++ /dev/null
@@ -1,345 +0,0 @@
-page.title=Display Drivers
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidDisplayDriverFunctionality">Functionality</a></li>
-<li><a href="#androidDisplayDriversSourceTemplate">Implementing Your Own Driver (Driver Template)</a></li>
-<li><a href="#androidDisplayDriversTroubleshooting">Troubleshooting</a></li>
-</ul>
-</div>
-</div>
-
-<p>This section describes how the display driver functions and offers a functional template designed to help you build your own device-specific driver.</p>
-<p>Android relies on the standard frame buffer device (<code>/dev/fb0</code> or <code>/dev/graphics/fb0</code>) and driver as described in the <code>linux/fb.h</code> kernel header file. For more information regarding the standard Linux frame buffer, please see <a href="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/fb/framebuffer.txt">The Frame Buffer Device</a> at <a href="http://kernel.org">http://kernel.org</a>.
-
-
-<a name="androidDisplayDriverFunctionality"></a><h3>Functionality</h3>
-
-<p>In Android, every window gets implemented with an underlying Surface object, an object that gets placed on the framebuffer by SurfaceFlinger, the system-wide screen composer. Each Surface is double-buffered. The back buffer is where drawing takes place and the front buffer is used for composition. </p>
-<p> When <code>unlockCanvas()</code> is called, the back buffer is posted, which 
-  means that it gets displayed and &nbsp;becomes available again. Android flips the front and back buffers, ensuring a minimal amount of buffer copying and that there is always a buffer for SurfaceFlinger to use for composition (which ensures that the screen never flickers or shows artifacts).</p>
-<p>Android makes two requirements of the driver: a linear address space of mappable memory that it can write to directly and support for the rgb_565 pixel format. A typical frame display includes:</p>
-<ul>
-  <li>accessing the driver by calling open on <code>/dev/fb0</code></li>
-  <li>using the <code>FBIOGET_FSCREENINFO</code> and <code>FBIOGET_VSCREENINFO</code> Input / Output Control (ioctl) calls to retrieve information about the screen</li>
-  <li>using <code>FBIOPUT_VSCREENINFO</code> ioctl to attempt to create a virtual display twice the size of the physical screen and to set the pixel format to rgb_565. If this succeeds, double buffering is accomplished with video memory. </li>
-</ul>
-<p>When a page flip is required, Android makes another <code>FBIOPUT_VSCREENINFO</code> ioctl call with a new y-offset pointing to the other buffer in video memory.  This ioctl, in turn, invokes the driver's <code>.fb_pan_display</code> function in order to do the actual flip. If there isn't sufficient video memory, regular memory is used and is just copied into the video memory when it is time do the flip. After allocating the video memory and setting the pixel format, Android  uses <code>mmap()</code> to map the memory into the process's address space.  All writes to the frame buffer are done through this mmaped memory.</p>
-<p>To maintain adequate performance, framebuffer memory should be cacheable. If you use write-back, flush the cache before the frame buffer is written from DMA to the LCD. If that isn't possible, you may use write-through. As a last resort, you can also use uncached memory with the write-bugger enabled, but performance will suffer.</p>
-
-
-<a name="androidDisplayDriversSourceTemplate"></a><h3>Implementing Your Own Driver (Driver Template)</h3>
-
-<p>The following sample driver offers a functional example to help you build your own display driver. Modify <code>PGUIDE_FB...</code> macros as desired to match the requirements of your own device hardware.</p>
-<pre class="prettyprint">
-/*
- *  pguidefb.c
- * 
- *  Copyright 2007, Google Inc.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License version 2 as
- *  published by the Free Software Foundation.
- */
-
-
-/*
- * ANDROID PORTING GUIDE: FRAME BUFFER DRIVER TEMPLATE
- *
- * This template is designed to provide the minimum frame buffer
- * functionality necessary for Android to display properly on a new
- * device.  The PGUIDE_FB macros are meant as pointers indicating
- * where to implement the hardware specific code necessary for the new
- * device.  The existence of the macros is not meant to trivialize the
- * work required, just as an indication of where the work needs to be
- * done.
- */
-
-#include &lt;linux/module.h&gt;
-#include &lt;linux/kernel.h&gt;
-#include &lt;linux/errno.h&gt;
-#include &lt;linux/string.h&gt;
-#include &lt;linux/slab.h&gt;
-#include &lt;linux/delay.h&gt;
-#include &lt;linux/mm.h&gt;
-#include &lt;linux/fb.h&gt;
-#include &lt;linux/init.h&gt;
-#include &lt;linux/platform_device.h&gt;
-
-
-/* Android currently only uses rgb565 in the hardware framebuffer */
-#define ANDROID_BYTES_PER_PIXEL 2
-
-/* Android will use double buffer in video if there is enough */
-#define ANDROID_NUMBER_OF_BUFFERS 2
-
-/* Modify these macros to suit the hardware */
-
-#define PGUIDE_FB_ROTATE 
-	/* Do what is necessary to cause the rotation */
-
-#define PGUIDE_FB_PAN 
-	/* Do what is necessary to cause the panning */
-
-#define PGUIDE_FB_PROBE_FIRST 
-	/* Do any early hardware initialization */
-
-#define PGUIDE_FB_PROBE_SECOND
-	/* Do any later hardware initialization */
-
-#define PGUIDE_FB_WIDTH 320
-	/* Return the width of the screen */
-
-#define PGUIDE_FB_HEIGHT 240
-	/* Return the heighth of the screen */
-
-#define PGUIDE_FB_SCREEN_BASE 0
-	/* Return the virtual address of the start of fb memory */
-
-#define PGUIDE_FB_SMEM_START PGUIDE_FB_SCREEN_BASE
-	/* Return the physical address of the start of fb memory */
-
-#define PGUIDE_FB_REMOVE 
-	/* Do any hardware shutdown */
-
-
-
-
-
-struct pguide_fb {
-	int rotation;
-	struct fb_info fb;
-	u32			cmap[16];
-};
-
-static inline u32 convert_bitfield(int val, struct fb_bitfield *bf)
-{
-	unsigned int mask = (1 << bf->length) - 1;
-
-	return (val >> (16 - bf->length) & mask) << bf->offset;
-}
-
-
-/* set the software color map.  Probably doesn't need modifying. */
-static int
-pguide_fb_setcolreg(unsigned int regno, unsigned int red, unsigned int green,
-		 unsigned int blue, unsigned int transp, struct fb_info *info)
-{
-        struct pguide_fb  *fb = container_of(info, struct pguide_fb, fb);
-
-	if (regno < 16) {
-		fb->cmap[regno] = convert_bitfield(transp, &fb->fb.var.transp) |
-				  convert_bitfield(blue, &fb->fb.var.blue) |
-				  convert_bitfield(green, &fb->fb.var.green) |
-				  convert_bitfield(red, &fb->fb.var.red);
-		return 0;
-	}
-	else {
-		return 1;
-	}
-}
-
-/* check var to see if supported by this device.  Probably doesn't
- * need modifying.
- */
-static int pguide_fb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-	if((var->rotate & 1) != (info->var.rotate & 1)) {
-		if((var->xres != info->var.yres) ||
-		   (var->yres != info->var.xres) ||
-		   (var->xres_virtual != info->var.yres) ||
-		   (var->yres_virtual > 
-		    info->var.xres * ANDROID_NUMBER_OF_BUFFERS) ||
-		   (var->yres_virtual < info->var.xres )) {
-			return -EINVAL;
-		}
-	}
-	else {
-		if((var->xres != info->var.xres) ||
-		   (var->yres != info->var.yres) ||
-		   (var->xres_virtual != info->var.xres) ||
-		   (var->yres_virtual > 
-		    info->var.yres * ANDROID_NUMBER_OF_BUFFERS) ||
-		   (var->yres_virtual < info->var.yres )) {
-			return -EINVAL;
-		}
-	}
-	if((var->xoffset != info->var.xoffset) ||
-	   (var->bits_per_pixel != info->var.bits_per_pixel) ||
-	   (var->grayscale != info->var.grayscale)) {
-		return -EINVAL;
-	}
-	return 0;
-}
-
-
-/* Handles screen rotation if device supports it. */
-static int pguide_fb_set_par(struct fb_info *info)
-{
-	struct pguide_fb *fb = container_of(info, struct pguide_fb, fb);
-	if(fb->rotation != fb->fb.var.rotate) {
-		info->fix.line_length = 
-		  info->var.xres * ANDROID_BYTES_PER_PIXEL;
-		fb->rotation = fb->fb.var.rotate;
-		PGUIDE_FB_ROTATE;
-	}
-	return 0;
-}
-
-
-/* Pan the display if device supports it. */
-static int pguide_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
-{
-	struct pguide_fb *fb    __attribute__ ((unused)) 
-	    = container_of(info, struct pguide_fb, fb);
-
-	/* Set the frame buffer base to something like:
-	   fb->fb.fix.smem_start + fb->fb.var.xres * 
-	   ANDROID_BYTES_PER_PIXEL * var->yoffset
-	*/
-	PGUIDE_FB_PAN;
-
-	return 0;
-}
-
-
-static struct fb_ops pguide_fb_ops = {
-	.owner          = THIS_MODULE,
-	.fb_check_var   = pguide_fb_check_var,
-	.fb_set_par     = pguide_fb_set_par,
-	.fb_setcolreg   = pguide_fb_setcolreg,
-	.fb_pan_display = pguide_fb_pan_display,
-
-	/* These are generic software based fb functions */
-	.fb_fillrect    = cfb_fillrect,
-	.fb_copyarea    = cfb_copyarea,
-	.fb_imageblit   = cfb_imageblit,
-};
-
-
-static int pguide_fb_probe(struct platform_device *pdev)
-{
-	int ret;
-	struct pguide_fb *fb;
-	size_t framesize;
-	uint32_t width, height;
-
-	fb = kzalloc(sizeof(*fb), GFP_KERNEL);
-	if(fb == NULL) {
-		ret = -ENOMEM;
-		goto err_fb_alloc_failed;
-	}
-	platform_set_drvdata(pdev, fb);
-
-	PGUIDE_FB_PROBE_FIRST;
-	width = PGUIDE_FB_WIDTH;
-	height = PGUIDE_FB_HEIGHT;
-
-
-	fb->fb.fbops		= &pguide_fb_ops;
-
-	/* These modes are the ones currently required by Android */
-
-	fb->fb.flags		= FBINFO_FLAG_DEFAULT;
-	fb->fb.pseudo_palette	= fb->cmap;
-	fb->fb.fix.type		= FB_TYPE_PACKED_PIXELS;
-	fb->fb.fix.visual = FB_VISUAL_TRUECOLOR;
-	fb->fb.fix.line_length = width * ANDROID_BYTES_PER_PIXEL;
-	fb->fb.fix.accel	= FB_ACCEL_NONE;
-	fb->fb.fix.ypanstep = 1;
-
-	fb->fb.var.xres		= width;
-	fb->fb.var.yres		= height;
-	fb->fb.var.xres_virtual	= width;
-	fb->fb.var.yres_virtual	= height * ANDROID_NUMBER_OF_BUFFERS;
-	fb->fb.var.bits_per_pixel = 16;
-	fb->fb.var.activate	= FB_ACTIVATE_NOW;
-	fb->fb.var.height	= height;
-	fb->fb.var.width	= width;
-
-	fb->fb.var.red.offset = 11;
-	fb->fb.var.red.length = 5;
-	fb->fb.var.green.offset = 5;
-	fb->fb.var.green.length = 6;
-	fb->fb.var.blue.offset = 0;
-	fb->fb.var.blue.length = 5;
-
-	framesize = width * height * 
-	  ANDROID_BYTES_PER_PIXEL * ANDROID_NUMBER_OF_BUFFERS;
-	fb->fb.screen_base = PGUIDE_FB_SCREEN_BASE;
-	fb->fb.fix.smem_start = PGUIDE_FB_SMEM_START;
-	fb->fb.fix.smem_len = framesize;
-
-	ret = fb_set_var(&fb->fb, &fb->fb.var);
-	if(ret)
-		goto err_fb_set_var_failed;
-
-	PGUIDE_FB_PROBE_SECOND;
-
-	ret = register_framebuffer(&fb->fb);
-	if(ret)
-		goto err_register_framebuffer_failed;
-
-	return 0;
-
-
-err_register_framebuffer_failed:
-err_fb_set_var_failed:
-	kfree(fb);
-err_fb_alloc_failed:
-	return ret;
-}
-
-static int pguide_fb_remove(struct platform_device *pdev)
-{
-	struct pguide_fb *fb = platform_get_drvdata(pdev);
-
-	PGUIDE_FB_REMOVE;
-
-	kfree(fb);
-	return 0;
-}
-
-
-static struct platform_driver pguide_fb_driver = {
-	.probe		= pguide_fb_probe,
-	.remove		= pguide_fb_remove,
-	.driver = {
-		.name = "pguide_fb"
-	}
-};
-
-static int __init pguide_fb_init(void)
-{
-	return platform_driver_register(&pguide_fb_driver);
-}
-
-static void __exit pguide_fb_exit(void)
-{
-	platform_driver_unregister(&pguide_fb_driver);
-}
-
-module_init(pguide_fb_init);
-module_exit(pguide_fb_exit);
-
-MODULE_LICENSE("GPL");
-</pre>
-
-
-<a name="androidDisplayDriversTroubleshooting"></a><h3>Troubleshooting</h3>
-
-<p>Both of the following problems have a similar cause:</p>
-<ul>
-  <li><strong>Number keys</strong>: In the dialer application, when a number key is pressed to dial a phone number, the number doesn't display on the screen until after the next number has been pressed. </li>
-  <li><strong>Arrow keys</strong>: When an arrow key is pressed, the desired icon doesn't get highlighted. For example, if you browse through icons in the Applications menu, you might notice that icons aren't highlighted as expected when you use the arrow key to navigate between options.</li>
-</ul>
-<p>Both problems are caused by an incorrect implementation of the frame buffer's page flipping. Key events are captured, but the graphical interface appears to drop every other frame. </p>
-<p>Android relies on a double buffer to smoothly render page flips (please see <a href="#androidDisplayDriverFunctionality">Functionality</a> for details).</p>
diff --git a/pdk/docs/porting/getting_source_code.jd b/pdk/docs/porting/getting_source_code.jd
deleted file mode 100755
index 30a2f9f..0000000
--- a/pdk/docs/porting/getting_source_code.jd
+++ /dev/null
@@ -1,128 +0,0 @@
-page.title=Getting Source Code
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidSourceSetupBuildGitSetup">Introduction</a><br/>
-<a href="#androidSourceSetupBuildGitSetupInstall">Installing and Configuring Git</a><br/>
-<a href="#androidSourceSetupBuildGitSetupServer">Establishing Server Access</a><br/><div style="padding-left:40px">
-
-<a href="#androidSourceSetupBuildGitSetupServerRSAKeys">Generating RSA Keys</a><br/>
-<a href="#androidSourceSetupBuildGitSetupServerVerifyConnection">Verifying a Connection to the Git Server</a><br/></div>
-<a href="#androidSourceSetupGetCode">Downloading Code</a><br/>
-<a href="#androidSourceSetupExtractingPatch">Extracting an Android Patch</a><br/></div>
-
-<a name="androidSourceSetupBuildGitSetup"></a><h2>Introduction</h2>
-
-<p>Android relies on Git, a version control system, to install the Android platform. You will need to install Git 1.5.2 or greater in order to access the source tree. Please visit <a href="http://git.or.cz/">http://git.or.cz/</a> for more information regarding Git.</p>
-<p>Git permits you to control access to working directories, and we recommend that you use it to limit Android repository access to only a few people within your organization (please refer to your Google NDA for potential contractual restraints on sharing Android source access). </p>
-<p>You may clone Google's repository to a local copy for sharing internally (see Git documentation for details).</p>
-
-
-<a name="androidSourceSetupBuildGitSetupInstall"></a><h2>Installing and Configuring Git</h2>
-
-<p>To install the Git package, execute:</p>
-<pre class="prettyprint">
-% sudo apt-get install git-core
-</pre>
-
-
-<a name="androidSourceSetupBuildGitSetupServer"></a><h2>Establishing Server Access</h2>
-
-<p>Once Git is cleanly installed, you need to establish a connection with Google's Git server, a connection that requires an RSA key in order to authenticate requests.</p>
-
-
-<a name="androidSourceSetupBuildGitSetupServerRSAKeys"></a><h3>Generating RSA Keys</h3>
-
-<p>Each developer must have a unique RSA key in order to access Android source code. To generate an RSA key: </p>
-<p>
-<ol>
-<li>Type:<br/>
-<pre class="prettyprint">% ssh-keygen -t rsa -C  email@domain.com</pre><br/>
-You must use a valid email address to create your key.</li>
-<li>When prompted, indicate the file to which you wish to write your key (<code>id_rsa</code> in this example).</li>
-<li>When prompted, associate a passphrase with your key.</li>
-<li>Upon success, you should have two files saved to the designated directory:  </li>
-<ul>
-  <li><code>id_rsa</code>: This file contains the private half of your RSA key. You shouldn't share this file with anyone. </li>
-  <li><code>id_rsa.pub</code>: This is the public half or your RSA key and you should send it to your Google technical account manager.</li>
-  </ul>
-</ol>
-</p>
-<p>Send your Google Account Manager your public key file in order to establish Git server access. </p>
-
-
-<a name="androidSourceSetupBuildGitSetupServerVerifyConnection"></a><h3>Verifying a Connection to the Git Server</h3>
-
-<p>Once you have generated an RSA key and shared the public file with Google, you can test your connection with the Git server with the following command:</p>
-<pre class="prettyprint">
-% ssh  android-git.ext.google.com
-</pre>
-
-<p>You should receive one of the following results:</p>
-
-<table border=1 cellpadding=2 cellspacing=0>
- <tbody><tr>
-  <th scope="col">Result</th>
-  <th scope="col">Cause</th>
-  <th  scope="col">Action</th>
- </tr>
-  <tr>
-    <td>
-<code>fatal: What do you think I am? A shell?<BR>
-Connection to android-git closed.</code>
-</pre>	</td>
-    <td>Success</td>
-    <td>None. You successfully connected to the Git server. (You should not have shell access and it's expected to receive this error.)</td>
-  </tr>
-  <tr>
-    <td>ssh hangs and eventually times out. </td>
-    <td>Your setup is failing to locate and establish a basic connection. </td>
-    <td>Google needs to debug network settings. </td>
-  </tr>
-  <tr>
-    <td>Error: Permission denied &lt;public key&gt; </td>
-    <td>Either you are not using the matching username or the RSA private key does not match the public key. </td>
-    <td>Try executing:<BR> 
-	<code>
-% ssh $USER@android-
-  git.ext.google.com
-</code></td>
-  </tr>
-</table>
-
-
-<a name="androidSourceSetupGetCode"></a><h2>Downloading Code</h2>
-
-<p>Android source code is maintained in two repositories: <code>device</code> and <code>kernel</code>. The <code>device</code> repository includes the Android framework (things like the Activity Manager, Window Manager, Telephony Manager, View System, etc.). The <code>kernel</code> repository includes the core code necessary to run the operating system (things like the Display Driver, Camera Driver, Keypad Driver, Power Management, etc.). (Please see <a href="http://code.google.com/android/what-is-android.html">What is Android?</a> for details.)</p>
-
-<p>Save device and kernel code at the same directory level, for example:</p>
-<p>
-<ul><li><code>/home/joe/android/device</code></li>
-<li><code>/home/joe/android/kernel</code></li>
-</ul></p>
-<p><b>Device Code</b></p>
-<p>To download device code, you need your username and a unique <code>&lt;path&gt;</code> string supplied by Google to execute the following:</p>
-<pre class="prettyprint">
-% git-clone $USER@android-git.ext.google.com:&lt;path&gt;/device.git
-</pre>
-
-<p><b>Kernel Code</b></p>
-<p>To download kernel code, you need your username and a unique <code>&lt;path&gt;</code> string supplied by Google to execute the following:</p>
-<pre class="prettyprint">
-% git-clone $USER@android-git.ext.google.com:&lt;path&gt;/kernel.git
-</pre>
- 
-
-
-<a name="androidSourceSetupExtractingPatch"></a><h2>Extracting an Android Patch</h2>
-
-<p>You likely already have Linux running on your platform and only need to integrate Android-specific changes. The following directions describe how to extract an Android patch.</p>
-<ol>
-  <li>Download a generic version  of the Linux kernel that matches the Linux version downloaded with the Android Kernel code.</li>
-  <li>Run <code>diff</code> on the two kernel packages to get Android-specific changes.</li>
-  <li>Apply the patch to your target kernel and build.</li>
-</ol>
-
diff --git a/pdk/docs/porting/gps.jd b/pdk/docs/porting/gps.jd
deleted file mode 100755
index 1449460..0000000
--- a/pdk/docs/porting/gps.jd
+++ /dev/null
@@ -1,60 +0,0 @@
-page.title=GPS
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidGPSBuildingDriver">Building a GPS Library</a></li>
-<li><a href="#androidGPSInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android defines a user space C abstraction interface for GPS hardware. The interface header is defined in <code>include/hardware/gps.h</code>. In order to integate GPS with Android, you need to build a shared library that implements this interface. </p>
-
-
-<a name="androidGPSBuildingDriver"></a><h3>Building a GPS Library</h3>
-
-<p>To implement a GPS driver, create a shared library that implements the interface defined in <code>gps.h</code>. You must name your shared library <code>libgps.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. Place GPS sources and Android.mk in <code>vendor/acme/chipset_or_board/gps/</code> (where "acme" is your organization name and "chipset_or_board" is your hardware target).</p>
-
-<p>The following stub <code>Android.mk</code> file ensures that <code>libgps</code> compiles and links to the appropriate libraries:</p>
-
-<pre class="prettify">
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libgps
-
-LOCAL_STATIC_LIBRARIES:= \
-# include any static library dependencies
-
-LOCAL_SHARED_LIBRARIES := \
-# include any shared library dependencies
-
-LOCAL_SRC_FILES += \
-# include your source files.  eg. MyGpsLibrary.cpp
-
-LOCAL_CFLAGS += \
-# include any needed compile flags
-
-LOCAL_C_INCLUDES:= \
-# include any needed local header files
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
-
-
-<a name="androidGPSInterface"></a><h3>Interface</h3>
-
-
-
-<p><span class="lh3"><a name="androidDoxygenNote"></a></span>
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="gps.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="gps_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/porting/group__memory.jd b/pdk/docs/porting/group__memory.jd
deleted file mode 100755
index 224e0cb..0000000
--- a/pdk/docs/porting/group__memory.jd
+++ /dev/null
@@ -1,24 +0,0 @@
-page.title=Providing Heap Memory
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-
-<small>
-[<a class="el" href="group__networking.html">Neworking Support</a>]</small>
-</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-</table>
-This is the text in the "Providing Heap Memory" subgroup </div>
-
diff --git a/pdk/docs/porting/group__networking.jd b/pdk/docs/porting/group__networking.jd
deleted file mode 100755
index 67da8a6..0000000
--- a/pdk/docs/porting/group__networking.jd
+++ /dev/null
@@ -1,26 +0,0 @@
-page.title=Networking Support
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-
-<table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__memory.html">Porividng Heap Memory</a></td></tr>
-
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This is a text for the Networking Support Group </div>
-
diff --git a/pdk/docs/porting/images/androidBluetooth.gif b/pdk/docs/porting/images/androidBluetooth.gif
deleted file mode 100755
index 1c1aa3f..0000000
--- a/pdk/docs/porting/images/androidBluetooth.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/androidPMArchitecture.gif b/pdk/docs/porting/images/androidPMArchitecture.gif
deleted file mode 100755
index 1aa48db..0000000
--- a/pdk/docs/porting/images/androidPMArchitecture.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/android_audio_architecture.gif b/pdk/docs/porting/images/android_audio_architecture.gif
deleted file mode 100755
index 79854a3..0000000
--- a/pdk/docs/porting/images/android_audio_architecture.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/cameraPreview.jpg b/pdk/docs/porting/images/cameraPreview.jpg
deleted file mode 100755
index 3dea011..0000000
--- a/pdk/docs/porting/images/cameraPreview.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/cameraTakePicture.jpg b/pdk/docs/porting/images/cameraTakePicture.jpg
deleted file mode 100755
index 4ac6d95..0000000
--- a/pdk/docs/porting/images/cameraTakePicture.jpg
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/camera_video2.gif b/pdk/docs/porting/images/camera_video2.gif
deleted file mode 100755
index 8c46a83..0000000
--- a/pdk/docs/porting/images/camera_video2.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/customLogo.gif.png b/pdk/docs/porting/images/customLogo.gif.png
deleted file mode 100755
index 3322fed..0000000
--- a/pdk/docs/porting/images/customLogo.gif.png
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk.gif b/pdk/docs/porting/images/stk.gif
deleted file mode 100755
index 9d6db69..0000000
--- a/pdk/docs/porting/images/stk.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk_display_text.gif b/pdk/docs/porting/images/stk_display_text.gif
deleted file mode 100755
index b737c51..0000000
--- a/pdk/docs/porting/images/stk_display_text.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk_display_text2.gif b/pdk/docs/porting/images/stk_display_text2.gif
deleted file mode 100755
index cac707b..0000000
--- a/pdk/docs/porting/images/stk_display_text2.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk_refresh_init.gif b/pdk/docs/porting/images/stk_refresh_init.gif
deleted file mode 100755
index a79ccaa..0000000
--- a/pdk/docs/porting/images/stk_refresh_init.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk_refresh_reset.gif b/pdk/docs/porting/images/stk_refresh_reset.gif
deleted file mode 100755
index dff8d4e..0000000
--- a/pdk/docs/porting/images/stk_refresh_reset.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk_refresh_update.gif b/pdk/docs/porting/images/stk_refresh_update.gif
deleted file mode 100755
index 15614ed..0000000
--- a/pdk/docs/porting/images/stk_refresh_update.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/stk_send_SMS.gif b/pdk/docs/porting/images/stk_send_SMS.gif
deleted file mode 100755
index 67fc1a0..0000000
--- a/pdk/docs/porting/images/stk_send_SMS.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/telephony.gif b/pdk/docs/porting/images/telephony.gif
deleted file mode 100755
index 8515730..0000000
--- a/pdk/docs/porting/images/telephony.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/telephony_solicted_example.gif b/pdk/docs/porting/images/telephony_solicted_example.gif
deleted file mode 100755
index 352ca98..0000000
--- a/pdk/docs/porting/images/telephony_solicted_example.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/images/telephony_unsolicted_example.gif b/pdk/docs/porting/images/telephony_unsolicted_example.gif
deleted file mode 100755
index e51c4d6..0000000
--- a/pdk/docs/porting/images/telephony_unsolicted_example.gif
+++ /dev/null
Binary files differ
diff --git a/pdk/docs/porting/index.jd b/pdk/docs/porting/index.jd
deleted file mode 100644
index 76609d2..0000000
--- a/pdk/docs/porting/index.jd
+++ /dev/null
@@ -1,28 +0,0 @@
-page.title=Android Platform Developer's Guide
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-<p>Welcome to the <i>Android Platform Dev Guide</i>!  This guide provides an under-the-hood introduction to the Android platform, and is designed for platform developers and manufacturers building Android-powered devices.</p>
-
-<p>If you're a software developer interested in developing applications for Android, please visit the <a href="http://developer.android.com">Android Developers site</a>.</p>
-
-<a name="androidWelcomeAboutThisGuide"></a><h2>About this Guide</h2>
-
-<p>This guide is divided into sections by logical platform component (see the table of contents on the left).  Android is a complex project under constant development, and the level of detail, as well as the rate of change, may vary from section to section.  This guide will be updated regularly as more content becomes available.</p>
-
-<a name="androidWelcomeIntendedAudience"></a><h2>Intended Audience</h2>
-
-<p>This guide is intended for engineers who are proficient with building and running Linux on embedded devices.  It aims to provide explanation of the Android platform rather than Linux or embedded development in general.</p>
-
-<a name="androidWelcomeGettingStarted"></a><h2>Getting Started with Android</h2>
-
-<p>If you are new to Android, start with the platform documentation on the following sites:
-<ul>
-<li><a href="http://developer.android.com">Android Developers site</a>:  This site offers high-level platform documentation and architecture concepts.</li>
-<li><a href="{@docRoot}">Android Open Source Project site</a>:  This site provides instructions on how to get the source code, establish a development environment, and perform a simple build.</li>
-</ul>
-
-<p>When you are ready to start customizing the platform or porting to your target hardware, start in this guide with the <a href="build_system.html">Build System overview</a>.</p>
-
diff --git a/pdk/docs/porting/instrumentation_framework.jd b/pdk/docs/porting/instrumentation_framework.jd
deleted file mode 100755
index fcb006b..0000000
--- a/pdk/docs/porting/instrumentation_framework.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Instrumentation Framework
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidInstrumentationFrameworkIntro">Introduction</a><br/>
-<a href="#androidInstrumentationFrameworkamCommand">Understanding the am Command</a><br/>
-<a href="#androidInstrumentationFrameworkWritingRunning">Writing and Running Test Cases</a><br/>
-<a href="#androidInstrumentationFrameworkTestCase">Exploring a Test Case</a><br/>
-<a href="#androidInstrumentationFrameworkTroubleshooting">Troubleshooting</a><br/></div>
-
-<a name="androidInstrumentationFrameworkIntro"></a><h2>Introduction</h2>
-
-<p>This document describes how to use the Instrumentation Framework to write test cases. You should have a working knowledge of the following:</p>
-<ul>
-  <li> Android Application Framework </li>
-  <li> Using <code>adb</code>, <code>am</code> and various logging functionality </li>
-  <li> A brief understanding of the application of interest, that is, he names of the classes which handle the intents etc. </li>
-  <li> Junit testing. </li>
-</ul>
-<p> Each Android application runs in its own process. Instrumentation kills the application process and  restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs. </p>
-
-
-<a name="androidInstrumentationFrameworkamCommand"></a><h2>Understanding the am Command</h2>
-
-<p><code>am</code> is used to start and instrument activities using the adb shell command, as shown in the snippet below:</p>
-<pre class="prettify">
-&gt; adb shell am
-usage: am [start|instrument]
-       am start [-a &lt;ACTION&gt;] [-d &lt;DATA_URI&gt;] [-t &lt;MIME_TYPE&gt;]
-                [-c &lt;CATEGORY&gt; [-c &lt;CATEGORY&gt;] ...]
-                [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; ...]
-                [-n &lt;COMPONENT&gt;] [-D] [&lt;URI&gt;]
-       am instrument [-e &lt;ARG_NAME&gt; &lt;ARG_VALUE&gt;] [-p &lt;PROF_FILE&gt;]
-                [-w] &lt;COMPONENT&gt;
-For example, to start the Contacts application you can use
-&gt; adb shell am start -n com.google.android.contacts/.ContactsActivity
-</pre>
-
-
-<a name="androidInstrumentationFrameworkWritingRunning"></a><h2>Writing and Running Test Cases</h2>
-
-<p>Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the <code>tests/Contacts</code> directory. </p>
-<ul>
-  <li> There should be a Makefile and an Android Manifest file. </li>
-  <li> Tests are located in <code>tests/Contacts/src/com/google/android/contactstests</code>. </li>
-  <li> The Instrumentation Test Runner is located at <code>tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java</code>.</li>
-</ul>
-<p>Suppose you have a makefile with <code>Contactstests</code> as the target. </p>
-<ul>
-  <li> <code>make Contactstests</code>: Compiles the test cases. </li>
-  <li> <code>adb install Contactstests.apk</code>: Installs the apk on the device. </li>
-  <li> Use the adb shell <code>am</code> command to run them. </li>
-</ul>
-<p> For options and other details, please see <a href="instrumentation_testing.html" target="_top">Instrumentation Testing</a>.</p>
-
-
-<a name="androidInstrumentationFrameworkTestCase"></a><h2>Exploring a Test Case</h2>
-
-<p> The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc. </p>
-<p><code>Instrumentation.java</code> has helper functions that send key events and string, for example: </p>
-<ul>
-  <li><code>getInstrumentation()</code>: Returns the handle to the instrumentation </li>
-  <li><code>sendCharacterSync</code>: Sends a character. </li>
-  <li><code>sendStringSync</code>: Sends a string to an input box. </li>
-  <li><code>sendKeyDownUpSync</code>: Sends a specific keyevent. </li>
-  <li><code>sendTrackballEventSync</code>: Send a trackball event.</li>
-</ul>
-<p> You can find the test case below at <code>device/tests/Contacts.</code></p>
-<pre class="prettify">
-private void addNewContact(String name, int star, int phoneType, String number, String label,
-		String email, int emailType){
-	ContentValues values = new ContentValues();
-	Uri phoneUri = null;
-	Uri emailUri = null;
-
-	values.put(Contacts.People.NAME, name);
-	values.put(Contacts.People.STARRED, star);
-
-	//Add Phone Numbers
-	Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
-	phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(Contacts.Phones.TYPE, phoneType);
-	values.put(Contacts.Phones.NUMBER, number);
-	values.put(Contacts.Phones.LABEL, label);
-	mActivity.getContentResolver().insert(phoneUri, values);
-
-	//Add Email
-	emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
-	values.put(ContactMethods.DATA, email);
-	values.put(ContactMethods.LABEL, "");
-	values.put(ContactMethods.TYPE, emailType);
-	mActivity.getContentResolver().insert(emailUri, values);
-}
-
-
- public void testAddSaveSingleContact(){
-	int previousCount = mActivity.getListView().getCount();
-	String message;
-
-	addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
-
-	message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
-		mActivity.getListView().getCount();
-	assertEquals(message, ++previousCount, mActivity.getListView().getCount());
-
-	// Check Content; Name; Num; Starred
-	assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
-	assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
-
-	//Check email is saved
-	//cursor = returnEmailCursorAtId("1");
-	Uri uri = Uri.parse("content://contacts/people/1");
-	uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-	Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
-	assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
-
-	int dataIndex = cursor.getColumnIndexOrThrow("data");
-	assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
-	cursor.deactivate();
-}
-	</pre>
-
-
-<a name="androidInstrumentationFrameworkTroubleshooting"></a><h2>Troubleshooting</h2>
-
-<p>If you run your test cases and nothing appears to happen, have a look at <code>adb logcat</code>. The following is a common problem:</p>
-<pre class="prettify">
-I/dalvikvm(  688): threadid=11: attached from native, name=Binder Thread #1
-I/dalvikvm(  688): threadid=13: attached from native, name=Binder Thread #2
-W/ActivityManager(  469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
-D/AndroidRuntime(  688): Shutting down VM
-E/AndroidRuntime(  688): ERROR: thread attach failed
-</pre>		
-<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
-
diff --git a/pdk/docs/porting/instrumentation_testing.jd b/pdk/docs/porting/instrumentation_testing.jd
deleted file mode 100755
index 045291f..0000000
--- a/pdk/docs/porting/instrumentation_testing.jd
+++ /dev/null
@@ -1,494 +0,0 @@
-page.title=Instrumentation Testing
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidInstrumentationTestingFramework">Instrumentation Framework</a></li>
-<li><a href="#androidInstrumentationFrameworkPlatform">Platform Test Suites</a></li>
-<li><a href="#androidInstrumentationFrameworkWritingRunning">Running Tests</a></li>
-<li><a href="#androidInstrumentationTestingCreating">Writing Tests</a></li>
-<li><a href="#troubleshooting">Troubleshooting</a></li>
-</ul>
-</div>
-</div>
-
-<p>This document describes how to use the Instrumentation Framework to write test cases. Instrumentation testing allows you to verify a particular feature or behavior with an automated JUnit TestCase. You can launch activities and providers within an application, send key events, and make assertions about various UI elements. </p>
-<p>You should have a working knowledge of the following:</p>
-<ul>
-  <li> Android Application Framework</li>
-  <li> Using <code>adb</code>, <code>am</code> and various logging functionality </li>
-  <li> A brief understanding of the application of interest, that is, the names of the classes which handle the intents etc. </li>
-  <li> JUnit testing.</li>
-</ul>
-<p> Each Android application runs in its own process. Instrumentation kills the application process and  restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs. </p>
-
-
-<a name="androidInstrumentationTestingFramework"></a><h3>Instrumentation Framework</h3>
-
-
-
-<a name="androidInstrumentationTestingClasses"></a><h4>Classes</h4>
-
-<p> The following classes help glue together <code>Instrumentation</code> with JUnit testing. </p>
-<table>
-  <tr>
-    <th scope="col">Class</th>
-    <th scope="col">Description</th></tr>
-  <tr>
-    <td valign="top"><code>InstrumentationTestCase</code></td>
-    <td valign="top">
-	<p>This extends the standard JUnit <code>TestCase</code> and offers access to an <code>Instrumentation</code> class. Write tests inside your instrumentation class any way you see fit. For example, your test might launch activities and send key events. For this to work properly, the instrumentation needs to be injected into the test case.</p>	</td>
-  </tr>
-  <tr>
-    <td valign="top"><code>InstrumentationTestRunner</code></td>
-    <td valign="top">The instrumentation test runner is an instrumentation that runs instrumentation test cases and injects itself into each test case. Instrumentation test cases need to be grouped together with an instrumentation test runner with the appropriate target package.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code>InstrumentationTestSuite</code></td>
-    <td valign="top">The instrumentation test suite is a simple extension of the standard JUnit <code>TestSuite</code> that keeps a member <code>Instrumentation</code> variable on hand to inject into each <code>TestCase</code> before running them.  It is used by <code>InstrumentationTestRunner</code>.</td>
-  </tr>
-</table>
-<p> Three additional base classes extend <code>InstrumentationTestCase</code> to allow you to test <code>Activity</code> and <code>Provider</code> classes:</p>
-<table>
-  <tr>
-    <th scope="col">Class</th>
-    <th scope="col">Description</th>
-  </tr>
-  <tr>
-    <td valign="top"><code>ActivityTestCase</code></td>
-    <td valign="top"><p>This class can be used to write tests for a specific activity.  An activity is launched in its <code>setUp()</code> method and finished with <code>tearDown</code>.  If you write a test case that extends <code>ActivityTestCase</code>, you can write tests that access the activity using <code>getActivity()</code> and assume it has been set up properly.</p></td>
-  </tr>
-  <tr>
-    <td valign="top"><code>ServiceTestCase</code></td>
-    <td valign="top">This test case provides a framework in which you can test Service classes in a controlled environment.  It provides basic support for the lifecycle of a Service, and hooks by which you can inject various dependencies and control the environment in which your Service is tested.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code>SingleLaunchActivityTestCase</code></td>
-    <td valign="top">This class is similar to <code>ActivityTestCase</code> except that the activity is launched once per class instead of every time the test case calls setup. </td>
-  </tr>
-  <tr>
-    <td valign="top"><code>ProviderTestCase</code></td>
-    <td valign="top">This class is similar to <code>ActivityTestCase</code> except that it will setup, tear down, and provide access to the <code>Provider</code> of your choice.</td>
-  </tr>
-</table>
-
-
-<a name="androidInstrumentationFrameworkamCommand"></a><h4>Understanding the am Command</h4>
-
-<p>The am command is a command-line interface to the ActivityManager (see <a href="http://code.google.com/android/reference/android/app/ActivityManager.html">http://code.google.com/android/reference/android/app/ActivityManager.html</a> for details). <code>am</code> is used to start and instrument activities using the adb shell command, as shown in the snippet below:</p>
-<pre class="prettify">
-&gt; adb shell am
-usage: am [start|instrument]
-       am start [-a &lt;ACTION&gt;] [-d &lt;DATA_URI&gt;] [-t &lt;MIME_TYPE&gt;]
-                [-c &lt;CATEGORY&gt; [-c &lt;CATEGORY&gt;] ...]
-                [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; [-e &lt;EXTRA_KEY&gt; &lt;EXTRA_VALUE&gt; ...]
-                [-n &lt;COMPONENT&gt;] [-D] [&lt;URI&gt;]
-       am instrument [-e &lt;ARG_NAME&gt; &lt;ARG_VALUE&gt;] [-p &lt;PROF_FILE&gt;]
-                [-w] &lt;COMPONENT&gt;
-For example, to start the Contacts application you can use
-&gt; adb shell am start -n com.google.android.contacts/.ContactsActivity
-</pre>
-
-
-<a name="androidInstrumentationFrameworkPlatform"></a><h3>Platform Test Suites</h3>
-
-<p>This section provides an overview for various unit and functional test cases that can be executed through the instrumentation framework.</p>
-
-
-<a name="androidTestingPlatformFramework"></a><h4>Framework Tests</h4>
-
-<p>Framework test cases test the Android application framework or specific Android application functionality that requires an Android runtime context.  These tests can be found in <code>//device/tests</code> and <code>//device/apps/AndroidTests</code>.</p>
-
-
-<a name="androidTestingPlatformCoreLibrary"></a><h4>Core Library</h4>
-
-<p>Core library test cases test the Android library functionality that does not require an Android runtime context.  These tests are split into Android library (android.* package space) tests at <code>//device/java/tests</code> and Java library (java.*, javax.*, etc. packages) tests at <code>//device/dalvik/libcore/.../tests</code>.</p>
-
-
-<a name="androidInstrumentationFrameworkWritingRunning"></a><h3>Running Tests</h3>
-
-<p>Each instrumentation test case is similar to an Android application with the distinction that it starts another application. For example, have a look in the <code>tests/Contacts</code> directory. </p>
-<ul>
-  <li> There should be a Makefile and an Android Manifest file. </li>
-  <li> Tests are located in <code>tests/Contacts/src/com/google/android/contactstests</code>. </li>
-  <li> The Instrumentation Test Runner is located at <code>tests/Contacts/src/com/google/android/contactstests/functional/ContactsInstrumentationTestRunner.java</code>.</li>
-</ul>
-<p>Suppose you have a makefile with <code>Contactstests</code> as the target. </p>
-<ul>
-  <li> <code>make Contactstests</code>: Compiles the test cases. </li>
-  <li> <code>adb install Contactstests.apk</code>: Installs the apk on the device. </li>
-  <li> Use the adb shell <code>am</code> command to run them. </li>
-</ul>
-<p> To run your tests, use the <code>am instrument</code> command with your <code>InstrumentationTestRunner</code> as its argument. Results are printed as a result of the instrumentation. For example, the following snippet displays the output after running the framework tests with one test failing (note the unusual syntax caused by how instrumentations are run via <code>am</code>):</p>
-<pre class="prettify">
-$ adb shell am instrument -w com.google.android.frameworktest/.tests.FrameworkInstrumentationTestRunner
-INSTRUMENTATION_RESULT: test results:=.......F.......
-Time: 6.837
-There was 1 failure:
-1) testSetUpConditions(com.google.android.frameworktest.tests.focus.RequestFocusTest)junit.framework.AssertionFailedError: requestFocus() should work from onCreate.
-        at com.google.android.frameworktest.tests.focus.RequestFocusTest.testSetUpConditions(RequestFocusTest.java:66)
-        at java.lang.reflect.Method.invokeNative(Native Method)
-        at android.test.InstrumentationTestSuite.runTest(InstrumentationTestSuite.java:73)
-        at android.test.InstrumentationTestSuite.runTest(InstrumentationTestSuite.java:73)
-        at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:151)
-        at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1088)
-
-FAILURES!!!
-Tests run: 14,  Failures: 1,  Errors: 0
-
-&lt;RETURN&gt; to continue
-
-INSTRUMENTATION_CODE: -1
-$ 
-</pre>
-
-
-<a name="androidInstrumentationTestingRunningAll"></a><h4>All Tests with Default TestRunner behavior</h4>
-
-<p>If no class or package is passed in to run, InstrumentationTestRunner will automatically find and run all tests under the package of the test application (as defined by the <code>android:targetPackage</code> attribute of the instrumentation defined in its manifest file).
-</p> 
-<pre> 
-$ adb shell am instrument -w \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=..........
-Time: 2.317
- 
-OK (10 tests)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre>
-
-
-<a name="androidTestingTestSinglePakcage"></a><h4>Running all Tests Under Single Package</h4>
-
-<p>If you have many tests under one package, use the <code>-e package &lt;packagename&gt;</code> option to run all tests under that package without having to manually create a test suite.</p> 
-<pre> 
-$ adb shell am instrument -w \
-  -e package com.android.samples.view \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
-INSTRUMENTATION_RESULT: Test results for InstrumentationTestRunner=........
-Time: 1.587
- 
-OK (8 tests)
-</pre>  
-
-
-<a name="androidTestingSingleTestSuite"></a><h4>Running a Single Test Suite</h4>
-
-<p>If you prefer to explicitly state which tests comprise all of your tests, you can define a test suite and run that directly. By convention, all test packages in your system should have at least one suite called <code>AllTests</code> (see <code>AllTests.java</code>).  To run all of the tests using the <code>AllTests</code> suite for the api demos test app:</p>
-
-<pre> 
-$ adb shell am instrument -w \
-  -e class com.android.samples.AllTests \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for AllTests=..........
-Time: 2.286
- 
-OK (10 tests)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre> 
-
-
-<a name="androidInstrumentationTestingRunningSingleTestCase"></a><h4>A Single Test Case</h4>
-
-<pre> 
-$ adb shell am instrument -w \
-  -e class com.android.samples.view.Focus2ActivityTest \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=....
-Time: 1.359
- 
-OK (4 tests)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre> 
-
-
-<a name="androidInstrumentationTestingRunningSingleTest"></a><h4>A Single Test</h4>
-
-<pre> 
-$ adb shell am instrument -w \
-  -e class com.android.samples.view.Focus2ActivityTest#testGoingLeftFromRightButtonGoesToCenter \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
- 
-INSTRUMENTATION_RESULT: Test results for Focus2ActivityTest=.
-Time: 0.51
- 
-OK (1 test)
- 
- 
-INSTRUMENTATION_CODE: -1
-</pre> 
-
-
-<a name="androidTestingDebugging"></a><h4>Attaching a debugger to your test</h4>
-
-<p>In order to debug your test code, instruct the controller to stop and wait for the debugger by adding <code>-e debug true</code> to your
-command line.  This causes the test runner to stop and wait for the debugger just before calling your <code>setUp()</code> method.  For example,</p> 
-
-<pre> 
-$ adb shell am instrument -w \
-  -e debug true \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
-</pre> 
-
-
-<a name="androidInstrumentationTestingCreating"></a><h3>Writing Tests</h3>
-
-<p>When writing tests, refer to the ApiDemos tests as models (located at <code>//device/samples/ApiDemos</code>). This section provides an overview of the test structure with ApiDemos.</p>
-
-
-<a name="androidTestingLocationFiles"></a><h4>Location of Files</h4>
-
-<p>Test packages should use the following structure and include <code>Android.mk</code>, <code>AndroidManifest.xml</code>, <code>AllTests.java</code>, and a src directory that mirrors the src directory of the tested application.</p> 
-<p>Files are located within a <code>tests</code> directory found in the root directory:</p> 
-<pre> 
-$ find samples/ApiDemos/tests
-samples/ApiDemos/tests
-samples/ApiDemos/tests/Android.mk
-samples/ApiDemos/tests/AndroidManifest.xml
-samples/ApiDemos/tests/src
-samples/ApiDemos/tests/src/com
-samples/ApiDemos/tests/src/com/google
-samples/ApiDemos/tests/src/com/google/android
-samples/ApiDemos/tests/src/com/google/android/samples
-samples/ApiDemos/tests/src/com/google/android/samples/AllTests.java
-samples/ApiDemos/tests/src/com/google/android/samples/ApiDemosTest.java
-samples/ApiDemos/tests/src/com/google/android/samples/os
-samples/ApiDemos/tests/src/com/google/android/samples/os/MorseCodeConverterTest.java
-samples/ApiDemos/tests/src/com/google/android/samples/view
-samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2ActivityTest.java
-samples/ApiDemos/tests/src/com/google/android/samples/view/Focus2AndroidTest.java
-</pre>
-
-
-<a name="androidTestingContentMakefile"></a><h4>Contents of makefile</h4>
-
-<p>The contents of the makefile are similar to a normal application with the addition of a <code>LOCAL_INSTRUMENTATION_FOR</code> declaration.<p /> 
-<pre> 
-# Add appropriate copyright banner here
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
- 
-# We only want this apk build for tests.
-LOCAL_MODULE_TAGS := tests
- 
-# Include all test java files.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
- 
-# Notice that we don't have to include the src files of ApiDemos because, by
-# running the tests using an instrumentation targeting ApiDemos, we
-# automatically get all of its classes loaded into our environment.
- 
-LOCAL_PACKAGE_NAME := ApiDemosTests
- 
-LOCAL_INSTRUMENTATION_FOR := ApiDemos
- 
-include $(BUILD_PACKAGE)
-</pre>
-
-
-<a name="androidTestingContentManifest"></a><h4>Content of Manifest</h4>
-
-<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied Instrumentation TestRunner targest the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
-<pre> 
-# Add appropriate copyright banner here
-&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.samples.tests"&gt;
- 
-    &lt;uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /&gt;
- 
-    &lt;!--
-    This declares that this app uses the instrumentation test runner targeting
-    the package of com.android.samples.  To run the tests use the command:
-    "adb shell am instrument -w com.android.samples.tests/android.test.InstrumentationTestRunner"
-    --&gt;
-    &lt;instrumentation android:name="android.test.InstrumentationTestRunner"
-                     android:targetPackage="com.android.samples"
-                     android:label="Tests for Api Demos."/&gt;
- 
-&lt;/manifest&gt;
-</pre> 
-<p>&nbsp;</p> 
-<p>The following snippet will prefix the <code>/android.test.InstrumentationTestRunner</code> when running tests from the command line:</p>
-<pre> 
-$ adb shell am instrument -w \
-  com.android.samples.tests/android.test.InstrumentationTestRunner
-</pre> 
-
-
-<a name="androidInstrumentationTestingCreatingTestRunner"></a><h4>New Instrumentation TestRunner</h4>
-
-<p>Create a class that derives from this class. You must override two abstract methods; one that returns the class loader of the target package, and another that defines all of the tests within the package. For example, the snippet below displays the test runner for the framework tests.</p>
-<pre class="prettify">
-public class FrameworkInstrumentationTestRunner extends InstrumentationTestRunner {
-
-    &#64;Override
-    public TestSuite getAllTests() {
-        InstrumentationTestSuite suite = new InstrumentationTestSuite(this);
-
-        suite.addTestSuite(FocusAfterRemovalTest.class);
-        suite.addTestSuite(RequestFocusTest.class);
-        suite.addTestSuite(RequestRectangleVisibleTest.class);
-        return suite;
-    }
-
-    &#64;Override
-    public ClassLoader getLoader() {
-        return FrameworkInstrumentationTestRunner.class.getClassLoader();
-    }
-}
-</pre>
-<p> Next, in an appropriate <code>AndroidManifest.xml</code>, define the instrumentation for the derived class with the appropriate <code>android:targetPackage</code> set.  For example, the snippet below defines the instrumentation runner for the framework tests.</p>
-<pre class="prettify">
-&lt;uses-permission android:name="android.permission.RUN_INSTRUMENTATION" /&gt;
-
-&lt;instrumentation android:name="android.tests.FrameworkInstrumentationTestRunner"
-                 android:targetPackage="com.google.android.frameworktest"
-                 android:label="framework instrumentation test runner" /&gt;
-</pre>		
-
-
-<a name="androidInstrumentationTestingCreatingTestCase"></a><h4>New InstrumentationTestCase</h4>
-
-<p> To create a new test case, write a class that extends <code>InstrumentationTestCase</code> in the same application as your test runner.  The following snippet illustrates an example <code>ActivityTestCase</code> that tests an activity named <code>MyActivity</code>.</p>
-<pre class="prettify">
-public class ButtonPressTest extends ActivityTestCase&lt;MyActivity&gt; {
-
-    Button mLeftButton;
-
-    public ButtonPressTest() {
-        super("com.example", MyActivity.class);
-    }
-
-    &#64;Override
-    public void setUp() throws Exception {
-      super.setUp();
-      mLeftButton = (Button) getActivity().findViewById(R.id.leftButton);
-    }
-
-    public void testFocusMovesToRight() throws Exception {
-        assertTrue(mLeftButton.hasFocus());
-        getInstrumentation().sendCharacterSync(KeyEvent.KEYCODE_DPAD_RIGHT);
-
-        Button rightButton = (Button) getActivity().findViewById(R.id.rightButton);
-        assertTrue(rightButton.hasFocus());
-    }
-
-    // could have several more tests...
-}
-</pre>
-
-
-<a name="androidInstrumentationFrameworkTestCase"></a><h4>Exploring a Test Case</h4>
-
-<p> The test case described in this section adds and tests a new Contact. Note that you can send intents, register intent receivers, etc. </p>
-<p><code>Instrumentation.java</code> has helper functions that send key events and strings, for example: </p>
-<ul>
-  <li><code>getInstrumentation()</code>: Returns the handle to the instrumentation </li>
-  <li><code>sendCharacterSync</code>: Sends a character. </li>
-  <li><code>sendStringSync</code>: Sends a string to an input box. </li>
-  <li><code>sendKeyDownUpSync</code>: Sends a specific keyevent. </li>
-  <li><code>sendTrackballEventSync</code>: Sends a trackball event.</li>
-</ul>
-<p> You can find the test case below at <code>device/tests/Contacts.</code></p>
-<pre class="prettify">
-private void addNewContact(String name, int star, int phoneType, String number, String label,
-		String email, int emailType){
-	ContentValues values = new ContentValues();
-	Uri phoneUri = null;
-	Uri emailUri = null;
-
-	values.put(Contacts.People.NAME, name);
-	values.put(Contacts.People.STARRED, star);
-
-	//Add Phone Numbers
-	Uri uri = mActivity.getContentResolver().insert(Contacts.People.CONTENT_URI, values);
-	phoneUri = Uri.withAppendedPath(uri, Contacts.People.Phones.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(Contacts.Phones.TYPE, phoneType);
-	values.put(Contacts.Phones.NUMBER, number);
-	values.put(Contacts.Phones.LABEL, label);
-	mActivity.getContentResolver().insert(phoneUri, values);
-
-	//Add Email
-	emailUri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-
-	values.clear();
-	values.put(ContactMethods.KIND, Contacts.KIND_EMAIL);
-	values.put(ContactMethods.DATA, email);
-	values.put(ContactMethods.LABEL, "");
-	values.put(ContactMethods.TYPE, emailType);
-	mActivity.getContentResolver().insert(emailUri, values);
-}
-
-
- public void testAddSaveSingleContact(){
-	int previousCount = mActivity.getListView().getCount();
-	String message;
-
-	addNewContact(INPUT_NAME_1 + "1", "5435754532", "1" + INPUT_EMAIL_1, CONFIRM_OPTION);
-
-	message = "Added 1 to initial length=" + previousCount + ", but resulted with a count=" +
-		mActivity.getListView().getCount();
-	assertEquals(message, ++previousCount, mActivity.getListView().getCount());
-
-	// Check Content; Name; Num; Starred
-	assertEquals(INPUT_NAME_1 + "1", getTextFromView(0, android.R.id.text1));
-	assertEquals("5435754532", getTextFromView(0, android.R.id.text2));
-
-	//Check email is saved
-	//cursor = returnEmailCursorAtId("1");
-	Uri uri = Uri.parse("content://contacts/people/1");
-	uri = Uri.withAppendedPath(uri, ContactMethods.CONTENT_DIRECTORY);
-	Cursor cursor = mActivity.getContentResolver().query(uri, CONTACTS_COLUMNS, null, null, null);
-	assertTrue("returnEmailCursorAtId: Moving cursor to first row has failed", cursor.first());
-
-	int dataIndex = cursor.getColumnIndexOrThrow("data");
-	assertEquals("1" + INPUT_EMAIL_1, cursor.getString(dataIndex));
-	cursor.deactivate();
-}
-	</pre>
-
-
-<a name="androidTestingKindsofTests"></a><h4>Deciding Kinds of Tests to Write</h4>
-
-<p>Once you are bootstrapped with your test application, you can start writing tests.  There are three of types of tests you may wish to write:</p> 
-<p><ul> 
-<li> <strong>TestCase</strong>: The standard junit test case.
-</li> 
-<li> <strong>AndroidTestCase</strong>: A test case with access to a Context object that is injected for you by the instrumentation test runner.
-</li> 
-<li> <strong>InstrumentationTestCase</strong>: A test case with access to an Instrumentation, which can be used to launch activities, content providers, send key events, etc.
-</li> 
-</ul> 
-</p> 
-<p>The API Demos test suite includes examples of all three styles and can be used as a guideline for writing each type of test.</p>
-<p>There are two utility classes available for the most common uses of InstrumentationTestCase: ActivityTestCase and ProviderTestCase.  See their javadoc for more information.
-</p>
-
-
-<a name="troubleshooting"></a><h3>Troubleshooting</h3>
-
-<p>If you run your test cases and nothing appears to happen, have a look at <code>adb logcat</code>. The following is a common problem:</p>
-<pre class="prettify">
-I/dalvikvm(  688): threadid=11: attached from native, name=Binder Thread #1
-I/dalvikvm(  688): threadid=13: attached from native, name=Binder Thread #2
-W/ActivityManager(  469): Unable to find instrumentation info for: ComponentInfo{com.google.android.browser_instrumentation/com.google.android.browser_instrumentation.BrowserWebkitLayoutInstrumentation}
-D/AndroidRuntime(  688): Shutting down VM
-E/AndroidRuntime(  688): ERROR: thread attach failed
-</pre>		
-<p>It's possible that the instrumentation apk isn't installed on your device or that the package name is incorrect in the Manifest file. </p>
diff --git a/pdk/docs/porting/intro_source_code.jd b/pdk/docs/porting/intro_source_code.jd
deleted file mode 100755
index 2ba413c..0000000
--- a/pdk/docs/porting/intro_source_code.jd
+++ /dev/null
@@ -1,171 +0,0 @@
-page.title=Source Code Overview
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidSourceCodeDirectories">Introduction</a><br/>
-<a href="#Android_Source">Android Source</a><br/><div style="padding-left:40px">
-
-<a href="#androidSourceCodeDirectoriesKernel">Linux Kernel</a><br/>
-<a href="#androidSourceCodeDirectoriesDevice">Android Platform and Applications</a><br/></div>
-<a href="#androidSourceGuidelines">Adding Source Code</a><br/></div>
-
-<a name="androidSourceCodeDirectories"></a><h2>Introduction</h2>
-
-<p>Android source code is maintained in two code bases: the Android Linux kernel (<code>kernel</code> directory) and Android platform and applications (<code>device</code> directory). This document provides a high-level introduction to the source code organization and an overview of the major components of each primary directory.</p>
-
-<a name="Android_Source"></a><h2>Android Source</h2>
-
-
-<a name="androidSourceCodeDirectoriesKernel"></a><h3>Linux Kernel</h3>
-
-<p>The Android Linux kernel includes enhancements to the Linux 2.6 kernel that provide additional drivers to support the Android platform, including:</p>
-<ul>
-  <li>Binder: an OpenBinder-based driver to facilitate inter-process communication (IPC) in the Android platform.</li>
-  <li>Android Power Management: a light weight power management driver built on top of standard Linux power management but optimized for embedded systems.</li>
-  <li>Low Memory Killer: Based on hints from the userspace, the low memory killer can kill off processes to free up memory as necessary. It is designed to provide more flexibility than the Out Of Memory (OOM) killer in the standard kernel.</li>
-  <li>Logger: A light weight logging device used to capture system, radio, logdata, etc.</li>
-  <li>USB Gadget: Uses the USB function framework.</li>
-  <li>Android/PMEM: The PMEM (physical memory) driver is used to provide contiguous physical memory regions to userspace libraries that interact with the digital signal processor (DSP) and other hardware that cannot cope with scatter-gather.</li>
-  <li>Android Alarm: A driver which provides timers that can wake the device up from sleep and a monotonic timebase that runs while the device is asleep.</li>
-</ul>
-<p>Look for Android-specific enhancements in the following directories:</p>
-<p><ul>
-<li><code>/drivers/android</code></li>
-<li><code>/drivers/misc</code></li>
-<li><code>/include/linux</code></li>
-</ul>
-</p>
-
-
-<a name="androidSourceCodeDirectoriesDevice"></a><h3>Android Platform and Applications</h3>
-
-<p>The following list outlines the directory structure found within the <code>device</code> branch of Android source code:</p>
-
-
-<p><span class="lh2"><a name="gmapiMobileTagsListStart"></a></span>
-
-<ul>
-
-
-<li>apps
-Core Android applications such as Phone, Camera, and Calendar.
-</li>
-
-
-<li>boot
-Reference Android bootloader and other boot-related source code.
-</li>
-
-
-<li>commands
-Common Android commands, the most important of which is the runtime command, which does much of the initialization of the system.
-</li>
-
-
-<li>config
-System-wide makefiles and linker scripts.
-</li>
-
-
-<li>content
-Standard Android ContentProvider modules.
-</li>
-
-
-<li>dalvik
-Android runtime Virtual Machine (VM).
-</li>
-
-
-<li>data
-Fonts, keymaps, sounds, timezone information, etc.
-</li>
-
-
-<li>docs
-Full set of Android documentation.
-</li>
-
-
-<li>extlibs
-Non-Android libraries. This directory is intended to host unmodified external code. None of the libraries included within this directory rely on Android headers or libraries.
-</li>
-
-
-<li>ide
-Tools for support of the IDE's used to write Android applications.
-</li>
-
-
-<li>include
-Android system headers for inclusion.
-</li>
-
-
-<li>java
-Android core APIs, as well as some external libraries.
-</li>
-
-
-<li>libs
-Android-specific C++ based libraries.
-</li>
-
-
-<li>partner
-Project-specific source code for various proprietary components.
-</li>
-
-
-<li>prebuilt
-Prebuilt tools, like the toolchains and emulator binary.
-</li>
-
-
-<li>product
-Device-specific configuration files. This directory will include a subdirectory for each new device.
-</li>
-
-
-<li>samples
-Sample applications.
-</li>
-
-
-<li>servers
-C++ based system servers.
-</li>
-
-
-<li>system
-Core of the embedded Linux platform at the heart of Android. These essential bits are required for basic booting, operation, and debugging.
-</li>
-
-
-<li>tests
-Platform and application test cases.
-</li>
-
-
-<li>tools
-Tools for building and debugging Android (of particular interest for porting are "adb" and "emulator").
-</li>
-
-
-
-<p><span class="lh2"><a name="gmapiMobileTagsListEnd"></a></span>
-
-</ul>
-
-
-<a name="androidSourceGuidelines"></a><h2>Adding Source Code</h2>
-
-<p>You can develop Android applications with the same standard tools you use to develop any Java application. The Android core libraries provide the functionality needed to build rich mobile applications and the Android development tools are designed to simplify running, debugging, and testing your applications.</p>
-
-<p>Add project-specific source code to the Android source tree under the <code>partner</code> directory in a directory specific to the application or service you are building. For example, all Google-specific applications would be placed under <code>vendor/google/</code>.  A Google search application would be placed under <code>vendor/google/apps/Search</code>.
-<p>See <a href="build_new_device.html">Building Android for a new Mobile Device</a> for detailed instructions.</p>
-
-
diff --git a/pdk/docs/porting/keymaps_keyboard_input.jd b/pdk/docs/porting/keymaps_keyboard_input.jd
deleted file mode 100755
index f712015..0000000
--- a/pdk/docs/porting/keymaps_keyboard_input.jd
+++ /dev/null
@@ -1,504 +0,0 @@
-page.title=Keymaps and Keyboard Input
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidKeymapFunctionality">Functionality</a></li>
-<li><a href="#androidKeymapKeyLayoutMapTitle">Key Layout Map</a></li>
-<li><a href="#androidKeymapKeyCharMap">Key Character Map</a></li>
-<li><a href="#androidKeymapDriverTemplate">Implementing Your Own Driver (Driver Template)</a></li>
-<li><a href="#androidKeymapKeyCharMapSampleImplementation">Sample Implementation</a></li>
-</ul>
-</div>
-</div>
-
-<p>This document describes how keyboard input gets translated into Android actions and how you can customize key layout and key character maps to match the needs of your own device. </p>
-<p>Android uses the standard Linux input event device (<code>/dev/event0</code>) and driver as described in the <code>linux/input.h</code> kernel header file. For more information regarding standard Linux input drivers, please see <a href="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/input/input.txt">Linux Input drivers</a> at <a href="http://kernel.org">http://kernel.org</a>.</p>
-
-
-
-
-<a name="androidKeymapFunctionality"></a><h3>Functionality</h3>
-
-<p>Android's input event device is structured around an interrupt or polling routine that captures the device-specific scancode and converts it to a standard form acceptable to Linux (as defined in <code>input.h</code>) before passing it to the kernel with <code>input_event()</code>.</p>
-<p>The keymap driver's other primary function is to establish a probe function that sets up the interrupt or polling function, handles hardware initialization, and attaches the driver to the input subsystem with <code>input_register_device()</code>.</p>
-<p>The table below describes the steps required to translate from keyboard input to application action: </p>
-<table border=1>
-    <tbody><tr>
-      <th scope="col">Step</th>
-        <th scope="col">Action</th>
-        <th scope="col">Explanation</th>
-    </tr>
-	<tr>
-	  <td>1.</td>
-	  <td>Window manager reads key event from Linux keyboard driver. </td>
-	  <td>Events are typically positional. For example, the top-left position on a keypad returns 16 regardless of whether that key is printed with a Q (as on a QWERTY keypad) or an A (as on an AZERTY keypads). This first conversion by the Linux Keyboard Driver yields a scancode (for example, 16).</td>
-	</tr>
-	<tr>
-	  <td>2. </td>
-	  <td>Window manager maps scancode to keycode.</td>
-	  <td>When the window manager reads a key event out of the driver, it maps the scancode to a keycode using a key layout map file. Typically, the keycode is the primary symbol screen-printed on a key. For example, <code>KEYCODE_DPAD_CENTER</code> is the center button on the five-way navigation control. Even though ALT + G generates a &quot;?&quot; character, <code>KEYCODE_G</code> is the keycode.</td>
-	  </tr>
-	<tr>
-	  <td>3. </td>
-	  <td>Window manager  sends both the scancode and the keycode to the application.</td>
-	  <td>Both the scancode and keycode are handled by the view with focus. 
-  How the application interprets both depend on the application.</td>
-	  </tr>
-</tbody>
-</table>
-
-
-<a name="androidKeymapKeyLayoutMapTitle"></a><h3>Key Layout Map</h3>
-
-
-
-<a name="androidKeymapKeyLayoutMapSelection"></a><h4>Selection of a Key Layout Map</h4>
-
-<p>Key layout maps are installed in <code>/system/usr/keylayout</code> and <code>/data/usr/keylayout</code>.</p>
-<p>For each keyboard device xxx, set the <code>android.keylayout.xxx</code> system property (see <a href="build_new_device.html">Building New Device</a> for help setting system properties). If you don't specify a keylayout file, Android will default to <code>/system/usr/keylayout/qwerty.kl</code>.</p>
-
-
-<a name="androidKeymapKeyLayoutMapFileFormat"></a><h4>File Format</h4>
-
-<p>Key layout maps are stored on the device as UTF-8 text files and have the following characteristics:</p>
-<p><ul>
-<li>Comments: The pound symbol (#) denotes a comment and everything after the pound symbol on a line is ignored.</li>
-<li>Whitespace: All empty lines are ignored.</li>
-<li>Key definitions: Key definitions follow the syntax <code>key SCANCODE KEYCODE [FLAGS...]</code>, where <code>SCANCODE</code> is a number, <code>KEYCODE</code> is defined in your specific keylayout file (<code>android.keylayout.xxx</code>), and potential <code>FLAGS</code> are defined as follows:
-<ul><li>SHIFT: While pressed, the shift key modifier is set</li>
-<li>ALT: While pressed, the alt key modifier is set</li>
-<li>CAPS: While pressed, the caps lock key modifier is set</li>
-<li>WAKE: When this key is pressed while the device is asleep, the device will wake up and the key event gets sent to the app.</li>
-<li>WAKE_DROPPED: When this key is pressed while the device is asleep, the device will wake up and the key event does not get sent to the app.</li>
-</ul>
-</li>
-</ul>
-</p>
-
-
-<a name="androidKeymapKeyLayoutMapExample"></a><h4>Example of a Key Layout Map File</h4>
-
-<p>The following code comes from  <code>android/src/device/product/generic/tuttle2.kl</code> and is an example of a complete key layout file:</p>
-<pre class="prettify">
-# Copyright 2007 Google Inc.
-
-key 2     1
-key 3     2
-key 4     3
-key 5     4
-key 6     5
-key 7     6
-key 8     7
-key 9     8
-key 10    9
-key 11    0
-key 158   BACK              WAKE_DROPPED
-key 230   SOFT_RIGHT        WAKE
-key 60    SOFT_RIGHT        WAKE
-key 107   ENDCALL           WAKE_DROPPED
-key 62    ENDCALL           WAKE_DROPPED
-key 229   MENU         WAKE_DROPPED
-key 59    MENU         WAKE_DROPPED
-key 228   POUND
-key 227   STAR
-key 231   CALL              WAKE_DROPPED
-key 61    CALL              WAKE_DROPPED
-key 232   DPAD_CENTER       WAKE_DROPPED
-key 108   DPAD_DOWN         WAKE_DROPPED
-key 103   DPAD_UP           WAKE_DROPPED
-key 102   HOME              WAKE
-key 105   DPAD_LEFT         WAKE_DROPPED
-key 106   DPAD_RIGHT        WAKE_DROPPED
-key 115   VOLUME_UP
-key 114   VOLUME_DOWN
-key 116   POWER             WAKE
-key 212   SLASH
-
-key 16    Q
-key 17    W
-key 18    E
-key 19    R
-key 20    T
-key 21    Y
-key 22    U
-key 23    I
-key 24    O
-key 25    P
-
-key 30    A
-key 31    S
-key 32    D
-key 33    F
-key 34    G
-key 35    H
-key 36    J
-key 37    K
-key 38    L
-key 14    DEL
-        
-key 44    Z
-key 45    X
-key 46    C
-key 47    V
-key 48    B
-key 49    N
-key 50    M
-key 51    COMMA
-key 52    PERIOD
-key 28    NEWLINE
-        
-key 56    ALT_LEFT
-key 42    SHIFT_LEFT
-key 215   AT
-key 57    SPACE
-key 53    SLASH
-key 127   SYM
-key 100   ALT_LEFT
-
-key 399   GRAVE
-</pre>
-
-
-<a name="androidKeymapKeyCharMap"></a><h3>Key Character Map</h3>
-
-
-
-<a name="androidKeymapKeyCharMapSelection"></a><h4>Selection of a Key Character Map</h4>
-
-<p>Key character maps are installed in <code>/system/usr/keychars</code> and <code>/data/usr/keychars</code>.</p>
-<p>For each keyboard device xxx, set the <code>android.keychar.xxx</code> system property to the full path of the desired keychar file. If you don't specify a keychar file, Android will default to <code>/system/usr/keychar/qwerty.kl</code>.
-
-
-<a name="androidKeymapKeyCharMapFileFormat"></a><h4>File Format</h4>
-
-<p>Key character maps are stored on the device as binary resources in order to reduce loading time. Key character maps have the following characteristics:</p>
-<p><ul>
-
-<li>Comments: The pound symbol (#) denotes a comment and everything after the pound symbol on a line is ignored.</li>
-<li>Whitespace: All empty lines are ignored.</li>
-<li>Column definitions: Column definitions follow the syntax <code>columns MODIFIERS [...]</code>, where <code>MODIFIERS</code> are defined as follows:
-<table border=1 cellpadding=2 cellspacing=0>
-    <tbody><tr>
-        <th scope="col">Character in MODIFIERS</th>
-        <th scope="col">Corresponding bit in the modifiers</th>
-    </tr>
-    <tr>
-        <td>O</td>
-        <td>no modifiers</td>
-    </tr>
-    <tr>
-        <td>S</td>
-        <td>MODIFIER_SHIFT</td>
-    </tr>
-    <tr>
-        <td>C</td>
-        <td>MODIFIER_CONTROL</td>
-    </tr>
-    <tr>
-        <td>L</td>
-        <td>MODIFIER_CAPS_LOCK</td>
-    </tr>
-    <tr>
-        <td>A</td>
-        <td>MODIFIER_ALT</td>
-    </tr>
-</table>
-</li>
-<li>Key definitions: Key definitions have the syntax <code>key SCANCODE CHARACTER [...]</code> where <code>SCANCODE</code> is a number and <code>CHARACTER</code> values are either UTF-8 characters in quotation marks (for example, "a") or a numeric value that <code>strtol</code> can parse.</li>
-</ul></p>
-
-
-<a name="androidKeymapKeyCharMapExample"></a><h4>Example of a Key Character Map File</h4>
-
-<p>The following code comes from <code>android/src/device/product/generic/tuttle2.kcm</code> and represents a complete key character file:</p>
-<p>The type line indicates what kind of keyboard your device implements. Possible types include:</p>
-<p><ul>
-<li><b>NUMERIC</b>: A numeric (12-key) keyboard.</li>
-<li><b>Q14</b>: A keyboard that includes all letters but multiple letters per key.</li>
-<li><b>QWERTY</b>: A keyboard with all letters and possibly numbers. This option applies to all full keyboard configurations, such as AZERTY.</li>
-</ul>
-</p>
-<pre class="prettify">
-# Copyright 2007 Google Inc.
-
-[type=QWERTY]
-
-# keycode   base    caps    fn      caps_fn number  display_label
-
-A           'a'     'A'     '%'     0x00    '%'     'A'
-B           'b'     'B'     '='     0x00    '='     'B'
-C           'c'     'C'     '8'     0x00E7  '8'     'C'
-D           'd'     'D'     '5'     0x00    '5'     'D'
-E           'e'     'E'     '2'     0x0301  '2'     'E'
-F           'f'     'F'     '6'     0x00A5  '6'     'F'
-G           'g'     'G'     '-'     '_'     '-'     'G'
-H           'h'     'H'     '['     '{'     '['     'H'
-I           'i'     'I'     '$'     0x0302  '$'     'I'
-J           'j'     'J'     ']'     '}'     ']'     'J'
-K           'k'     'K'     '"'     '~'     '"'     'K'
-L           'l'     'L'     '''     '`'     '''     'L'
-M           'm'     'M'     '>'     0x00    '>'     'M'
-N           'n'     'N'     '<'     0x0303  '<'     'N'
-O           'o'     'O'     '('     0x00    '('     'O'
-P           'p'     'P'     ')'     0x00    ')'     'P'
-Q           'q'     'Q'     '*'     0x0300  '*'     'Q'
-R           'r'     'R'     '3'     0x20AC  '3'     'R'
-S           's'     'S'     '4'     0x00DF  '4'     'S'
-T           't'     'T'     '+'     0x00A3  '+'     'T'
-U           'u'     'U'     '&'     0x0308  '&'     'U'
-V           'v'     'V'     '9'     '^'     '9'     'V'
-W           'w'     'W'     '1'     0x00    '1'     'W'
-X           'x'     'X'     '7'     0xEF00  '7'     'X'
-Y           'y'     'Y'     '!'     0x00A1  '!'     'Y'
-Z           'z'     'Z'     '#'     0x00    '#'     'Z'
-
-COMMA       ','     ';'     ';'     '|'     ','     ','
-PERIOD      '.'     ':'     ':'     0x2026  '.'     '.'
-AT          '@'     '0'     '0'     0x2022  '0'     '@'
-SLASH       '/'     '?'     '?'     '\'     '/'     '/'
-
-SPACE       0x20    0x20    0x9     0x9     0x20    0x20
-NEWLINE     0xa     0xa     0xa     0xa     0xa     0xa
-
-# on pc keyboards
-TAB         0x9     0x9     0x9     0x9     0x9     0x9
-0           '0'     ')'     ')'     ')'     '0'     '0'
-1           '1'     '!'     '!'     '!'     '1'     '1'
-2           '2'     '@'     '@'     '@'     '2'     '2'
-3           '3'     '#'     '#'     '#'     '3'     '3'
-4           '4'     '$'     '$'     '$'     '4'     '4'
-5           '5'     '%'     '%'     '%'     '5'     '5'
-6           '6'     '^'     '^'     '^'     '6'     '6'
-7           '7'     '&'     '&'     '&'     '7'     '7'
-8           '8'     '*'     '*'     '*'     '8'     '8'
-9           '9'     '('     '('     '('     '9'     '9'
-
-GRAVE         '`'     '~'     '`'     '~'     '`'     '`'
-MINUS         '-'     '_'     '-'     '_'     '-'     '-'
-EQUALS        '='     '+'     '='     '+'     '='     '='
-LEFT_BRACKET  '['     '{'     '['     '{'     '['     '['
-RIGHT_BRACKET ']'     '}'     ']'     '}'     ']'     ']'
-BACKSLASH     '\'     '|'     '\'     '|'     '\'     '\'
-SEMICOLON     ';'     ':'     ';'     ':'     ';'     ';'
-APOSTROPHE    '''     '"'     '''     '"'     '''     '''
-STAR          '*'     '*'     '*'     '*'     '*'     '*'
-POUND         '#'     '#'     '#'     '#'     '#'     '#'
-PLUS          '+'     '+'     '+'     '+'     '+'     '+'
-</pre>
-
-
-<a name="androidKeymapKeyCharMapResourceBinaryFileFormat"></a><h4>Resource Binary File Format</h4>
-
-<p>The file snippet above gets converted to the following by the <code>makekcharmap</code> tool as part of the build process. You can <code>mmap</code> this file in and share the approximately 4k of memory that it uses between processes to minimize load time.</p>
-<table>
-    <tbody><tr>
-        <th scope="col">Offset</th>
-
-        <th scope="col">Size (bytes)</th>
-        <th scope="col">Description</th>
-    </tr>
-    <tr>
-        <td>0x00-0x0b</td>
-        <td></td>
-        <td>The ascii value "keycharmap1" including the null character</td>
-
-    </tr>
-    <tr>
-        <td>0x0c-0x0f</td>
-        <td></td>
-        <td>padding</td>
-    </tr>
-    <tr>
-        <td>0x10-0x13</td>
-
-        <td></td>
-        <td>The number of entries in the modifiers table (COLS)</td>
-    </tr>
-    <tr>
-        <td>0x14-0x17</td>
-        <td></td>
-        <td>The number of entries in the characters table (ROWS)</td>
-
-    </tr>
-    <tr>
-        <td>0x18-0x1f</td>
-        <td></td>
-        <td>padding</td>
-    </tr>
-    <tr>
-        <td></td>
-
-        <td>4*COLS</td>
-        <td>Modifiers table.  The modifier mask values that each of the 
-            columns in the characters table correspond to.</td>
-    </tr>
-    <tr>
-        <td></td>
-        <td></td>
-        <td>padding to the next 16 byte boundary</td>
-
-    </tr>
-    <tr>
-        <td></td>
-        <td>4*COLS*ROWS</td>
-        <td>Characters table.  The modifier mask values that each of the
-            columns correspond to.</td>
-    </tr>
-</tbody></table>
-
-
-<a name="androidKeymapDriverTemplate"></a><h3>Implementing Your Own Driver (Driver Template)</h3>
-
-<p>The following file, <code>pguide_events.c</code>, illustrates how to implement an Android keymap driver.</p>
-<pre class="prettyprint">
-/*
- * pguide_events.c
- *
- * ANDROID PORTING GUIDE: INPUT EVENTS DRIVER TEMPLATE
- *
- * This template is designed to an example of the functionality
- * necessary for Android to recieve input events.  The PGUIDE_EVENT
- * macros are meant as pointers indicating where to implement the
- * hardware specific code necessary for the new device.  The existence
- * of the macros is not meant to trivialize the work required, just as
- * an indication of where the work needs to be done.
- * 
- * Copyright 2007, Google Inc.
- * Based on goldfish-events.c
- *
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/types.h>
-#include <linux/input.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-
-
-#include <asm/irq.h>
-#include <asm/io.h>
-
-
-
-#define PGUIDE_EVENTS_INTERRUPT do{} while(0)
-#define PGUIDE_EVENTS_PROBE do{} while(0)
-
-struct event_dev {
-    struct input_dev *input;
-    int irq;
-};
-
-static irqreturn_t pguide_events_interrupt(int irq, void *dev_id)
-{
-    struct event_dev *edev = dev_id;
-    unsigned type=0, code=0, value=0;
-
-    /* Set up type, code, and value per input.h
-     */
-    PGUIDE_EVENTS_INTERRUPT;
-
-    input_event(edev->input, type, code, value);
-    return IRQ_HANDLED;
-}
-
-static int pguide_events_probe(struct platform_device *pdev)
-{
-    struct input_dev *input_dev;
-    struct event_dev *edev;
-    
-    printk("*** pguide events probe ***\n");
-
-    edev = kzalloc(sizeof(struct event_dev), GFP_KERNEL);
-    input_dev = input_allocate_device();
-
-    /* Setup edev->irq and do any hardware init */
-    PGUIDE_EVENTS_PROBE;
-
-    if(request_irq(edev->irq, pguide_events_interrupt, 0,
-                   "pguide_events", edev) < 0) {
-        goto fail;
-    }
-    
-        /* indicate that we generate key events */
-    set_bit(EV_KEY, input_dev->evbit);
-    set_bit(EV_REL, input_dev->evbit);
-    set_bit(EV_ABS, input_dev->evbit);
-
-    /* indicate that we generate *any* key event */
-
-    bitmap_fill(input_dev->keybit, KEY_MAX);
-    bitmap_fill(input_dev->relbit, REL_MAX);
-    bitmap_fill(input_dev->absbit, ABS_MAX);
-    
-    platform_set_drvdata(pdev, edev);
-
-    input_dev->name = "pguide_events";
-    input_dev->private = edev;
-    input_dev->cdev.dev = &pdev->dev;
-    
-    input_register_device(input_dev);
-    return 0;
-
-fail:
-    kfree(edev);
-    input_free_device(input_dev);
-    
-    return -EINVAL;
-}
-
-static struct platform_driver pguide_events_driver = {
-    .probe = pguide_events_probe,
-    .driver = {
-        .name = "pguide_events",
-    },
-};
-
-static int __devinit pguide_events_init(void)
-{
-    return platform_driver_register(&pguide_events_driver);
-}
-
-
-static void __exit pguide_events_exit(void)
-{
-}
-
-module_init(pguide_events_init);
-module_exit(pguide_events_exit);
-
-MODULE_DESCRIPTION("Pguide Event Device");
-MODULE_LICENSE("GPL");
-</pre>
-
-
-<a name="androidKeymapKeyCharMapSampleImplementation"></a><h3>Sample Implementation</h3>
-
-<p>Assume the following for the setup of a new keypad device:</p>
-<pre class="prettify">
-android.keylayout.partnerxx_keypad = /system/usr/keylayout/partnerxx_keypad.kl
-android.keychar.partnerxx_keypad = /system/usr/keychars/partnerxx.kcm
-</pre>
-<p>The following example log file indicates that you have correctly registered the new keypad:</p>
-<pre class="prettify">
-I/EventHub( 1548): New device: path=/dev/input/event0 name=partnerxx_keypad id=0x10000 (of 0x1) index=1 fd=30
-I/EventHub( 1548): new keyboard input device added, name = partnerxx_keypad
-D/WindowManager( 1548): Starting input thread.
-D/WindowManager( 1548): Startup complete!
-I/EventHub( 1548): New keyboard: name=partnerxx_keypad 
-  keymap=partnerxx_keypad.kl 
-  keymapPath=/system/usr/keychars/partnerxx_keypad.kcm.bin
-I/ServiceManager( 1535): ServiceManager: addService(window, 0x13610)
-I/EventHub( 1548): Reporting device opened: id=0x10000, name=/dev/input/event0
-I/KeyInputQueue( 1548): Device added: id=0x10000, name=partnerxx_keypad, classes=1
-I/KeyInputQueue( 1548):   Keymap: partnerxx_keypad.kl
-</pre>
-<p>The snippet above contains artificial line breaks to maintain a print-friendly document.</p>
diff --git a/pdk/docs/porting/lights.jd b/pdk/docs/porting/lights.jd
deleted file mode 100755
index 6bbfb89..0000000
--- a/pdk/docs/porting/lights.jd
+++ /dev/null
@@ -1,48 +0,0 @@
-page.title=Lights
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidLightsBuildingDriver">Building a Lights Library</a></li>
-<li><a href="#androidLightsInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android defines a user space C abstraction interface for LED hardware. The interface header is defined in 
-<code>hardware/libhardware/include/hardware/lights.h</code>.
-In order to integrate LEDs with Android you need to build a shared library that implements this interface. 
-
-The types of logical lights currently supported by Android include:
-<ul>
-<li>Backlight</li>
-<li>Keyboard</li>
-<li>Buttons</li>
-<li>Battery</li>
-<li>Notifications</li>
-<li>Attention</li>
-</ul>
-</p> 
- 
-<a name="androidLightsBuildingDriver"></a><h3>Building a Lights Library</h3>
-<p> To implement a Lights driver, create a shared library that implements the interface defined in <code>lights.h</code>. You must name your shared library 
-<code>liblights.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. 
-</p
-
- 
-<a name="androidLightsInterface"></a><h3>Interface</h3> 
- 
- 
- 
-<p><span class="lh3"><a name="androidDoxygenNote"></a></span> 
- 
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="lights.html">click here</a>.</p> 
- 
- 
-<iframe onLoad="resizeDoxFrameHeight();" src="lights_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" 
-frameborder="0" style="width:100%;"></iframe> 
diff --git a/pdk/docs/porting/modules.html b/pdk/docs/porting/modules.html
deleted file mode 100755
index ea2a07a..0000000
--- a/pdk/docs/porting/modules.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<title>Doxygen-Generated Content</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<style type="text/css">
-<!--
-.navigation {
-	display: none;
-}
--->
-</style>
-</head>
-<body>
-<!-- Generated by Doxygen 1.5.6 -->
-<div class="navigation" id="top">
-  <div class="tabs">
-    <ul>
-      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
-      <li class="current"><a href="modules.html"><span>Modules</span></a></li>
-      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
-      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-    </ul>
-  </div>
-</div>
-<div class="contents">
-<h1>Modules</h1>Here is a list of all modules:<ul>
-<li><a class="el" href="group__networking.html">Neworking Support</a>
-<ul>
-<li><a class="el" href="group__memory.html">Porividng Heap Memory</a>
-</ul>
-</ul>
-</div>
-</body>
-</html>
diff --git a/pdk/docs/porting/porting_toc.cs b/pdk/docs/porting/porting_toc.cs
deleted file mode 100644
index ffa5675..0000000
--- a/pdk/docs/porting/porting_toc.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-
-<li> <h2>Setup and Building</h2>
-  <ul>
-     <li class="toggle-list">
-     <div><a href="<?cs var:toroot ?>porting/build_system.html">Build System</a></div>
-     <ul>  
-       <li><a href="<?cs var:toroot ?>porting/build_new_device.html">Configuring a New Product</a></li>
-       <li><a href="<?cs var:toroot ?>porting/build_cookbook.html">Build Cookbook</a></li>
-     </ul>
-     </li>
-     <li><a href="<?cs var:toroot ?>porting/release_keys.html">Release Keys and Signing Builds</a></li> 
- </ul>
-</li>
-
-<li> <h2>Customization</h2>
-  <ul>
-    <li><a href="<?cs var:toroot ?>porting/customization.html">Customization</a></li>
-    <li><a href="<?cs var:toroot ?>porting/usersguide.html">Android User's Guide</a></li>
-  </ul>
-</li>
-
-<li> <h2>System</h2>
-
-<ul>
-  <li><a href="<?cs var:toroot ?>porting/bring_up.html">Bring up</a></li>
-  <li class="toggle-list">
-    <div><a href="javascript:nothing()">Connectivity</a></div>
-    <ul> 
-      <li><a href="<?cs var:toroot ?>porting/bluetooth.html">Bluetooth</a></li>
-      <li><a href="<?cs var:toroot ?>porting/gps.html">GPS</a></li>
-      <li><a href="<?cs var:toroot ?>porting/wifi.html">Wi-Fi</a></li>
-    </ul>
-  </li>
-
-  <li><a href="<?cs var:toroot ?>porting/display_drivers.html">Display Drivers</a></li>
-  <li class="toggle-list"> 
-    <div><a href="javascript:nothing()">Input Devices</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>porting/keymaps_keyboard_input.html">Keymaps and Keyboard</a></li>
-    </ul>
-  </li>
-  <li><a href="<?cs var:toroot ?>porting/lights.html">Lights</a></li>
-  <li class="toggle-list">
-    <div><a href="javascript:nothing()">Multimedia</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>porting/audio.html">Audio</a></li>
-      <li><a href="<?cs var:toroot ?>porting/camera.html">Camera/Video</a></li>
-    </ul>
-  </li>
-  
-  <li><a href="<?cs var:toroot ?>porting/power_management.html">Power Management</a></li>
-  <li><a href="<?cs var:toroot ?>porting/sensors.html">Sensors</a></li>
-  <li class="toggle-list">
-    <div><a href="javascript:nothing()">Telephony</a></div>
-    <ul>
-      <li><a href="<?cs var:toroot ?>porting/telephony.html">Radio Interface Layer</a></li>
-      <li><a href="<?cs var:toroot ?>porting/stk.html">SIM Toolkit Application (STK)</a></li>
-    </ul>
-  </li>
-
-</ul>
-</li>
-
-<li> <h2>Dalvik Virtual Machine</h2>
-  <ul>
-    <li><a href="<?cs var:toroot ?>porting/dalvik.html">Porting Dalvik</a></li>
-  </ul>
-</li>
-<li> <h2>Testing and Debugging</h2>
-  <ul>
-    <li><a href="<?cs var:toroot ?>porting/instrumentation_testing.html">Instrumentation Testing</a></li>
-    <li><a href="<?cs var:toroot ?>porting/debugging_gdb.html">Debugging with GDB</a></li>
-    <li><a href="<?cs var:toroot ?>porting/debugging_native.html">Debugging Native Code</a></li>
-    <li><a href="<?cs var:toroot ?>porting/tcpdump.html">Debugging with tcpdump</a></li>
-  </ul>
-</li>
-
-
-
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
diff --git a/pdk/docs/porting/power_management.jd b/pdk/docs/porting/power_management.jd
deleted file mode 100755
index 28f9519..0000000
--- a/pdk/docs/porting/power_management.jd
+++ /dev/null
@@ -1,203 +0,0 @@
-page.title=Power Management
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidPowerIntro">Introduction</a><br/>
-<a href="#androidPowerWakeLocks">Wake Locks</a><br/><div style="padding-left:40px">
-
-<a href="#androidPowerWakeLocksDefinitions">Types of Wake Locks</a><br/>
-<a href="#androidPowerWakeLockExample">Exploring a Wake Lock Example</a><br/></div>
-<a href="#androidPowerPowerManagerClass">PowerManager class</a><br/>
-<a href="#androidPowerKernelRegistration">Registering Drivers with the PM Driver</a><br/>
-<a href="#androidPowerEarlySuspend">Early Suspend</a><br/>
-</div>
-
-<a name="androidPowerIntro"></a><h2>Introduction</h2>
-
-<p>Android supports its own Power Management (on top of the standard Linux Power Management) designed with the premise that the CPU shouldn't consume power if no applications or services require power. For more information regarding standard Linux power management, please see <a href="http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.24.y.git;a=blob;f=Documentation/pm.txt">Linux Power Management Support</a> at <a href="http://kernel.org">http://kernel.org</a>.</p>
-<p>Android requires that applications and services request CPU resources with &quot;wake locks&quot; through the Android application framework and native Linux libraries. If there are no active wake locks, Android will shut down the CPU. </p>
-<p>The image below illustrates the Android power management architecture. </p>
-<p><img src='images/androidPMArchitecture.gif'></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-
-
-<a name="androidPowerWakeLocks"></a><h2>Wake Locks</h2>
-
-<p>Wake locks are used by applications and services to request CPU resources.</p>
-
-<p>A locked wakelock, depending on its type, prevents the system from entering suspend or other low-power states. This document describes how to employ wakelocks. </p>
-<p>There are two settings for a wakelock:</p>
-<ul>
-  <li><code>WAKE_LOCK_SUSPEND</code>: prevents a full system suspend. </li>
-  <li><code></code><code>WAKE_LOCK_IDLE</code>: low-power states, which often cause large interrupt latencies or that disable a set of interrupts, will not be entered from idle until the wakelocks are released. </li>
-</ul>
-<p>Unless the type is specified, this document refers to wakelocks of type <code>WAKE_LOCK_SUSPEND</code>. </p>
-<p>If the suspend operation has already started when locking a wakelock, the system will abort the suspend operation as long it has not already reached the <code>suspend_late</code> stage. This means that locking a wakelock from an interrupt handler or a freezeable thread always works, but if you lock a wakelock from a <code>suspend_late</code> handler, you must also return an error from that handler to abort suspend. You can use wakelocks to allow the user-space to decide which keys should wake the full system and turn on the screen. Use <code>set_irq_wake</code> or a platform-specific API to ensure that the keypad interrupt wakes up the CPU. Once the keypad driver has resumed, the sequence of events can look like this:</p>
-<ol>
-  <li> The Keypad driver receives an interrupt, locks the keypad-scan wakelock,
-    and starts scanning the keypad matrix. </li>
-  <li>The keypad-scan code detects a key change and reports it to the input-event
-    driver. </li>
-  <li>The input-event driver sees the key change, enqueues an event, and locks
-    the input-event-queue wakelock. </li>
-  <li>The keypad-scan code detects that no keys are held and unlocks the
-    keypad-scan wakelock. </li>
-  <li>The user-space input-event thread returns from select/poll, locks the
-    process-input-events wakelock, and calls read in the input-event device. </li>
-  <li>The input-event driver dequeues the key-event and, since the queue is now
-    empty, unlocks the input-event-queue wakelock. </li>
-  <li>The user-space input-event thread returns from read. It determines that the
-    key should not wake up the full system, releases the process-input-events
-    wakelock, and calls select or poll. </li>
-</ol>
-<p>The simple sequence diagram below illustrates these steps:</p>
-    <pre>
-     					Key pressed      Key released
-      					     |		      |
-      keypad-scan       		     ++++++++++++++++++++++
-      input-event-queue 			  +++ 		  +++
-      process-input-events 		            +++ 	    +++
-      </pre>
-
-<a name="driverAPI"></a><h3>Driver API</h3>
-<p>A driver can use the wakelock API by adding a wakelock variable to its state and calling <code>wake_lock_init</code>, as illustrated in the snippet below:</p>
-<pre>
-  struct state {
-  struct wakelock wakelock;
-  }
-  init() {
-  wake_lock_init(&amp;state-&gt;wakelock, WAKE_LOCK_SUSPEND, &quot;wakelockname&quot;);
-  }
-  Before freeing the memory, wake_lock_destroy must be called:
-  uninit() {
-  wake_lock_destroy(&amp;state-&gt;wakelock);
-  }
-  </pre>
-<p> When the driver determines that it needs to run (usually in an interrupt handler), it calls <code>wake_lock</code>:</p>
-<pre>
-  wake_lock(&amp;state-&gt;wakelock);
-  </pre>
-<p>When it no longer needs to run, it calls <code>wake_unlock</code>:</p>
-<pre>
-  wake_unlock(&amp;state-&gt;wakelock);
-  </pre>
-<p> It can also call <code>wake_lock_timeout</code> to release the wakelock after a delay:</p>
-<pre>
-  wake_lock_timeout(&amp;state-&gt;wakelock, HZ);
-</pre>
-<p> This works whether or not the wakelock is already held. It is useful if the driver woke up other parts of the system that do not use wakelocks but still need to run. Avoid this when possible, since it will waste power if the timeout is long or may fail to finish needed work if the timeout is short.</p>
-<a name="userspaceAPI"></a><h3>User-space API</h3>
-<p>Write <code>lockname</code> or <code>lockname timeout</code> to <code>/sys/power/wake_lock</code> lock and, if needed, create a wakelock. The timeout here is specified in nanoseconds. Write <code>lockname</code> to <code>/sys/power/wake_unlock</code> to unlock a user wakelock.</p>
-<p> Do not use randomly generated wakelock names as there is no API to free a user-space wakelock.</p>
-
-<a name="androidPowerWakeLocksDefinitions"></a><h3>Types of Wake Locks</h3>
-
-<table border=1 cellpadding=2 cellspacing=0>
-    <tbody><tr>
-        <th scope="col">Wake Lock </th>
-        <th scope="col">Description</th>
-    </tr>
-    <tr>
-      <td>ACQUIRE_CAUSES_WAKEUP <br/></td>
-        <td>Normally wake locks don't actually wake the device, they just cause it to remain on once it's already on. Think of the video player app as the normal behavior. Notifications that pop up and want the device to be on are the exception; use this flag to be like them.</td>
-    </tr>
-    <tr>
-      <td>FULL_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the screen and keyboard are on at full brightness. </td>
-    </tr>
-    <tr>
-      <td>ON_AFTER_RELEASE</td>
-      <td>When this wake lock is released, poke the user activity timer so the screen stays on for a little longer.</td>
-    </tr>
-    <tr>
-      <td>PARTIAL_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the CPU is running. The screen might not be on.</td>
-    </tr>
-    <tr>
-      <td>SCREEN_BRIGHT_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the screen is on at full brightness; the keyboard backlight will be allowed to go off.</td>
-    </tr>
-    <tr>
-      <td>SCREEN_DIM_WAKE_LOCK</td>
-      <td>Wake lock that ensures that the screen is on, but the keyboard backlight will be allowed to go off, and the screen backlight will be allowed to go dim.</td>
-    </tr>
-</table>
-
-
-<a name="androidPowerWakeLockExample"></a><h3>Exploring a Wake Lock Example</h3>
-
-<p>All power management calls follow the same basic format:</p>
-<p><ol><li>Acquire handle to the <code>PowerManager</code> service.</li>
-<li>Create a wake lock and specify the power management flags for screen, timeout, etc.</li>
-<li>Acquire wake lock.</li>
-<li>Perform operation (play MP3, open HTML page, etc.).</li>
-<li>Release wake lock.</li>
-</ol>
-</p>
-<p>The snippet below illustrates this process.</p>
-<pre class="prettify">
-PowerManager pm = (PowerManager)mContext.getSystemService(
-                                          Context.POWER_SERVICE);
-PowerManager.WakeLock wl = pm.newWakeLock(
-                                      PowerManager.SCREEN_DIM_WAKE_LOCK
-                                      | PowerManager.ON_AFTER_RELEASE,
-                                      TAG);
-wl.acquire();
- // ...
-wl.release();
-</pre>
-
-
-<a name="androidPowerPowerManagerClass"></a><h2>PowerManager class</h2>
-
-<p>The Android Framework exposes power management to services and applications through the <code>PowerManager</code> class.</p>
-<p>User space native libraries (any hardware function in <code>//device/lib/hardware/</code> meant to serve as supporting libraries for Android runtime) should never call into Android Power Management directly (see the image above). Bypassing the power management policy in the Android runtime will destabilize the system.</p>
-<p>All calls into Power Management should go through the Android runtime PowerManager APIs.</p>
-<p> Please visit 
-<a href="http://code.google.com/android/reference/android/os/PowerManager.html">http://code.google.com/android/reference/android/os/PowerManager.html</a> for a description of the API and examples.</p>
-
-
-<a name="androidPowerKernelRegistration"></a><h2>Registering Drivers with the PM Driver</h2>
-
-<p>You can register Kernel-level drivers with the Android Power Manager driver so that they're notified immediately before power down or after power up. For example, you might set a display driver to completely power down when a request comes in to power down from the user space (see the Android MSM MDDI display driver for a sample implementation).</p>
-<p>To register drivers with the Android PM driver, implement call-back handlers and register them with the Android PM, as illustrated in the snippet below:</p>
-<pre class="prettify">
-android_register_early_suspend(android_early_suspend_t *handler)
-android_register_early_resume(android_early_resume_t *handler)
-</pre>
-<p>It is critical in a drive to return immediately and not wait for anything to happen in the call back.</p>
-
-
-<a name="androidPowerEarlySuspend"></a><h2>Early Suspend</h2>
-
-<p>The early-suspend API allows drivers to get notified when user-space writes to <code>/sys/power/request_state</code> to indicate that the user visible sleep state should change. Suspend handlers are called in order of low to high (4 - 1 below) and resume handlers are called in order of high to low (1 - 4 below).</p>
-<ol>
-  <li><code>EARLY_SUSPEND_LEVEL_BLANK_SCREEN</code>: </li>
-  <ul>
-    <li>on suspend: the screen should be turned off but the framebuffer must still be accessible. </li>
-    <li>on resume: the screen can be turned back on.</li>
-  </ul>
-  <li><code>EARLY_SUSPEND_LEVEL_STOP_DRAWING</code>:
-    <ul>
-      <li>on suspend: this level notifies user-space that it should stop accessing the framebuffer and it waits for it to complete.</li>
-      <li>on resume: it notifies user-space that it should resume screen access. Two methods are provided, console switch or a sysfs interface.</li>
-    </ul>
-  </li>
-  <li><code>EARLY_SUSPEND_LEVEL_DISABLE_FB</code>: Turn off the framebuffer
-    <ul>
-      <li>on suspend: turn off the framebuffer</li>
-      <li>on resume: turn the framebuffer back on. </li>
-    </ul>
-  </li>
-  <li><code>EARLY_SUSPEND_LEVEL_STOP_INPUT</code>:
-    <ul>
-      <li>on suspend: turn off input devices that are not capable of wakeup or where wakeup is disabled. </li>
-      <li>on resume: turn the same devices back on.</li>
-    </ul>
-  </li>
-</ol>
diff --git a/pdk/docs/porting/release_keys.jd b/pdk/docs/porting/release_keys.jd
deleted file mode 100755
index 116cdbb..0000000
--- a/pdk/docs/porting/release_keys.jd
+++ /dev/null
@@ -1,82 +0,0 @@
-page.title=Creating Release Keys and Signing Builds
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-  <div id ="qv"> 
-<h2>In this document</h2>
-<a name="toc"/>
-    <ul>
-      <li><a href="#intro">Introduction</a></li>
-      <li><a href="#generatingKeys">Generating keys</a></li>
-      <li><a href="#signing">Signing a build for release</a></li>
-    </ul>
-  </div>
-</div>
-<a name="intro"></a>
-<h3>Introduction</h3>
-<p>Android requires that each application be signed with the developer's digital keys to enforce signature permissions and application request to use shared user ID or target process.  For more information on the general Android security principles and signing requirements, see the Android Security and Permissions section in the Android Developer Guide).  The core Android platform uses four keys to maintain security of core platform components:</p>
-<ul>
-  <li><strong>platform</strong>: a key for packages that are part of the core platform.</li>
-  <li><strong>shared</strong>: a key for things that are shared in the <code>home/contacts</code> process.</li>
-  <li><strong>media</strong>: a key for packages that are part of the <code>media/download</code> system.</li>
-  <li><strong>releasekey</strong>: the default key to sign with if not otherwise specified</li>
-</ul>
-<p>These keys are used to sign applications separately for release images and are not used by the Android build system.  The build system signs packages with the testkeys provided in <code>build/target/product/security/</code>.  Because the testkeys are part of the standard Android open source distribution, they should never be used for production devices.  Instead, device manufacturers should generate their own private keys for shipping release builds.</p>
-<a name="generatingKeys"></a>
-<h3>Generating keys</h3>
-<p>A device manufacturer's keys for each product should be stored under  <code>vendor/&lt;vendor_name&gt;/security/&lt;product_name&gt;</code>, where <code>&lt;vendor_name&gt;</code> and <code>&lt;product_name&gt;</code> represent the manufacturer and product names.  To simplify key creation, copy the script below to this directory in a file called <code>mkkey.sh</code>.  To customize your keys, change the line that starts with AUTH to reflect the correct information for your company:</p>
-<pre>
-#!/bin/sh
-AUTH='/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
-if [ "$1" == "" ]; then
-        echo "Create a test certificate key."
-        echo "Usage: $0 NAME"
-        echo "Will generate NAME.pk8 and NAME.x509.pem"
-        echo "  $AUTH"
-        exit
-fi
-
-openssl genrsa -3 -out $1.pem 2048
-
-openssl req -new -x509 -key $1.pem -out $1.x509.pem -days 10000 \
-    -subj "$AUTH"
-
-echo "Please enter the password for this key:"
-openssl pkcs8 -in $1.pem -topk8 -outform DER -out $1.pk8 -passout stdin
-</pre>
-<p><code>mkkey.sh</code>  is a helper script to generate the platform's keys.  NOTE: the password you type will be visible in your terminal window.  Note the passwords you use as you will need them to sign release builds.</p>
-<p>To generate the required 4 platform keys, run <code>mkkey.sh</code> four times specifying the key name and password for each:</p>
-<pre>
-sh mkkey.sh platform # enter password
-sh mkkey.sh media # enter password
-sh mkkey.sh shared # enter password
-sh mkkey.sh release # enter password
-</pre>
-<p>You should now have new keys for your product.</p>
-<a name="signing"></a>
-<h3>Signing a build for release</h3>
-<p>Signing a build for a release is a two-step process.  </p>
-<ol>
-  <li>Sign all the individual parts of the build.</li>
-  <li>Put the parts back together into  image files.</li>
-</ol>
-<h4>Signing applications</h4>
-<p>Use <code>build/tools/releasetools/sign_target_files_apks</code> to sign a <code>target_files</code> package. The <code>target_files</code> package isn't built by default, you need to make sure to specify the "dist" target when you call make.  For example:</p>
-<pre>
-make -j4 PRODUCT-&lt;product_name&gt;-user dist
-</pre>
-<p>The command above creates a a file under <code>out/dist </code>called <code>&lt;product_name&gt;-target_files.zip</code>.  This is the file you need to pass to the <code>sign_target_files_apks</code> script.</p>
-<p>You would typically run the script like this:</p>
-<pre>
-./build/tools/releasetools/sign_target_files_apks -d vendor/&lt;vendor_name&gt;/security/&lt;product_name&gt; &lt;product_name&gt;-target_files.zip signed-target-files.zip
-</pre>
-<p>If you have prebuilt and pre-signed apk's in your build that you don't want re-signed, you must explicitly ignore them by adding <code>-e Foo.apk=</code> to the command line for each apk you wish to ignore.</p>
-<p><code>sign_target_files_apks</code> also has many other options that could be useful for signing release builds.  Run it with <code>-h</code> as the only option to see the full help.</p>
-<h4>Creating image files</h4>
-<p>Once you have <code>signed-target-files.zip</code>, create the images so you can put it onto a device with the command below:</p>
-<pre>
-build/tools/releasetools/img_from_target_files signed-target-files.zip signed-img.zip
-</pre>
-<p><code>signed-img.zip</code> contains all the <code>.img</code> files.  You can use <code>fastboot update signed-img.zip</code> to use fastboot to get them on the device.</p>
diff --git a/pdk/docs/porting/sensors.jd b/pdk/docs/porting/sensors.jd
deleted file mode 100755
index 1b24026..0000000
--- a/pdk/docs/porting/sensors.jd
+++ /dev/null
@@ -1,67 +0,0 @@
-page.title=Sensors
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidSensorsInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android defines a user space C abstraction interface for sensor hardware. The interface header is defined in 
-<code>hardware/libhardware/include/hardware/sensors.h</code>.
-In order to integrate sensors with Android you need to build a shared library that implements this interface. 
-
-The types of sensors currently supported by Android include:
-<ul>
-<li>Accelerometer</li>
-<li>Magnetic Field</li>
-<li>Orientation</li>
-<li>Gyroscope</li>
-<li>Light</li>
-<li>Pressure</li>
-<li>Temperature</li>
-<li>Proximity</li>
-</ul>
-</p> 
- 
-<a name="androidSensorBuildingDriver"></a><h3>Building a Sensor Library</h3>
-<p> To implement a Sensors driver, create a shared library that implements the interface defined in <code>sensors.h</code>. You must name your shared library 
-<code>libsensors.so</code> so that it will get loaded from <code>/system/lib</code> at runtime. 
-</p>
-
-<p> The following stub file, <code>Android.mk</code>, ensures that <code>libsensors</code> compiles and links to the appropriate libraries:</p>
-
-<pre>
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := sensors
-
-LOCAL_PRELINK_MODULE := false
-
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
-
-LOCAL_SHARED_LIBRARIES := liblog
-# include any shared library dependencies
-
-LOCAL_SRC_FILES := sensors.c
-
-include $(BUILD_SHARED_LIBRARY)
-</pre>
- 
-<a name="androidSensorsInterface"></a><h3>Interface</h3> 
- 
- 
-<p><span class="lh3"><a name="androidDoxygenNote"></a></span> 
- 
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="sensors.html">click here</a>.</p> 
- 
- 
-<iframe onLoad="resizeDoxFrameHeight();" src="sensors_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" 
-frameborder="0" style="width:100%;"></iframe> 
diff --git a/pdk/docs/porting/source_setup_guide.jd b/pdk/docs/porting/source_setup_guide.jd
deleted file mode 100755
index 77e1d60..0000000
--- a/pdk/docs/porting/source_setup_guide.jd
+++ /dev/null
@@ -1,118 +0,0 @@
-page.title=Host System Setup
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<a name="toc"/>
-<div style="padding:10px">
-<a href="#androidSourceSetupIntro">Introduction</a><br/>
-<a href="#androidSourceSetupBuildSystemSetupPackages">Installing Packages</a><br/><div style="padding-left:40px">
-
-<a href="#androidSourceSetupBuildSystemSetupRequiredPackages">Required Packages</a><br/>
-<a href="#androidSourceSetupUbuntu606Intro">Ubuntu 6.06 (Dapper)</a><br/>
-<a href="#androidSourceSetupUbuntu710Intro">Ubuntu 7.10</a><br/>
-<a href="#androidSourceSetupUbuntu804Intro">Ubuntu 8.04</a><br/></div>
-<a href="#androidSourceSetupBuildSystemSetupJavaIntro">Installing Java</a><br/></div>
-
-<a name="androidSourceSetupIntro"></a><h2>Introduction</h2>
-
-<p>This section provides instructions on how to configure your host system to build Android for mobile devices. While Android is designed as host-environment agnostic, it has been tested and is known to work on the following Linux operating system; Ubuntu 6.06 (Dapper), 7.10 (Gutsy), and 8.04. Cygwin is not recommended. </p>
-
-
-<a name="androidSourceSetupBuildSystemSetupPackages"></a><h2>Installing Packages</h2>
-
-
-
-<a name="androidSourceSetupBuildSystemSetupRequiredPackages"></a><h3>Required Packages</h3>
-
-<p>Android requires the following system packages:</p>
-<p><ul>
-<li>flex: This lexical analyzer generator is used to read a given input file for a description of a scanner to generate.</li>
-<li>bison: This is a general-purpose parser generator.</li>
-<li>gperf: This is a perfect hash function generator.</li>
-<li>libesd0-dev: This enlightened sound daemon (dev files) is used to mix digitized audio streams for playback by a single device.</li>
-<li>libwxgtk2.6-dev: This package provides GUI components and other facilities for many different platforms.</li>
-<li>build-essential: This package contains a list of packages considered fundamental to building Debian packages.</li>
-</ul></p>
-
-
-<a name="androidSourceSetupUbuntu606Intro"></a><h3>Ubuntu 6.06 (Dapper)</h3>
-
-<p>On a clean Dapper system, type the following:</p>
-<pre class="prettyprint">
-% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev zlib1g-dev 
-   build-essential
-</pre>
-<p>This snippet includes an artificial line break to maintain a print-friendly document.</p>
-
-
-<a name="androidSourceSetupUbuntu710Intro"></a><h3>Ubuntu 7.10</h3>
-
-<ol><li>The libwxgtk2.6-dev package will only work if the following code is included in your  /etc/apt/source file.
-<p><pre class="prettyprint">
-## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
-## team, and may not be under a free license. Please satisfy yourself as to
-## your rights to use the software. Also, please note that software in
-## universe WILL NOT receive any review or updates from the Ubuntu security
-## team.
-# Line commented out by installer because it failed to verify:
-deb http://us.archive.ubuntu.com/ubuntu/ gutsy universe
-# Line commented out by installer because it failed to verify:
-deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy universe
-# Line commented out by installer because it failed to verify:
-deb http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
-# Line commented out by installer because it failed to verify:
-deb-src http://us.archive.ubuntu.com/ubuntu/ gutsy-updates universe
-</pre></p></li>
-<li>Install required packages with the following command:
-<p><pre class="prettyprint">
-% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev zlib1g-dev
-   build-essential
-</pre></p>
-This snippet includes an artificial line break to maintain a print-friendly document.
-</li>
-<li>
-<p>Install the X11 development environment with the following commands:</p>
-<p><pre class="prettyprint">
-% sudo apt-get install x-dev
-% sudo apt-get install libx11-dev
-% sudo apt-get install libncurses5-dev
-</pre></p>
-</li>
-</ol>
-
-
-<a name="androidSourceSetupUbuntu804Intro"></a><h3>Ubuntu 8.04</h3>
-
-<p>On a clean system, type the following:</p>
-<pre class="prettify">
-% sudo apt-get install flex bison gperf libesd0-dev libwxgtk2.6-dev
-zlib1g-dev build-essential
-% sudo apt-get install x-dev
-% sudo apt-get install libx11-dev
-% sudo apt-get install libncurses5-dev
-% sudo apt-get install sun-java5-jdk
-</pre>
-
-
-<a name="androidSourceSetupBuildSystemSetupJavaIntro"></a><h2>Installing Java</h2>
-
-<p>Android source code includes a hard dependency on the Java Developer Kit (JDK) 5.0 Update 12 or greater. The specific file name of the Update 12 package is <code>jdk-1_5_0_12-linux-i586.bin</code>. To download this version of the Java JDK:</p>
-<p><ol>
-<li>Navigate to: <a href="http://java.sun.com/products/archive/">http://java.sun.com/products/archive/</a>.</li>
-<li>Select '5.0 Update 12' from the 'Java 2 Platform Standard Edition (J2SE)' -> 'JDK/JRE - 5.0' field and click 'Go.'</li>
-<li>Click 'Download JDK.'</li>
-<li>In the 'Linux Platform' section, click 'Linux self-extracting file' associated with the jdk-1_5_0_12-linux-i586.bin package.</li>
-<li>Follow the installation instructions.</li>
-</ol>
-</p>
-
-<p>Once you have cleanly installed the JDK, modify your PATH environment variable to include <code>&lt;jdk-install-dir&gt;/jdk1.5.0_12/bin</code> at its beginning so that Dapper will use the correct installation. </p>
-<p><b>Ubuntu 7.10</b></p>
-<p>An alternative method to quickly install Java is to enable multiverse repo in <code>/etc/apt/sources.list</code> and then execute:</p>
-<pre class="prettyprint">
-% sudo apt-get install sun-java5-jdk
-</pre>
-
-
-
diff --git a/pdk/docs/porting/stk.jd b/pdk/docs/porting/stk.jd
deleted file mode 100755
index a73ed93..0000000
--- a/pdk/docs/porting/stk.jd
+++ /dev/null
@@ -1,508 +0,0 @@
-page.title=Sim Toolkit Application (STK)
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidSTKRILRilUp">Communication from the RIL up</a></li>
-<li><a href="#androidSTKRILApplciationDown">Communication from the application down</a></li>
-<li><a href="#androidSTKTelephony">Telephony</a></li>
-<li><a href="#androidSTKFeatureList">Feature List</a></li>
-</ul>
-</div>
-</div>
-
-
-<p>This document offers a high-level overview of the SIM Toolkit Application for Android 1.0 and is primarily of interest for implementors of the Radio Interface Layer (RIL). The STK is  R96 compatible (3GPP TS 11.14 v5.9.0) and complies partially with R99 (3GPP TS 101.267 v8.17.0). See the <a href="#androidSTKFeatureList">STK Feature List</a> for the complete feature list. </p>.
-<p>The Android STK implementation includes three layers:</p> 
-<ul> 
-  <li> STK RIL: Low-level layer provided by the vendor plus <code>libril</code>.</li> 
-  <li>STK Telephony: Protocol translation layer that converts raw messages provided by the STK RIL to application level messages.</li> 
-  <li>STK Application: Provides the user interface interactions needed by the STK.</li> 
-</ul> 
-<p align="left"><br /> 
-    <img src="images/stk.gif" alt="STK schema" width="566" height="516" /><br /> 
-</p> 
-<p> The Sim Toolkit communication flow is bi-directional and commands can originate from the <code>STK RIL</code> packaged in <code>RIL_UNSOL_STK_PROACTIVE_COMMAND</code>, <code>RIL_UNSOL_STK_EVENT_NOTIFY</code>, <code>RIL_UNSOL_REFRESH</code> and <code>RIL_UNSOL_STK_SESSION_END</code> messages.</p> 
-<p align="left">Commands originating from the STK App or STK Telephony layers are packaged in <code>RIL_REQUEST_STK_SEND_TERMINAL_REPSONSE</code>, <code>RIL_REQUEST_SEND_ENVELOPE_COMMAND</code> or <code>RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</code>.</p> 
-<p align="left">For commands sent or recieved by the STK RIL, it's not necessary to remove unused sub-commands because the upper layers will gracefully ignore unused information contained in the message. The content of each message is encoded in the BER-TLV format except for two:</p> 
-<ul> 
-  <li><code>RIL_UNSOL_STK_SESSION_END</code>: has no data </li> 
-  <li><code>RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</code>: has a single byte of data that indicates accept/reject.</li> 
-</ul> 
-<p>See the <a href="http://pdk-docs.prom.corp.google.com/docs/telephony.html">Android Platform Development Kit</a> for details.</p> 
- 
- 
-<a name="androidSTKRILRilUp"></a><h4>Communication from the RIL up</h4> 
- 
-<p>Communication to the upper layers is done using the <code>RIL_UNSOL_xxx</code> family of commands defined in <code>/hardware/ril/include/ril.h</code>. The payload for each command is encoded using BER-TLV. As stated above, it is not necessary to remove extraneous fields. This allows the SIM to pass a complete command to the upper layers and simplifies STK RIL code. Below is the mapping from RIL_UNSOL_xxx commands to the SIM commands.</p> 
- 
- 
-<a name="androidSTKRILRilUpUnsol"></a><h4>RIL_UNSOL_STK_PROACTIVE_COMMAND</h4> 
- 
-<p> The Sim Toolkit communication flow is bi-directional and commands can originate from the <code>STK RIL</code> packaged in <code>RIL_UNSOL_STK_PROACTIVE_COMMAND</code>, <code>RIL_UNSOL_STK_EVENT_NOTIFY</code>, <code>RIL_UNSOL_REFRESH</code> and <code>RIL_UNSOL_STK_SESSION_END</code> messages.</p> 
- 
- 
-<a name="androidSTKRILRilUpDisplay"></a><h5>DISPLAY TEXT (6.4.1)</h5> 
- 
-<p>This command is handled by <code>StkDialogActivity</code>. If the immediate response flag is set, the terminal response is sent with an "OK" <code>(0x00)</code> result code when the message is first received. Otherwise the terminal response is sent when the dialog is dismissed either from user action or it times out.</p> 
-<p>The user sees a dialog box with a message and / or icon, an OK button, and a Cancel button.</p> 
-<p>Terminal responses include:</p> 
-<ul> 
-  <li> "OK" (0x00)</li> 
-  <li> "Session terminated by user" (0x10)</li> 
-  <li> "Backward move by user" (0x11)</li> 
-  <li> "No response from user" (0x12)</li> 
-</ul> 
- 
-<img src="images/stk_display_text.gif" border="1"> 
- 
- 
-<a name="androidSTKRILRilUpGetInKey"></a><h5>GET IN KEY (6.4.2)</h5> 
- 
-<P>This command is processed by <code>StkInputActivity</code>. It displays a dialog box with a prompt and or an icon and yes and no buttons.</p> 
-<p>Terminal responses include:</p> 
-<p> 
-<ul> 
-  <li> “OK” (0x00) with “Yes” or “No” as the response text</li> 
-  <li> “Session terminated by user” (0x10) << Currently not supported</li> 
-  <li> “Backward move by user” (0x11)</li> 
-  <li> “No response from user” (0x12)</li> 
-</ul> 
-</p> 
- 
- 
-<a name="androidSTKRILRilUpGetInput"></a><h5>GET INPUT (6.4.3)</h5> 
- 
-<p>This command is handled by <code>StkInputActivity</code>. 
-<p>The user sees a dialog box with a prompt and / or an icon, a text box with optional default text, and an OK button. 'digits only,' 'min,' 'max,' and 'hidden' modes are all supported.
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>OK” (0x00) if the input criteria is met	</li> 
-      <li>“Session terminated by user” (0x10) << Currently not supported	</li> 
-      <li>“Backward move by user” (0x11)        </li> 
-      <li>“No response from user” (0x12) </li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpPlayTone"></a><h5>PLAY TONE (6.4.5)</h5> 
- 
-<p>This command is processed by <code>ToneDialog</code>.</p> 
-<p>The user sees a dialog box with a prompt for the duration of the tone or until the user presses the back key.</p> 
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>"OK" (0x00) if the tone is played to completion	</li> 
-      <li>“Session terminated by user” (0x10)  if back button is pressed </li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpSetMenu"></a><h5>SET UP MENU (6.4.8)</h5> 
- 
-<p>This command is processed by <code>StkAppService</code>. It installs the STK ICON on the home page and prepares the Main menu for use when the ICON is selected. Typically this is the first RIL unsolicited command and should not be sent until after the <code>RIL_RadioFunctions.getVersion</code> routine is called.</p> 
-<p>Terminal reponses:</p> 
-<ul> 
-  <li>“OK” (0x00) </li> 
-</ul> 
-<p>At a later time, the STK ICON will be selected and <code>StkMenuActivity</code> will launch and display the Main menu to the user. If an item is selected, it will be returned to the RIL in <code>RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND</code> with the item id. If no item is selected, the <code>StkMenuActivity</code> will receive a timeout message and return to the Main menu and no message will be sent to the RIL.</p> 
-<p>Depending upon what item is selected, the SIM may perform another action, such as sending another set of menu items via a SELECT ITEM command or performing an action like send an SMS or text display. </p> 
- 
- 
-<a name="androidSTKRILRilUpSelectItem"></a><h5>SELECT ITEM (6.4.9)</h5> 
- 
-<p>This command is processed by <code>StkMenuActivity</code>. Instead of displaying the Main menu, the list of menu items provided in this command are displayed.</p> 
-<p>Terminal responses:
-<ul> 
-  <li> “OK” (0x00)    </li> 
-</ul> 
-<p>The command then proceeds as in the SETUP MENU. </p> 
- 
- 
-<a name="androidSTKRILRilUpSetIdle"></a><h5>SET UP IDLE MODE TEXT (6.4.22)</h5> 
- 
-<p><code>StkAppService</code> displays the message and or icon as an Android notification.</p> 
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>OK” (0x00)</li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpLaunchBrowser"></a><h5>LAUNCH BROWSER (6.4.26)</h5> 
- 
-<p>This command is initially handled by <code>StkDialogActivity</code> and presents the user with a confirmation dialog, a URL, and OK, and cancel buttons. If the user presses OK, the browser is launched using the URL.</p> 
-<p>Terminal responses include:</p> 
-	<ul> 
-	  <li>“OK” (0x00) the browser has been launched	    </li> 
-      <li>“Session terminated by user” (0x10) </li> 
-      <li>“Backward move by user” (0x11)</li> 
-      <li>“No response from user” (0x12)</li> 
-</ul> 
- 
- 
-<a name="androidSTKRILRilUpEvent"></a><h4>RIL_UNSOL_STK_EVENT_NOTIFY</h4> 
- 
-<p align="left">The commands in this section are proactive in nature. They are handled by the STK RIL and the upper layers and delivered using <code>RIL_UNSOL_STK_EVENT_NOTIFY</code> message. This distinction is an implementation detail of Android and is not defined in the 3GPP sepcifications.</p> 
-<p align="left">The upper layers handle the UI and the STK RIL handles all other aspects of each command, which means that the STK RIL sends the terminal response (it is never sent by the STK App). Each command must be a properlery-formed proactive command. It is not necessary to remove unused fields. The behavior of any other command <em>within this context </em>sent by <code>RIL_UNSOL_STK_EVENT_NOTIFY</code> is undefined. See Event Notify Command Details. </p> 
-<ul> 
-  <li>SEND SMS (6.4.10) – no response</li> 
-  <li>SEND SS (6.4.11) – no response</li> 
-  <li>SEND USSD (6.4.12) – no response</li> 
-  <li>SET UP CALL (6.4.13) – responds with <code>RIL_REQUEST_STK_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</code></li> 
-  <li>SEND DTMF (6.4.24) – no response</li> 
-</ul> 
- 
-<img src="images/stk_send_SMS.gif"> 
- 
- 
-<a name="androidSTKRILRilUpUnsolSim"></a><h4>RIL_UNSOL_SIM_REFRESH</h4> 
- 
-<p> Used to send the <code>REFRESH</code> command. No response.</p> 
- 
- 
-<a name="androidSTKRILRilUpRefresh"></a><h4>REFRESH (6.4.7)</h4> 
- 
-<p><code>RIL_UNSOL_STK_SESSION_END</code></p> 
-<p>Sent by the SIM to signal the end of a session. No content and no response.</p> 
-<P><img src="images/stk_refresh_init.gif"></p>
-<p><img src="images/stk_refresh_update.gif"> </p>
-<p><img src="images/stk_refresh_reset.gif"> </p>
- 
- 
- 
-<a name="androidSTKRILRilUpRilUnsol"></a><h4>RIL_UNSOL_STK_SESSION_END</h4> 
- 
-<p>Sent by SIM to signal end of session. No content and no response.</p> 
- 
- 
-<a name="androidSTKRILApplciationDown"></a><h4>Communication from the application down</h4> 
- 
-<p>Communication from the upper layers to the RIL uses the commands below (defined in <code>ril.h</code>):</p> 
- 
- 
-<a name="androidSTKRILApplciationDownTerminal"></a><h4>RIL_REQUEST_STK_SEND_TERMINAL_REPSONSE</h4> 
- 
-<p> Used to send a terminal response for commands sent via <code>RIL_UNSOL_STK_PROACTIVE_COMMAND</code>. </P> 
-<P>Contents include TERMINAL RESPONSE (6.8).</p> 
- 
- 
-<a name="androidSTKRILApplciationDownEnvelope"></a><h4>RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND</h4> 
- 
-<p>Used to send information from to SIM encoded as BER-TLV tags (see R96  section 13). Two tags are supported:</p> 
-<ul> 
-  <li> BER_MENU_SELECTION_TAG (0xd3); Contents: MENU SELECTION (8)</li> 
-  <li>BER_EVENT_DOWNLOAD_TAG (0xd6); Contents: EVENT DOWNLOAD Language selection (11.8)</li> 
-</ul> 
-<P>Content for these tags include:
-<ul> 
-  <li>MENU SELECTION (8)</li> 
-  <li>EVENT DOWNLOAD Language selection (11.8)</li> 
-</ul> 
- 
- 
- 
-<a name="androidSTKRILApplciationDownFromSim"></a><h4>RIL_REQUEST_HANDLE_CALL_SETUP_REQUESTED_FROM_SIM</h4> 
- 
-<p>Returns a single-byte parameter:</p> 
-<ul> 
-  <li>1: accepted</li> 
-  <li>0: not accepted</li> 
-</ul> 
-<p> This should cause the terminal response to be sent to the SIM.</p> 
- 
- 
-<a name="androidSTKTelephony"></a><h3>Telephony</h3> 
- 
-<p>STK Telephony is a protocol translation layer used to convert messages from BERL-TLV format to Application messages and back. </p> 
-<p>On the STK RIL side, STK Telphony receives raw buffer messages from RIL I/F and decodes them into a command parameters container before passing them on to the application. On the Application side, this layer receives application responses for commands and encodes them into raw buffer messages, which then get sent over the RIL I/F back to the SIM card.</p> 
- 
- 
-<a name="androidSTKFeatureList"></a><h3>Feature List</h3> 
- 
-<table border="1" cellspacing="2" cellpadding="2"> 
-  <tr> 
-    <td><p align="center"><strong>Feature</strong></p></td> 
-    <td><p align="center"><strong>Support</strong></p></td> 
-    <td><p align="center"><strong>Implemented by</strong></p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROFILE   DOWNLOAD - before radio turn-on</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SET UP   MENU</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SELECT ITEM "><p>SELECT   ITEM&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET INPUT</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET INKEY</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>DISPLAY   TEXT</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SET UP IDLE MODE TEXT   "><p>SET UP   IDLE MODE TEXT&nbsp;&nbsp;&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SEND SHORT MESSAGE "><p>SEND   SHORT MESSAGE&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SEND SS "><p>SEND   SS&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SEND USSD</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SEND DTMF</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>LAUNCH   BROWSER</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SET UP   CALL</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PLAY TONE</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POLL   INTERVAL</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POLLING   OFF</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="TIMER MANAGEMENT "><p>TIMER   MANAGEMENT&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>MORE TIME</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (MCC, MNC, LAC, Cell ID &amp; IMEI)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (NMR)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (Timing Advance)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION(battery state)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (IMEISV)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (NMR(UTRAN))</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PROVIDE   LOCAL INFORMATION (Search Mode change)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>REFRESH</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-  
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="SET UP EVENT LIST "><p>SET UP   EVENT LIST&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband – ME</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event: MT   call</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Call connected (all modes)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Call disconnected (all modes)</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Idle screen available</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Browser termination</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="Event: Location status "><p>Event:   Location status&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Data available</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Channel status</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Access Technology changed</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Local Connection</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Event:   Network Search Mode Change</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET   READER STATUS</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POWER ON   CARD</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>POWER OFF   CARD</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>PERFORM   CARD ADPU</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>RUN AT   COMMAND</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>OPEN   CHANNEL</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="CLOSE CHANNEL "><p>CLOSE   CHANNEL&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>RECEIVE   DATA</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SEND DATA</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>GET   CHANNEL STATUS</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>CALL   CONTROL BY SIM</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SMS-PP   data download</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>SMS-CB   data download</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">Baseband</p></td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="BIP over GPRS "><p>BIP over   GPRS&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>BIP over   USB</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom" u1:str="Text Attributes  "><p>Text   Attributes&nbsp;&nbsp;</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">NO</p></td> 
-    <td nowrap="nowrap" valign="bottom">&nbsp;</td> 
-  </tr> 
-  <tr> 
-    <td nowrap="nowrap" valign="bottom"><p>Color   icons</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">YES</p></td> 
-    <td nowrap="nowrap" valign="bottom"><p align="center">ME</p></td> 
-  </tr> 
-</table> 
diff --git a/pdk/docs/porting/system_requirements.jd b/pdk/docs/porting/system_requirements.jd
deleted file mode 100755
index 0a0b331..0000000
--- a/pdk/docs/porting/system_requirements.jd
+++ /dev/null
@@ -1,60 +0,0 @@
-page.title=Device Requirements
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<p>While Android is designed to support a wide variety of hardware platforms and configurations, this section provides recommended minimum device requirements.</p>
-<table border=1 cellpadding=2 cellspacing=0>
-    <tbody><tr>
-      <th scope="col">Feature</th>
-        <th scope="col">Minimum Requirement</th>
-        <th scope="col">Notes</th>
-    </tr>
-	<tr>
-	  <td>Chipset</td>
-	  <td>ARM-based</td>
-	  <td>For the first release, Android is primarily targeted towards mobile handsets and portions of the platform, such as Dalvik VM graphics processing, currently assume an ARM architecture.</td>
-	</tr>
-	<tr>
-	  <td>Memory</td>
-	  <td>128 MB RAM; 256 MB Flash External</td>
-	  <td>Android can boot and run in configurations with less memory, but it isn't recommended.</td>
-	  </tr>
-	<tr>
-	  <td>Storage</td>
-	  <td>Mini or Micro SD </td>
-	  <td>Not necessary for basic bring up, but recommended.</td>
-	  </tr>
-	<tr>
-	  <td>Primary Display </td>
-	  <td>HVGA required</td>
-	  <td>The current Android interface targets a touch-based HVGA resolution display with a touch-interface no smaller than 2.8 inches in size. However, smaller displays will suffice for initial porting.</td>
-	  </tr>
-	<tr>
-	  <td>Navigation Keys </td>
-	  <td>5-way navigation with 5 application keys, power, camera and volume controls</td>
-	  <td>&nbsp;</td>
-	  </tr>
-	<tr>
-	  <td>Camera</td>
-	  <td>2MP CMOS</td>
-	  <td>Not required for basic bring up. </td>
-	  </tr>
-	<tr>
-	  <td>USB</td>
-	  <td>Standard mini-B USB interface</td>
-	  <td>Android uses the USB interface for flashing the device system images and debugging a running device.</td>
-	  </tr>
-	<tr>
-	  <td>Bluetooth</td>
-	  <td>1.2 or 2.0 </td>
-	  <td>Not required for initial bring up.</td>
-	  </tr>
-</tbody>
-</table>
-<p>If available, your Android device can also benefit from the following optional device characteristics:</p>
-<ul>
-  <li>QWERTY keyboard</li>
-  <li>WiFi</li>
-  <li>GPS</li>
-</ul>
diff --git a/pdk/docs/porting/tcpdump.jd b/pdk/docs/porting/tcpdump.jd
deleted file mode 100755
index 1627bc7..0000000
--- a/pdk/docs/porting/tcpdump.jd
+++ /dev/null
@@ -1,90 +0,0 @@
-page.title=Debugging with tcpdump and other tools
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-
-<a name="toc"/>
-<div style="padding:10px">
-  <a href="#installing">Installing tcpdump</a><BR>
-  <a href="#running">Running tcpdump</a><br/>
-  <a href="#other">Other network debugging commands</a><br/>
-</div>
-
-<a name="installing"></a>
-<h3>Installing tcpdump</h3>
-<h4>Pushing the binary to an existing device</h4>
-<p>Download tcpdump from <a href="http://www.tcpdump.org/">http://www.tcpdump.org/</a>, then execute:</p>
-<pre>
-adb root
-adb remount
-adb push /wherever/you/put/tcpdump /system/xbin/tcpdump
-adb shell chmod 6755 /data/local/tmp/tcpdump
-</pre>
-<h4>Including tcpdump in the build image</h4>
-<p>If you are running your own build, execute:</p>
-<pre>
-mmm external/tcpdump  # install the binary in out/.../system/xbin
-make snod             # build a new system.img that includes it
-</pre>
-<p>Flash the device as usual, for example, <code>fastboot flashball</code>.</p>
-<p>If you want to build tcpdump by default, add <code>CUSTOM_TARGETS += tcpdump</code> to your <code>buildspec.mk</code>.</p>
-<h3><a name="running"></a>Running tcpdump</h3>
-<p>You need to have root access on your device. </p>
-<h4>Batch mode capture</h4>
-<p>The typical procedure is to capture packets to a file and then examine the file on the desktop, as illustrated below:</p>
-<pre>
-adb shell tcpdump -i any -p -s 0 -w /sdcard/capture.pcap
-# "-i any": listen on any network interface
-# "-p": disable promiscuous mode (doesn't work anyway)
-# "-s 0": capture the entire packet
-# "-w": write packets to a file (rather than printing to stdout)
-
-   ... do whatever you want to capture, then ^C to stop it ...
-
-adb pull /sdcard/capture.pcap .
-sudo apt-get install wireshark  # or ethereal, if you're still on dapper
-wireshark capture.pcap          # or ethereal
-
-   ... look at your packets and be wise ...
-</pre>
-<p>You can run <code>tcpdump</code> in the background from an interactive shell or from Terminal. By default, <code>tcpdump</code> captures all traffic without filtering. If you prefer, add an expression like port 80 to the <code>tcpdump</code> command line.</p>
-<h4>Real time packet monitoring</h4>
-<p>Execute the following if you would like to watch packets go by rather than capturing them to a file (<code>-n</code> skips DNS lookups. <code>-s 0</code> captures the entire packet rather than just the header):</p>
-<pre>
-adb shell tcpdump -n -s 0
-</pre>
-<p>Typical <code>tcpdump</code> options apply. For example, if you want to see HTTP traffic:</p>
-<pre>
-adb shell tcpdump -X -n -s 0 port 80
-</pre>
-<p>You can also monitor packets with <code>wireshark</code> or <code>ethereal</code>, as shown below:</p>
-<pre>
-# In one shell, start tcpdump.
-adb shell "tcpdump -n -s 0 -w - | nc -l -p 11233"
-
-# In a separate shell, forward data and run ethereal.
-adb forward tcp:11233 tcp:11233 && nc 127.0.0.1 11233 | ethereal -k -S -i -
-</pre>
-<p>Note that you can't restart capture via <code>ethereal</code>. If anything goes wrong, you will need to rerun both commands.</p>
-<p>For more immediate output, add <code>-l</code> to the <code>tcpdump</code> command line, but this can cause <code>adb</code> to choke (it helps to use a nonzero argument for <code>-s</code> to limit the amount of data captured per packet; <code>-s 100</code> is sufficient if you just want to see headers).</p>
-<h4>Disabling encryption</h4>
-<p>If your service runs over <code>https</code>, <code>tcpdump</code> is of limited use. In this case, you can rewrite some service URLs to use <code>http</code>, for example:</p>
-<pre>
-vendor/google/tools/override-gservices url:calendar_sync_https_proxy \
-  https://www.google.com/calendar rewrite http://android.clients.google.com/proxy/calendar
-</pre>
-<h3><a name="other"></a>Other network debugging commands</h3>
-<h4>On the device:</h4>
-<ul>
-  <li><code>ifconfig interface</code>: note that unlike Linux, you need to give <code>ifconfig</code> an argument</li>
-  <li><code>netcfg</code>: lists interfaces and IP addresses</li>
-  <li><code>iftop</code>: like top for network</li>
-  <li><code>route</code>: examine the routing table</li>
-  <li><code>netstat</code>: see active network connections</li>
-  <li><code>nc</code>: <code>netcat</code> connection utility</li>
-</ul>
-<h4>On the desktop:</h4>
-<ul>
-  <li> <code>curl</code>: fetch URLs directly to emulate device requests</li>
-</ul>
diff --git a/pdk/docs/porting/telephony.jd b/pdk/docs/porting/telephony.jd
deleted file mode 100755
index dcf5773..0000000
--- a/pdk/docs/porting/telephony.jd
+++ /dev/null
@@ -1,230 +0,0 @@
-page.title=Radio Layer Interface
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidTelephonyRILInitialization">RIL Initialization</a></li>
-<li><a href="#androidTelephonyRILIntro">RIL Interaction</a></li>
-<li><a href="#androidTelephonyRILImplementing">Implementing the RIL</a></li>
-<li><a href="#androidTelephonyRILFunctions">RIL Functions</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android's Radio Interface Layer (RIL) provides an abstraction layer between Android telephony services (<a href="http://code.google.com/android/reference/android/telephony/package-descr.html">android.telephony</a>) and radio hardware. The RIL is radio agnostic, and includes support for Global System for Mobile communication (GSM)-based radios.&nbsp;</P>
-
-
-<p>The diagram below illustrates the RIL in the context of Android's Telephony system architecture.</p>
-<p><img src="images/telephony.gif"></p>
-
-Solid elements represent Android blocks and dashed elements represent partner-specific blocks.
-
-<p>The RIL consists of two primary components:</p>
-<p><ul>
-<li><b>RIL Daemon</b>: The RIL daemon initializes the Vendor RIL, processes all communication from Android telephony services, and dispatches calls to the Vendor RIL as solicited commands.</li>
-<li><b>Vendor RIL</b>: The radio-specific Vendor RIL of <code>ril.h</code> that processes all communication with radio hardware and dispatches calls to the RIL Daemon (<code>rild</code>) through unsolicited commands.</li>
-</ul>
-</p>
-
-
-<a name="androidTelephonyRILInitialization"></a><h3>RIL Initialization</h3>
-
-<p>Android initializes the telephony stack and the Vendor RIL at startup as described in the sequence below:</p>
-<p><ol>
-<li>RIL daemon reads <code>rild.lib</code> path and <code>rild.libargs</code> system properties to determine the Vendor RIL library to use and any initialization arguments to provide to the Vendor RIL</li>
-<li>RIL daemon loads the Vendor RIL library and calls <code>RIL_Init</code> to initialize the RIL and obtain a reference to RIL functions</li>
-<li>RIL daemon calls <code>RIL_register</code> on the Android telephony stack, providing a reference to the Vendor RIL functions</li></ol>
-</p>
-<p>See the RIL Daemon source code at <code>//device/commands/rild/rild.c</code> for details.</p>
-<p><b>System Properties</b></p>
-<p>The following RIL-related system properties are set by the RIL library:</p>
-<p><ul>
-<li><code>ro.ril.ecclist</code>: list of valid Emergency Call Codes, for example, 911. Values are read from <code>EF_ECC</code> on the SIM and possibly supplmented by tables based on operator, network, or manufacturing code.</li></ul></p>
-
-<p>The following RIL_related system properties are available to the RIL library:</p>
-<p><ul>
-<li><code>ro.ril.hsxpa</code>: inidcates <code>hsxpa</code> support of target network.</li>
-<li><code>ro.ril.gprsclass</code>: inidcates GPRS class of target network.</li>
-<li><code>ro.ril.enable.3g.prefix=1</code>: adds the 3G prefix to the operator name.</li>
-</ul></p>
-
-<a name="androidTelephonyRILIntro"></a><h3>RIL Interaction</h3>
-
-<p>There are two forms of communication that the RIL handles:</p>
-<ul>
-  <li>Solicited commands: Solicited commands originated by RIL lib, such as <code>DIAL</code> and <code>HANGUP</code>.</li>
-  <li>Unsolicited responses: Unsolicited responses that originate from the baseband, such as <code>CALL_STATE_CHANGED</code> and <code>NEW_SMS</code>.</li>
-</ul>
-
-
-<a name="androidTelephonyRILSolicited"></a><h4>Solicited</h4>
-
-<p>The following snippet illustrates the interface for solicited commands:</p>
-<pre class="prettify">
-void OnRequest (int request_id, void *data, size_t datalen, RIL_Token t);&#13;
-void OnRequestComplete (RIL_Token t, RIL_Error e, void *response, size_t responselen);&#13;
-</pre>
-<p>There are over sixty solicited commands grouped by the following families:</p>
-<p>
-<ul>
-  <li>SIM PIN, IO, and IMSI/IMEI (11)</li>
-  <li>Call status and handling (dial, answer, mute&hellip;) (16)</li>
-  <li>Network status query (4)</li>
-  <li>Network setting (barring, forwarding, selection&hellip;) (12)</li>
-  <li>SMS (3)</li>
-  <li>PDP connection (4)</li>
-  <li>Power and reset (2)</li>
-  <li>Supplementary Services (5)</li>
-  <li>Vendor defined and support (4)<br/>
-                    </li>
-</ul>
-</p>
-<p>The following diagram illustrates a solicited call in Android.</p>
-<p><img src="images/telephony_solicted_example.gif"></p>
-
-
-<a name="androidTelephonyRILUnsolicited"></a><h4>Unsolicited</h4>
-
-<p>The following snippet illustrates the interface for unsolicited commands:</p>
-<pre class="prettify">
-void OnUnsolicitedResponse (int unsolResponse, void *data, size_t datalen);
-</pre>
-<p>There are over ten unsolicited commands grouped by the following families:</p>
-<p>
-<ul>
-<li>Network status changed (4)</li>
-<li>New SMS notify (3)</li>
-<li>New USSD notify (2)</li>
-<li>Signal strength or time changed (2)</li>
-</ul>
-</p>
-<p>The following diagram illustrates an unsolicited call in Android.</p>
-<p><img src="images/telephony_unsolicted_example.gif"></p>
-
-
-<a name="androidTelephonyRILImplementing"></a><h3>Implementing the RIL</h3>
-
-<p>To implement a radio-specific RIL, create a shared library that implements a set of functions required by Android to process radio requests. The required functions are defined in the RIL header (<code>/include/telephony/ril.h</code>).</p>
-<p>The Android radio interface is radio-agnostic and the Vendor RIL can use any protocol to communicate with the radio.&nbsp;Android provides a reference Vendor RIL, using the Hayes AT command set, that you can use as a quick start for telephony testing and a guide for commercial vendor RILs. The source code for the reference RIL is found at <code>/commands/reference-ril/</code>.</p>
-<p>Compile your Vendor RIL as a shared library using the convention <code>libril-&lt;companyname&gt;-&lt;RIL version&gt;.so</code>, for example, libril-acme-124.so, where:</p>
-<p><ul>
-<li><b>libril</b>: all vendor RIL implementations start with 'libril'</li>
-<li><b>&lt;companyname&gt;</b>: a company-specific abbreviation</li>
-<li><b>&lt;RIL version&gt;</b>: RIL version number</li>
-<li><b>so</b>: file extension</li>
-</ul>
-</p>
-
-
-<a name="androidTelephonyRILInit"></a><h4>RIL_Init</h4>
-
-<p>Your Vendor RIL must define a RIL_Init function that provides a handle to the functions which will process all radio requests.  RIL_Init will be called by the Android RIL Daemon at boot time to initialize the RIL.</p>
-
-<pre class="prettify">
-RIL_RadioFunctions *RIL_Init (RIL_Env* env, int argc, char **argv);
-</pre>
-
-<p>RIL_Init should return a RIL_RadioFunctions structure containing the handles to the radio functions:</p>
-<pre class="prettify">
-type structure {
-	int RIL_version;
-	RIL_RequestFunc onRequest;
-	RIL_RadioStateRequest onStateRequest;      
-	RIL_Supports supports;
-	RIL_Cancel onCancel;
-	RIL_GetVersion getVersion;
-} 
-RIL_RadioFunctions;
-</pre>
-
-
-<a name="androidTelephonyRILFunctions"></a><h3>RIL Functions</h3>
-
-<p><code>ril.h</code> defines RIL states and variables, such as <code>RIL_UNSOL_STK_CALL_SETUP</code>, <code>RIL_SIM_READY</code>, <code>RIL_SIM_NOT_READY</code>, as well as the functions described in the tables below. Skim the header file (<code>/device/include/telephony/ril.h</code>) for details.</p>
-
-
-<a name="androidRilFunctionsSolicited"></a><h4>RIL Solicited Command Requests</h4>
-
-<p>The vendor RIL must provide the functions described in the table below to handle solicited commands. The RIL solicited command request types are defined in <code>ril.h</code> with the <code>RIL_REQUEST_</code> prefix. Check the header file for details.</p>
-<p><table>
-  <tr><th scope="col">Name</th><th scope="col">Description</th></tr>
-  <tr>
-    <td valign="top"><code> void (*RIL_RequestFunc) (int request, void *data, size_t datalen, RIL_Token t);</code></td>
-    <td valign="top">
-	<p>This is the RIL entry point for solicited commands and must be able to handle the various RIL solicited request types defined in <code>ril.h</code> with the <code>RIL_REQUEST_</code> prefix.</p>
-	<ul>
-        <li><code>request</code> is one of <code>RIL_REQUEST_*</code></li>
-        <li><code>data</code> is pointer to data defined for that <code>RIL_REQUEST_*</code></l>
-        <li><code>t</code> should be used in subsequent call to <code>RIL_onResponse</code></li>
-        <li><code>datalen</code> is owned by caller, and should not be modified or freed by callee</li>
-      </ul>
-	<p>Must be completed with a call to <code>RIL_onRequestComplete()</code>. &nbsp;<code>RIL_onRequestComplete()</code> may be called from any thread before or after this function returns. This will &nbsp;always be called from the same thread, so returning here implies that the radio is ready to process another command (whether or not the previous command has completed).</p></td>
-  </tr>
-  <tr>
-    <td valign="top"><code> RIL_RadioState (*RIL_RadioStateRequest)();</code></td>
-    <td valign="top">This function should return the current radio state synchronously.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code> int (*RIL_Supports)(int requestCode);</code></td>
-    <td valign="top">This function returns "1" if the specified <code>RIL_REQUEST</code> code is supported and 0 if it is not.</td>
-  </tr>
-  <tr>
-    <td valign="top"><code> void (*RIL_Cancel)(RIL_Token t);</code></td>
-    <td valign="top"><p>This function is used to indicate that a pending request should be canceled. This function is called from a separate thread--not the thread that calls <code>RIL_RequestFunc</code>.</p>
-      <p>On cancel, the callee should do its best to abandon the request and call <code>RIL_onRequestComplete</code> with <code>RIL_Errno CANCELLED</code> at some later point.</p>
-      <p>Subsequent calls to <code>RIL_onRequestComplete</code> for this request with other results will be tolerated but ignored (that is, it is valid to ignore the cancellation request).</p>
-    <p><code>RIL_Cancel</code> calls should return immediately and not wait for cancellation.</p></td>
-  </tr>
-  <tr>
-    <td valign="top"><code> const char * (*RIL_GetVersion) (void);</code></td>
-    <td valign="top">Return a version string for your Vendor RIL</td>
-  </tr>
-</table>
-
-
-<p>The vendor RIL uses the following callback methods to communicate back to the Android RIL daemon.</p>
-<p>
-<table>
-  <tr>
-    <th scope="col">Name</th>
-    <th scope="col">Description</th>
-  </tr>
-  <tr>
-    <td><code>void RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen);</code></td>
-    <td><ul>
-      <li><code>t</code> is parameter passed in on previous call to <code>RIL_Notification</code> routine.</li>
-      <li>If <code>e</code> != SUCCESS, then response can be null and is ignored</li>
-      <li><code>response</code> is owned by caller, and should not be modified or freed by callee</li>
-      <li><code>RIL_onRequestComplete</code> will return as soon as possible</li>
-    </ul></td>
-  </tr>
-  <tr>
-    <td><code>void RIL_requestTimedCallback (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime);</code></td>
-    <td>Call user-specified callback function on the same thread that <code>RIL_RequestFunc</code> is called. If <code>relativeTime</code> is specified, then it specifies a relative time value at which the callback is invoked. If <code>relativeTime</code> is NULL or points to a 0-filled structure, the callback will be invoked as soon as possible.</td>
-  </tr>
-</table></p>
-
-
-<a name="androidRilFunctionsUnsolicited"></a><h4>RIL Unsolicited Commands</h4>
-
-<p>The functions listed in the table below are call-back functions used by the Vendor RIL to invoke unsolicited commands on the Android platform. See <code>ril.h</code> for details. </p>
-<p>
-<table>
-  <tr>
-    <th scope="col">Name</th>
-    <th scope="col">Description</th>
-  </tr>
-  <tr>
-    <td><code>void RIL_onUnsolicitedResponse(int unsolResponse, const void *data, size_t datalen);</code></td>
-    <td><ul>
-      <li><code>unsolResponse</code> is one of <code>RIL_UNSOL_RESPONSE_*</code></li>
-      <li><code>data</code> is pointer to data defined for that <code>RIL_UNSOL_RESPONSE_*</code></li>
-      <li><code>data</code> is owned by caller, and should not be modified or freed by callee</li>
-    </ul></td>
-  </tr>
-</table></p>
diff --git a/pdk/docs/porting/usersguide.jd b/pdk/docs/porting/usersguide.jd
deleted file mode 100755
index 3a1ecfb..0000000
--- a/pdk/docs/porting/usersguide.jd
+++ /dev/null
@@ -1,66 +0,0 @@
-page.title=Android User's Guide Sources
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>Android User's Guide Sources</h2>
-<ul>
-<li><a href="http://dl.google.com/android/porting/userdocs/android-users-guide-220cc-100.zip">Android 2.2 <em>User's Guide</em></a></li>
-</ul>
-</div>
-</div>
-
-<p><a href="http://dl.google.com/android/porting/userdocs/android-users-guide-220cc-100.zip">This archive</a> contains Framemaker 9 source files, a PDF
-example, and some related files for the "Android User's Guide," version
-AUG-CC-220-100, which Google is releasing under the Creative Commons Attribution
-3.0 License:</p>
-
-<p>"Except as otherwise noted at <a
-href="http://code.google.com/policies.html#restrictions">http://code.google.com/
-policies.html#restrictions</a>, the contents of this manual is licensed under
-the Creative Commons Attribution 3.0 License, which is available at <a
-href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/
-licenses/by/3.0/</a>. When using this work in whole or in part, please attribute
-the work to Google Inc. No Google or third-party trademarks or brand features
-are included in this license."</p>
-
-<p>This book documents Android 2.2 as implemented for the Google Nexus
-One phone. By releasing the sources to this book under the Creative
-Commons Attibution 3.0 License, we hope that a wide variety of OEMs
-and developers will find some or all of these chapters helpful when
-documenting their own implementations of Android 2.2. You should be
-able to remove irrelevant chapters, add your own chapters, and rewrite
-some or all of the chapters you keep, as a quicker way to document
-your Android implementation than by starting from scratch.</p>
-
-<p>Keep these points in mind when working with these files:</p>
-
-<ul>
-<li>These source files were created in Adobe Framemaker 9: you will need
-Frame and know how to use it to make use of these files. If Frame is
-not convenient for you, you can copy text from the PDF document or
-explore a utility for converting these files into other formats.</li>
-
-<li>This book uses three fonts: GeneralGG, Droid Sans, and Expert Dingbats.</li>
-
-<li>GeneralGG is available for purchase from Hoefler &amp; Frere-Jones
-(<a
-href="http://www.typography.com/home/index.php">http://www.typography.com/home/index.php</a>).
-Helveticta is a good substitute if you don't want to buy or use 
-GeneralGG, which is Google's standard sans-serif font.</li>
-
-<li>Droid Sans and Expert Dingbats are included in the fonts directory:
-they are open source fonts. Droid Sans is used for screen text. Expert
-Dingbats is used for bullets.</li>
-
-<li>All variables for the book are set in the frontmatter.fm file.</li>
-
-<li>The hidden, conditional text "HTML" is used as part of Google's
-process for converting this book into Google Help Center doc format --
-you can safely ignore it.</li>
-
-<li>For more information, please contact <a
-href="mailto:userdocs@android.com">userdocs@android.com</a></li>
-
-</ul>
diff --git a/pdk/docs/porting/wifi.jd b/pdk/docs/porting/wifi.jd
deleted file mode 100755
index eea431b..0000000
--- a/pdk/docs/porting/wifi.jd
+++ /dev/null
@@ -1,51 +0,0 @@
-page.title=Wi-Fi
-pdk.version=1.0
-doc.type=porting
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-<h2>In this document</h2>
-<a name="toc"/>
-<ul>
-<li><a href="#androidWifiBuildingDriver">Building a Wi-Fi Library</a></li>
-<li><a href="#androidWifiInterface">Interface</a></li>
-</ul>
-</div>
-</div>
-
-<p>Android uses wpa_supplicant as the platform interface to the Wi-Fi device. Your Wi-Fi driver must be compatible with the standard wpa_supplicant in addition to extensions added to the supplicant (specifically, the "DRIVER" commands described in <code>wifi.h/wifi_command()</code>).</p>
-
-
-<a name="androidWifiBuildingDriver"></a><h3>Building a Wi-Fi Library</h3>
-
-<p>To create a Wi-Fi driver for Android:</p>
-<p><ul>
-<li>create a shared library that implements the interface defined in <code>include/hardware/wifi.h</code>, which also defines the Wi-Fi supplicant.</li>
-<li>Follow the instructions posted at <a href="http://hostap.epitest.fi/wpa_supplicant/">http://hostap.epitest.fi/wpa_supplicant/</a>.</li>
-<li>Place your driver in <code>libs/hardware/wifi/</code></li>
-<li>Test your driver using the command line <code>wpa_cli</code> utilities.</li>
-</ul>
-
-<p>You can find the default implementation in <code>libs/hardware/wifi/wifi.c</code>. If you need to make changes, create a new source file similar to <code>wifi.c</code>, for example, <code>wifi_mywifi.c</code>. </p>
-
-<p>Update the default <code>Android.mk</code> file (<code>libs/hardware/wifi/Android.mk</code>) as shown below.</p>
-<pre class="prettify">
-LOCAL_SHARED_LIBRARIES += libnetutils
-
-ifeq ($(TARGET_PRODUCT),acme)
-LOCAL_SRC_FILES += wifi/wifi_mywifi.c
-else
-LOCAL_SRC_FILES += wifi/wifi.c
-endif
-</pre>
-
-
-<a name="androidWifiInterface"></a><h3>Interface</h3>
-
-
-
-<p class="note"><strong>Note</strong>: This document relies on some Doxygen-generated content that appears in an iFrame below. To return to the Doxygen default content for this page, <a href="wifi.html">click here</a>.</p>
-
-
-<iframe onLoad="resizeDoxFrameHeight();" src="wifi_8h.html" scrolling="no" scroll="no" id="doxygen" marginwidth="0" marginheight="0" frameborder="0" style="width:100%;"></iframe>
diff --git a/pdk/docs/source/building-dream.jd b/pdk/docs/source/building-dream.jd
deleted file mode 100644
index d130524..0000000
--- a/pdk/docs/source/building-dream.jd
+++ /dev/null
@@ -1,27 +0,0 @@
-page.title=Building for an Android Dev Phone
-doc.type=source
-@jd:body
-<p><i>The information on this page is a bit out of date. We'll update this
-page as soon as we can.</i></p>
-<div>The basic manifest for 1.6 defines which projects are
-needed to do a generic build for the emulator or for unlocked Dream devices
-(e.g. the Android Dev Phone 1). You need to have an appropriate device running
-a matching official image.<br><br>To build donut for dream (your
-device needs to be an ADP1 running an official 1.6 system):<br><ol><li>Follow
-the <a href="{@docRoot}source/download.html">normal steps</a>
-to setup repo and check out the sources.
-</li>
-<li>At the root of your source tree, run ". build/envsetup.sh" like you normally would for an emulator build.
-</li>
-<li>Run "make adb" if you don't already have adb in your path.
-</li>
-<li>run "adb root".<br></li>
-<li>in vendor/htc/dream-open/ there is a script called "extract-files.sh" that must be run (from that directory) to extract some proprietary binaries from your device (*). You only need to do this once.<br></li>
-<li>run "lunch aosp_dream_us-eng" to specifically configure the build system for dream (the default is the equivalent of "lunch generic-eng", which doesn't contain dream-specific files).<br></li>
-<li>run make from the top of the source tree.
-</li>
-<li>from this point, the fastboot tool (which is put automatically in your path) can be used to flash a device: boot the device into the bootloader by holding the back key while pressing the power key, and run "fastboot -w flashall".<br></li>
-</ol>
-<p>Note: these instructions work for the sapphire (ADP2) build target, as
-well. Simply replace "dream" with "sapphire" above.</p>
-</div>
diff --git a/pdk/docs/source/cla-corporate.jd b/pdk/docs/source/cla-corporate.jd
deleted file mode 100644
index 0f9452b..0000000
--- a/pdk/docs/source/cla-corporate.jd
+++ /dev/null
@@ -1,51 +0,0 @@
-page.title=Corporate Contributor License Agreement
-doc.type=source
-@jd:body
-<div><p>In order to clarify the intellectual property license granted with Contributions from any person or entity, the Android Open Source Project (the "Project") must have a Contributor License Grant ("Grant") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of the Project and the Android Open Source Project Leads (the "Project Leads"); it does not change your rights to use your own Contributions for any other purpose.
-</p>
-<p>This version of the Grant allows an entity (the "Corporation") to submit Contributions to the Project Leads, to authorize Contributions submitted by its designated employees to the Project Leads, and to grant copyright and patent licenses thereto. If you have not already done so, please complete and send an original signed Grant to
-</p>
-<blockquote>Google Inc.<br>Attn: Open Source Program Office <br>1600 Amphitheatre Pkwy <br>Building 43<br>Mountain View, CA 94043<br>U.S.A.<br></blockquote>
-<p>Scanned agreements may also be emailed in PDF form to cla-submissions@google.com
-</p>
-<p>If necessary, you may send it by facsimile to (650) 887-1625. Please read this document carefully before signing and keep a copy for your records.
-</p>
-<pre>Corporation name: ___________________________________________________<br><br><br><br>Corporation address: ________________________________________________<br><br><br><br>_____________________________________________________________________<br><br><br><br>_____________________________________________________________________<br><br><br><br>Point of Contact: ___________________________________________________<br><br><br><br>E-Mail:  ____________________________________________________________<br><br><br><br>Telephone: _____________________<br><br><br><br>Fax: ___________________________<br><br></pre>
-<p>You accept and agree to the following terms and conditions for Your present and future Contributions submitted to the Project. Except for the license granted herein to the Project Leads and recipients of software distributed by the Project Leads, You reserve all right, title, and interest in and to Your Contributions.
-</p>
-<ol><li><p>Definitions.
-</p>
-<p>"You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Grant to the Project Leads. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. 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.
-</p>
-<p>"Contribution" shall mean the code, documentation or other original works of authorship expressly identified in Schedule B, as well as any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project Leads for inclusion in, or documentation of, any of the products managed or maintained by the Project Leads (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project Leads or their 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 Project Leads for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
-</p>
-</li>
-<li><p>Grant of Copyright License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads 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 Your Contributions and such derivative works.
-</p>
-</li>
-<li><p>Grant of Patent License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads 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 You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Grant for that Contribution or Work shall terminate as of the date such litigation is filed.
-</p>
-</li>
-<li><p>You represent that You are legally entitled to grant the above license. You represent further that each employee of the Corporation designated on Schedule A below (or in a subsequent written modification to that Schedule) is authorized to submit Contributions on behalf of the Corporation.
-</p>
-</li>
-<li><p>You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others).
-</p>
-</li>
-<li><p>You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your 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.
-</p>
-</li>
-<li><p>Should You wish to submit work that is not Your original creation, You may submit it to the Project Leads separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".<br></p>
-</li>
-<li><p>It is your responsibility to notify the Project Leads when any change is required to the list of designated employees authorized to submit Contributions on behalf of the Corporation, or to the Corporation's Point of Contact with the Project.
-</p>
-</li>
-</ol>
-<pre><br><br><br>Please sign: __________________________________   Date: _______________<br><br><br><br>Title:  _______________________________________________________________<br><br><br><br>Corporation: __________________________________________________________<br><br></pre>
-<h3>
-Schedule A</h3>
-[Initial list of designated employees. NB: authorization is not tied to particular Contributions.]
-<h3>
-Schedule B</h3>
-[Identification of optional concurrent software grant. Would be left blank or omitted if there is no concurrent software grant.]
-</div>
diff --git a/pdk/docs/source/cla-individual.jd b/pdk/docs/source/cla-individual.jd
deleted file mode 100644
index 8890be8..0000000
--- a/pdk/docs/source/cla-individual.jd
+++ /dev/null
@@ -1,44 +0,0 @@
-page.title=Contributor License Agreement for Individuals
-doc.type=source
-@jd:body
-<div><p><i>Please visit the <a href="https://review.source.android.com/#settings,new-agreement">code review tool</a>
-to execute the grant online.This page provides the text of the Individual Contributor License Grant for your quick review.</i>
-<br></p>
-<p><br></p>
-<p>In order to clarify the intellectual property license granted with Contributions from any person or entity, the Android Open Source Project (the "Project") must have a Contributor License Grant ("Grant") on file that has been signed by each Contributor, indicating agreement to the license terms below. This license is for your protection as a Contributor as well as the protection of the Project and the Android Open Source Project Leads (the "Project Leads"); it does not change your rights to use your own Contributions for any other purpose. If you have not already done so, please complete and send an original signed Grant to
-</p>
-<blockquote>Google Inc.<br>Attn: Open Source Program Office <br>1600 Amphitheatre Pkwy <br>Building 43<br>Mountain View, CA 94043<br>U.S.A.<br></blockquote>
-<p>Scanned agreements may also be emailed in PDF form to cla-submissions@google.com, sent by facsimile to (650) 887-1625, or <a href="https://review.source.android.com/#settings,new-agreement">signed electronically</a>
-.
-</p>
-<p>Please read this document carefully before signing and keep a copy for your records.
-</p>
-<pre><br><br>Full name: ____________________________  E-Mail: ______________________<br><br><br><br>Mailing Address: ______________________  Telephone: ___________________<br><br><br><br>_______________________________________  Facsimile: ___________________<br><br><br><br>_______________________________________  Country:   ___________________<br><br><br></pre>
-<p>You accept and agree to the following terms and conditions for Your present and future Contributions submitted to the Project. Except for the license granted herein to the Project Leads and recipients of software distributed by the Project Leads, You reserve all right, title, and interest in and to Your Contributions.
-</p>
-<p><br></p>
-<ol><li><p>Definitions. "You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Grant. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. 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. "Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project Leads for inclusion in, or documentation of, any of the products managed or maintained by the Project Leads (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project Leads or their 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 Project Leads for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
-</p>
-</li>
-<li><p>Grant of Copyright License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads 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 Your Contributions and such derivative works.
-</p>
-</li>
-<li><p>Grant of Patent License. Subject to the terms and conditions of this Grant, You hereby grant to the Project Leads and to recipients of software distributed by the Project Leads 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 You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that your Contribution, or the Work to which you have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Grant for that Contribution or Work shall terminate as of the date such litigation is filed.
-</p>
-</li>
-<li><p>You represent that you are legally entitled to grant the above license. If your employer(s) has rights to intellectual property that you create that includes your Contributions, you represent that you have received permission to make Contributions on behalf of that employer, that your employer has waived such rights for your Contributions to the Project Leads, or that your employer has executed a separate Corporate Contributor License Grant with the Project Leads.
-</p>
-</li>
-<li><p>You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.
-</p>
-</li>
-<li><p>You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your 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.
-</p>
-</li>
-<li><p>Should You wish to submit work that is not Your original creation, You may submit it to the Project Leads separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".<br></p>
-</li>
-<li><p>You agree to notify the Project Leads of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.
-</p>
-</li>
-</ol>
-</div>
diff --git a/pdk/docs/source/code-lines.jd b/pdk/docs/source/code-lines.jd
deleted file mode 100644
index 5ceb103..0000000
--- a/pdk/docs/source/code-lines.jd
+++ /dev/null
@@ -1,80 +0,0 @@
-page.title=Android Code-Lines
-doc.type=source
-@jd:body
-<p>The Android Open Source Project maintains a complete software stack intended
-to be ported by OEMs and other device implementors to run on actual hardware.
-Accordingly, we maintain a number of "code lines" to clearly separate the
-current stable version of Android from unstable experimental work.</p>
-<p>The chart below depicts at a conceptual level how AOSP manages code and
-releases. We're referring to these as "code lines" instead of "branches"
-simply because at any given moment there may be more than one branch extant
-for a given "code line".  For instance, when a release is cut, sometimes that
-will become a new branch in git, and sometimes not, based on the needs of the
-moment.</p>
-<img src="{@docRoot}images/code-lines.png"/>
-<h3>Notes and Explanations</h3>
-<ul>
-<li>A <i>release</i> corresponds to a formal version of the Android platform, such
-as 1.5, 2.1, and so on. Generally speaking, a release of the platform
-corresponds to a version of the <code>SdkVersion</code> field used in
-AndroidManifest.xml files, and defined in <code>frameworks/base/api</code> in
-the source tree.</li>
-<li>An <i>upstream</i> project is an open-source project from which the Android
-stack is pulling code. These include obvious projects such as the Linux kernel
-and WebKit, but over time we are migrating some of the semi-autonomous
-Android projects (such as Dalvik, the Android SDK tools, Bionic, and so on) to
-work as "upstream" projects. Generally, these projects are developed entirely in
-the public tree. For some upstream projects, development is done by contributing
-directly to the upstream project itself. See
-<a href="{@docRoot}source/submit-patches.html#upstream-projects">Upstream Projects</a>
-for details. In both cases, snapshots will be periodically pulled into releases.</li>
-<li>The diagram refers to "Eclair" and "FroYo"; however, they are simply
-placeholders, and the diagram actually reflects the overall release and
-branching strategy.</li>
-<li>At all times, a release code-line (which may actually consist of
-more than one actual branch in git) is considered the sole canonical source
-code for a given Android platform version. OEMs and other groups building devices
-should pull only from a release branch.</li>
-<li>We will set up "experimental" code-lines to capture changes from
-the community, so that they can be iterated on, with an eye toward stability.</li>
-<li>Changes that prove stable will eventually be pulled into a release
-branch. Note that this will only apply to bug fixes, app improvements, and
-other things that do not affect the APIs of the platform.</li>
-<li>Changes will be pulled into release branches from upstream projects
-(including the Android "upstream" projects) as necessary.</li>
-<li>The "n+1"th version (that is, next major version of the framework and
-platform APIs) will be developed by Google internally. See below for
-details.</li>
-<li>Changes will be pulled from upstream, release, and experimental branches
-into Google's private branch as necessary.</li>
-<li>When the platform APIs for the next version have stabilized and been fully
-tested, Google will cut a release of the next platform version. (This
-specifically refers to a new <code>SdkVersion</code>.) This will also
-correspond to the internal code-line being made a public release branch, and the
-new current platform code-line.</li>
-<li>When a new platform version is cut, a corresponding experimental
-code-line will be created at the same time.</li>
-</ul>
-<h3>About Private Code-Lines</h3>
-<p>The source management strategy above includes a code-line that Google will
-keep private. The reason for this is to focus attention on the current public
-version of Android.</p>
-<p>OEMs and other device builders naturally want to ship devices with the
-latest version of Android. Similarly, application developers don't want to
-deal with more extant platform versions than strictly necessary.  Meanwhile,
-Google retains responsibility for the strategic direction of Android as a
-platform and a product. Our approach is based on focusing on a small number of
-flagship devices to drive features, and secure protections of Android-related
-intellectual property.</p>
-<p>As a result, Google frequently has possession of confidential
-information of third parties, and we must refrain from revealing sensitive
-features until we've secured the appropriate protections. Meanwhile, there are
-real risks to the platform arising from having too many platform versions
-extant at once. For these reasons, we have structured the open-source project
--- including third-party contributions -- to focus on the currently-public
-stable version of Android. "Deep development" on the next version of the
-platform will happen in private, until it's ready to become an official
-release.</p>
-<p>We recognize that many contributors will disagree with this approach. We
-respect that others may have a different point of view; however, this is the
-approach that we feel is best, and the one we've chosen to implement.</p>
diff --git a/pdk/docs/source/code-style.jd b/pdk/docs/source/code-style.jd
deleted file mode 100644
index 957ab02..0000000
--- a/pdk/docs/source/code-style.jd
+++ /dev/null
@@ -1,624 +0,0 @@
-page.title=Code Style Guidelines for Contributors
-doc.type=source
-@jd:body
-<p>The rules below are not guidelines or recommendations, but strict rules.
-Contributions to Android generally <b>will not be accepted if they do not
-adhere to these rules.</b>
-</p>
-<p>Not all existing code follows these rules, but all new code is expected to.</p>
-<h1><a>Java Language Rules</a>
-</h1>
-<p>We follow standard Java coding conventions. We add a few rules:
-</p>
-<ol><li><a href="#exceptionsIgnore">Exceptions</a>: Never catch and ignore them without explanation.</li>
-<li><a href="#exceptionsAll">Exceptions</a>: do not catch generic Exception, except in library code at the root of the stack.</li>
-<li><a href="#finalizers">Finalizers</a>: generally don't use them.</li>
-<li><a href="#imports">Imports</a>: Fully qualify imports</li>
-</ol>
-<h1>Java Library Rules</h1>
-<p>There are conventions for using Android's Java libraries and tools. In some
-cases, the convention has changed in important ways and older code might use a
-deprecated pattern or library. When working with such code, it's okay to
-continue the existing style (see <a href="#consistency">Consistency</a>). When
-creating new components never use deprecated libraries.</p>
-<h1>Java Style Rules</h1>
-<p>Programs are much easier to maintain when all files have a consistent
-style. We follow the standard Java coding style, as defined by Sun in their <a
-href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html">Code
-Conventions for the Java Programming Language</a>, with a few exceptions and
-additions. This style guide is comprehensive and detailed and is in common
-usage in the Java community.</p>
-<p>In addition, we enforce the following style rules:</p>
-<ol><li><a href="#javadoc">Comments/Javadoc</a>: write it; use standard style</li>
-<li><a href="#shortmethods">Short methods</a>: don't write giant methods</li>
-<li>Fields: should either be at the top of the file, or immediately before the methods that use them</li>
-<li><a href="#localvariables">Local variables</a>: limit the scope</li>
-<li><a href="#import_style">Imports</a>: android; third party alphabetical; java(x)</li>
-<li><a href="#indentation">Indentation</a>: 4 spaces, no tabs.</li>
-<li><a href="#linelen">Line length</a>: 100 columns</li>
-<li><a href="#field_names">Field names</a>: Non-public, non-static fields start with m.</li>
-<li><a href="#braces">Braces</a>: Opening braces don't go on their own line.</li>
-<li><a href="#annotations">Annotations</a>: Use the standard annotations.</li>
-<li><a href="#acronyms">Acronyms are words</a>: Treat acronyms as words in names, yielding XmlHttpRequest, getUrl(), etc.</li>
-<li><a href="#todo">TODO style</a>: "TODO: write this description"</li>
-<li><a href="#consistency">Consistency</a>: Look at what's around you!</li>
-<li><a href="#logging">Logging</a>: Be careful with logging. It's expensive.</li>
-</ol>
-<h1>Javatests Style Rules</h1>
-<ol>
-<li><a href="#testmethodnames">Naming test methods</a>: testMethod_specificCase is ok</li>
-</ol>
-<h2>Java Language Rules</h2>
-<h2><a name="exceptionsIgnore"></a>Exceptions: do not ignore</h2>
-<p>Sometimes it is tempting to write code that completely ignores an exception
-like this:</p>
-<pre>void setServerPort(String value) {
-    try {
-        serverPort = Integer.parseInt(value);
-    } catch (NumberFormatException e) { }
-}</pre>
-<p>You must never do this. While you may think that your code will never
-encounter this error condition or that it is not important to handle it,
-ignoring exceptions like above creates mines in your code for someone else to
-trip over some day. You must handle every Exception in your code in some
-principled way. The specific handling varies depending on the case.</p>
-<blockquote>Anytime somebody has an empty catch clause they should have a
-creepy feeling. There are definitely times when it is actually the correct
-thing to do, but at least you have to think about it. In Java you can't escape
-the creepy feeling.
--<a href="http://www.artima.com/intv/solid4.html">James
-Gosling</a></blockquote>
-<p>Acceptable alternatives (in order of preference) are:</p>
-<ul>
-<li>Throw the exception up to the caller of your method.
-<pre>void setServerPort(String value) throws NumberFormatException {
-    serverPort = Integer.parseInt(value);
-}</pre></li>
-<li>Throw a new exception that's appropriate to your level of abstraction.
-<pre>void setServerPort(String value) throws ConfigurationException {
-    try {
-        serverPort = Integer.parseInt(value);
-    } catch (NumberFormatException e) {
-        throw new ConfigurationException("Port " + value + " is not valid.");
-    }
-}</pre></li>
-<li>Handle the error gracefully and substitute an appropriate value in the
-catch {} block.
-<pre>/** Set port. If value is not a valid number, 80 is substituted. */
-void setServerPort(String value) {
-    try {
-        serverPort = Integer.parseInt(value);
-    } catch (NumberFormatException e) {
-        serverPort = 80;  // default port for server 
-    }
-}</pre></li>
-<li>Catch the Exception and throw a new RuntimeException. This is dangerous:
-only do it if you are positive that if this error occurs, the appropriate
-thing to do is crash.
-<pre>/** Set port. If value is not a valid number, die. */
-void setServerPort(String value) {
-    try {
-        serverPort = Integer.parseInt(value);
-    } catch (NumberFormatException e) {
-        throw new RuntimeException("port " + value " is invalid, ", e);
-    }
-}</pre>
-Note that the original exception is passed to the constructor for
-RuntimeException.  If your code must compile under Java 1.3, you will need to
-omit the exception that is the cause.</li>
-<li>Last resort: if you are confident that actually ignoring the exception is
-appropriate then you may ignore it, but you must also comment why with a good
-reason:
-<pre>/** If value is not a valid number, original port number is used. */
-void setServerPort(String value) {
-    try {
-        serverPort = Integer.parseInt(value);
-    } catch (NumberFormatException e) {
-        // Method is documented to just ignore invalid user input.
-        // serverPort will just be unchanged.
-    }
-}</pre></li>
-</ul>
-<h2><a name="exceptionsAll"></a>Exceptions: do not catch generic Exception</h2>
-<p>Sometimes it is tempting to be lazy when catching exceptions and do
-something like this:</p>
-<pre>try {
-    someComplicatedIOFunction();        // may throw IOException 
-    someComplicatedParsingFunction();   // may throw ParsingException 
-    someComplicatedSecurityFunction();  // may throw SecurityException 
-    // phew, made it all the way 
-} catch (Exception e) {               // I'll just catch all exceptions 
-    handleError();                      // with one generic handler!
-}</pre>
-<p>You should not do this. In almost all cases it is inappropriate to catch
-generic Exception or Throwable, preferably not Throwable, because it includes
-Error exceptions as well. It is very dangerous. It means that Exceptions you
-never expected (including RuntimeExceptions like ClassCastException) end up
-getting caught in application-level error handling. It obscures the failure
-handling properties of your code. It means if someone adds a new type of
-Exception in the code you're calling, the compiler won't help you realize you
-need to handle that error differently. And in most cases you shouldn't be
-handling different types of exception the same way, anyway.</p>
-<p>There are rare exceptions to this rule: certain test code and top-level
-code where you want to catch all kinds of errors (to prevent them from showing
-up in a UI, or to keep a batch job running). In that case you may catch
-generic Exception (or Throwable) and handle the error appropriately. You
-should think very carefully before doing this, though, and put in comments
-explaining why it is safe in this place.</p>
-<p>Alternatives to catching generic Exception:</p>
-<ul>
-<li>Catch each exception separately as separate catch blocks after a single
-try. This can be awkward but is still preferable to catching all Exceptions.
-Beware repeating too much code in the catch blocks.</li>
-<li>Refactor your code to have more fine-grained error handling, with multiple
-try blocks. Split up the IO from the parsing, handle errors separately in each
-case.</li>
-<li>Rethrow the exception. Many times you don't need to catch the exception at
-this level anyway, just let the method throw it.</li>
-</ul>
-<p>Remember: exceptions are your friend! When the compiler complains you're
-not catching an exception, don't scowl. Smile: the compiler just made it
-easier for you to catch runtime problems in your code.</p>
-<h2><a name="finalizers"></a>Finalizers</h2>
-<p><b>What it is</b>: Finalizers are a way to have a chunk of code executed
-when an object is garbage collected.</p>
-<p><b>Pros</b>: can be handy for doing cleanup, particularly of external
-resources.</p>
-<p><b>Cons</b>: there are no guarantees as to when a finalizer will be called,
-or even that it will be called at all.</p>
-<p><b>Decision</b>: we don't use finalizers. In most cases, you can do what
-you need from a finalizer with good exception handling. If you absolutely need
-it, define a close() method (or the like) and document exactly when that
-method needs to be called. See InputStream for an example. In this case it is
-appropriate but not required to print a short log message from the finalizer,
-as long as it is not expected to flood the logs.</p>
-<h2><a name="imports"></a>Imports</h2>
-<h3>Wildcards in imports</h3>
-<p><b>What it is</b>: When you want to use class Bar from package foo,there
-are two possible ways to import it:</p>
-<ol>
-<li><code>import foo.*;</code></li>
-<li><code>import foo.Bar;</code></li>
-</ol>
-<p><b>Pros of #1</b>: Potentially reduces the number of import statements.
-</p>
-<p><b>Pros of #2</b>: Makes it obvious what classes are actually used. Makes
-code more readable for maintainers. </p>
-<p><b>Decision</b>: Use style #2 for importing all Android code. An explicit
-exception is made for java standard libraries (java.util.*, java.io.*, etc.)
-and unit test code (junit.framework.*).</p>
-<h2><a name="javadoc"></a>Comments/Javadoc</h2>
-<p>Every file should have a copyright statement at the top. Then a package
-statement and import statements should follow, each block separated by a blank
-line. And then there is the class or interface declaration. In the Javadoc
-comments, describe what the class or interface does.</p>
-<pre>/*
- * 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.
- */
-
-package com.android.internal.foo;
-
-import android.os.Blah;
-import android.view.Yada;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-/**
- * Does X and Y and provides an abstraction for Z.
- */
-public class Foo {
-    ...
-}</pre>
-<p>Every class and nontrivial public method you write <b>must</b> contain a
-Javadoc comment with at least one sentence describing what the class or method
-does. This sentence should start with a 3rd person descriptive verb.
-Examples:</p>
-<pre>/** Returns the correctly rounded positive square root of a double value. */
-static double sqrt(double a) {
-}
-
-/**
- * Constructs a new String by converting the specified array of 
- * bytes using the platform's default character encoding.
- */
-public String(byte[] bytes) {
-}</pre>
-<p>You do not need to write Javadoc for trivial get and set methods such as
-setFoo() if all your Javadoc would say is "sets Foo". If the method does
-something more complex (such as enforcing a constraint or having an important
-side effect), then you must document it. And if it's not obvious what the
-property "Foo" means, you should document it.</p>
-<p>Every method you write, whether public or otherwise, would benefit from
-Javadoc. Public methods are part of an API and therefore require Javadoc.</p>
-<p>Android does not currently enforce a specific style for writing Javadoc
-comments, but you <b>should</b> follow the <a
-href="http://java.sun.com/j2se/javadoc/writingdoccomments/">Sun Javadoc
-conventions</a>.</p>
-<h2><a name="shortmethods"></a>Short methods</h2>
-<p>To the extent that it is feasible, methods should be kept small and
-focused. It is, however, recognized that long methods are sometimes
-appropriate, so no hard limit is placed on method length. If a method exceeds
-40 lines or so, think about whether it can be broken up without harming the
-structure of the program.</p>
-<h2><a name="localvariables"></a>Local variables</h2>
-<p>The scope of local variables should be kept to a minimum (<i>Effective
-Java</i> Item 29). By doing so, you increase the readability and
-maintainability of your code and reduce the likelihood of error. Each variable
-should be declared in the innermost block that encloses all uses of the
-variable.</p>
-<p>Local variables should be declared at the point they are first used. Nearly
-every local variable declaration should contain an initializer. If you don't
-yet have enough information to initialize a variable sensibly, you should
-postpone the declaration until you do.</p>
-<p>One exception to this rule concerns try-catch statements. If a variable is
-initialized with the return value of a method that throws a checked exception,
-it must be initialized inside a try block. If the value must be used outside
-of the try block, then it must be declared before the try block, where it
-cannot yet be sensibly initialized:</p>
-<pre>// Instantiate class cl, which represents some sort of Set 
-Set s = null;
-try {
-    s = (Set) cl.newInstance();
-} catch(IllegalAccessException e) {
-    throw new IllegalArgumentException(cl + " not accessible");
-} catch(InstantiationException e) {
-    throw new IllegalArgumentException(cl + " not instantiable");
-}
-
-// Exercise the set 
-s.addAll(Arrays.asList(args));</pre>
-<p>But even this case can be avoided by encapsulating the try-catch block in a method:</p>
-<pre>Set createSet(Class cl) {
-    // Instantiate class cl, which represents some sort of Set 
-    try {
-        return (Set) cl.newInstance();
-    } catch(IllegalAccessException e) {
-        throw new IllegalArgumentException(cl + " not accessible");
-    } catch(InstantiationException e) {
-        throw new IllegalArgumentException(cl + " not instantiable");
-    }
-}
-
-...
-
-// Exercise the set 
-Set s = createSet(cl);
-s.addAll(Arrays.asList(args));</pre>
-<p>Loop variables should be declared in the for statement itself unless there
-is a compelling reason to do otherwise:</p>
-<pre>for (int i = 0; i n; i++) {
-    doSomething(i);
-}
-
-for (Iterator i = c.iterator(); i.hasNext(); ) {
-    doSomethingElse(i.next());
-}</pre>
-<h2><a name="import_style"></a>Imports</h2>
-<p>The ordering of import statements is:</p>
-<ol>
-<li>Android imports</li>
-<li>Imports from third parties (com, junit, net, org)</li>
-<li>java and javax</li>
-</ol>
-<p>To exactly match the IDE settings, the imports should be:</p>
-<ul>
-<li>Alphabetical within each grouping.</li>
-<li>Capital letters are considered to come before lower case letter (e.g. Z before a).</li>
-<li>There should be a blank line between each major grouping (android, com, junit, net, org, java, javax).</li>
-</ul>
-<h4>Why?</h4>
-<p>Originally there was no style requirement on the ordering. This meant that
-the IDE's were either always changing the ordering, or IDE developers had to
-disable the automatic import management features and maintain the imports by
-hand. This was deemed bad. When java-style was asked, the preferred styles
-were all over the map. It pretty much came down to our needing to "pick an
-ordering and be consistent." So we chose a style, updated the style guide, and
-made the IDEs obey it. We expect that as IDE users work on the code, the
-imports in all of the packages will end up matching this pattern without any
-extra engineering effort.</p>
-<p>The style chosen such that:</p>
-<ul>
-<li>The imports people want to look at first tend to be at the top (android)</li>
-<li>The imports people want to look at least tend to be at the bottom (java)</li>
-<li>Humans can easily follow the style</li>
-<li>The IDE's can follow the style</li>
-</ul>
-<h3>What about static imports?</h3>
-<p>The use and location of static imports have been mildly controversial
-issues. Some people would prefer static imports to be interspersed with the
-remaining imports, some would prefer them reside above or below all other
-imports. Additinally, we have not yet come up with a way to make all IDEs use
-the same ordering.</p>
-<p>Since most people consider this a low priority issue, just use your
-judgement and please be consistent.</p>
-
-<h2><a name="indentation"></a>Indentation</h2>
-<p>We use 4 space indents for blocks. We never use tabs. When in doubt, be
-consistent with code around you.</p>
-<p>We use 8 space indents for line wraps, including function calls and
-assignments. For example, this is correct:</p>
-<pre>Instrument i =
-        someLongExpression(that, wouldNotFit, on, one, line);</pre>
-<p>and this is not correct:</p>
-<pre>Instrument i =
-    someLongExpression(that, wouldNotFit, on, one, line);</pre>
-<h2><a name="field_names"></a>Field Names</h2>
-<ul>
-<li>Non-public, non-static field names start with m.</li>
-<li>Static field names start with s.</li>
-<li>Other fields start with a lower case letter.</li>
-<li>Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES.</li>
-</ul>
-<p>For example:</p>
-<pre>public class MyClass {
-    public static final int SOME_CONSTANT = 42;
-    public int publicField;
-    private static MyClass sSingleton;
-    int mPackagePrivate;
-    private int mPrivate;
-    protected int mProtected;
-}</pre>
-<h2><a name="braces"></a>Braces</h2>
-<p>Braces do not go on their own line; they go on the same line as the code
-before them. So:</p>
-<pre>class MyClass {
-    int func() {
-        if (something) {
-            // ...
-        } else if (somethingElse) {
-            // ...
-        } else {
-            // ...
-        }
-    }
-}</pre>
-<p>We require braces around the statements for a conditional. Except, if the
-entire conditional (the condition and the body) fit on one line, you may (but
-are not obligated to) put it all on one line. That is, this is legal:</p>
-<pre>if (condition) {
-    body(); // ok 
-}
-if (condition) body(); // ok</pre>
-<p>but this is still illegal:</p>
-<pre>if (condition)
-    body(); // bad</pre>
-<h2><a name="linelen"></a>Line length</h2>
-<p>Each line of text in your code should be at most 100 characters long.</p>
-<p>There has been lots of discussion about this rule and the decision remains
-that 100 characters is the maximum.</p>
-<p>Exception: if a comment line contains an example command or a literal URL
-longer than 100 characters, that line may be longer than 100 characters for
-ease of cut and paste.</p>
-<p>Exception: import lines can go over the limit because humans rarely see
-them. This also simplifies tool writing.</p>
-<h2><a name="annotations"></a>Java 1.5 Annotations</h2>
-<p>Annotations should precede other modifiers for the same language element.
-Simple marker annotations (e.g. &#64;Override) can be listed on the same line with
-the language element. If there are multiple annotations, or parameterized
-annotations, they should each be listed one-per-line in alphabetical
-order.</p>
-<p>Android -standard practices for the three predefined annotations in Java
-1.5's are:</p>
-<h3>&#64;Deprecated</h3>
-<p>The &#64;Deprecated annotation must be used whenever the use of the annotated
-element is discouraged. If you use the &#64;Deprecated annotation, you must also
-have a &#64;deprecated Javadoc tag and it should name an alternate implementation.
-In addition, remember that a &#64;Deprecated method is <b>still</b> supposed to
-work.</p>
-<p>If you see old code that has a &#64;deprecated Javadoc tag, please add the &#64;Deprecated annotation.</p>
-<h3>&#64;Override</h3>
-<p>The &#64;Override annotation must be used whenever a method overrides the
-declaration or implementation from a super-class.</p>
-<p>For example, if you use the &#64;inheritdocs Javadoc tag, and derive from a
-class (not an interface), you must also annotate that the method &#64;Overrides
-the parent class's method.</p>
-<h3>&#64;SuppressWarnings</h3>
-<p>The &#64;SuppressWarnings annotation should only be used under circumstances
-where it is impossible to eliminate a warning. If a warning passes this
-"impossible to eliminate" test, the &#64;SuppressWarnings annotation <b>must</b> be
-used, so as to ensure that all warnings reflect actual problems in the
-code.</p>
-<p>When a &#64;SuppressWarnings annotation is necessary, it must be prefixed with
-a TODO comment that explains the "impossible to eliminate" condition. This
-will normally identify an offending class that has an awkward interface. For
-example:</p>
-<pre>// TODO: The third-party class com.third.useful.Utility.rotate() needs generics 
-&#64;SuppressWarnings("generic-cast")
-List&lt;String&gt; blix = Utility.rotate(blax);</pre>
-<p>When a &#64;SuppressWarnings annotation is required, the code should be
-refactored to isolate the software elements where the annotation applies.</p>
-<h2><a name="acronyms"></a>Acronyms in names</h2>
-<p>Treat acronyms and abbreviations as words. The names are much more readable:</p>
-<table><tbody>
-<tr><td>Good</td> <td>Bad</td></tr>
-<tr><td>XmlHttpRequest</td> <td>XMLHTTPRequest</td></tr>
-<tr><td>getCustomerId</td> <td>getCustomerID</td></tr>
-</tbody></table>
-<p>This style rule also applies when an acronym or abbreviation is the entire
-name:</p>
-<table><tbody>
-<tr><td>Good</td> <td>Bad</td></tr>
-<tr><td>class Html</td> <td>class HTML</td></tr>
-<tr><td>String url;</td> <td>String URL;</td></tr>
-<tr><td>long id;</td> <td>long ID;</td></tr>
-</tbody></table>
-<p>Both the JDK and the Android code bases are very inconsistent with regards
-to acronyms, therefore, it is virtually impossible to be consistent with the
-code around you. Bite the bullet, and treat acronyms as words.</p>
-<p>For further justifications of this style rule, see <i>Effective Java</i>
-Item 38 and <i>Java Puzzlers</i> Number 68.</p>
-
-<h2><a name="todo"></a>TODO style</h2>
-<p>Use TODO comments for code that is temporary, a short-term solution, or
-good-enough but not perfect.</p>
-<p>TODOs should include the string TODO in all caps, followed by a colon:</p>
-<pre>// TODO: Remove this code after the UrlTable2 has been checked in.
-
-// TODO: Change this to use a flag instead of a constant.</pre>
-<p>If your TODO is of the form "At a future date do something" make sure that
-you either include a very specific date ("Fix by November 2005") or a very
-specific event ("Remove this code after all production mixers understand
-protocol V7.").</p>
-
-<h2><a name="consistency"></a>Consistency</h2>
-<p>Our parting thought: BE CONSISTENT. If you're editing code, take a few
-minutes to look at the code around you and determine its style. If they use
-spaces around their if clauses, you should too. If their comments have little
-boxes of stars around them, make your comments have little boxes of stars
-around them too.</p>
-<p>The point of having style guidelines is to have a common vocabulary of
-coding, so people can concentrate on what you're saying, rather than on how
-you're saying it. We present global style rules here so people know the
-vocabulary. But local style is also important. If code you add to a a file
-looks drastically different from the existing code around it, it throws
-readers out of their rhythm when they go to read it. Try to avoid this.</p>
-
-<h2><a name="logging"></a>Logging</h2>
-<p>While logging is necessary it has a significantly negative impact on
-performance and quickly loses its usefulness if it's not kept reasonably
-terse. The logging facilities provides five different levels of logging. Below
-are the different levels and when and how they should be used.</p>
-
-<ul>
-<li><b>ERROR:</b>
-This level of logging should be used when something fatal has happened,
-i.e. something that will have user-visible consequences and won't be
-recoverable without explicitly deleting some data, uninstalling applications,
-wiping the data partitions or reflashing the entire phone (or worse). This
-level is always logged. Issues that justify some logging at the ERROR level
-are typically good candidates to be reported to a statistics-gathering
-server.</li>
-<li><b>WARNING:</b>
-This level of logging should used when something serious and unexpected
-happened, i.e. something that will have user-visible consequences but is
-likely to be recoverable without data loss by performing some explicit action,
-ranging from waiting or restarting an app all the way to re-downloading a new
-version of an application or rebooting the device. This level is always
-logged. Issues that justify some logging at the WARNING level might also be
-considered for reporting to a statistics-gathering server.</li>
-<li><b>INFORMATIVE:</b>
-This level of logging should used be to note that something interesting to
-most people happened, i.e. when a situation is detected that is likely to have
-widespread impact, though isn't necessarily an error. Such a condition should
-only be logged by a module that reasonably believes that it is the most
-authoritative in that domain (to avoid duplicate logging by non-authoritative
-components). This level is always logged.</li>
-<li><b>DEBUG:</b>
-This level of logging should be used to further note what is happening on the
-device that could be relevant to investigate and debug unexpected behaviors.
-You should log only what is needed to gather enough information about what is
-going on about your component. If your debug logs are dominating the log then
-you probably should be using verbose logging. This level will be logged, even
-on release builds, and is required to be surrounded by an if (LOCAL_LOG) or if
-(LOCAL_LOGD) block, where LOCAL_LOG[D] is defined in your class or
-subcomponent, so that there can exist a possibility to disable all such
-logging. There must therefore be no active logic in an if (LOCAL_LOG) block.
-All the string building for the log also needs to be placed inside the if
-(LOCAL_LOG) block. The logging call should not be re-factored out into a
-method call if it is going to cause the string building to take place outside
-of the if (LOCAL_LOG) block. There is some code that still says if
-(localLOGV). This is considered acceptable as well, although the name is
-nonstandard.</li>
-<li><b>VERBOSE:</b>
-This level of logging should be used for everything else. This level will only
-be logged on debug builds and should be surrounded by if (LOCAL_LOGV) block
-(or equivalent) so that it can be compiled out by default. Any string building
-will be stripped out of release builds and needs to appear inside the if
-(LOCAL_LOGV) block.</li>
-</ul>
-<p><i>Note:</i> Within a given module, other than at the VERBOSE level, an
-error should only be reported once if possible: within a single chain of
-function calls within a module, only the innermost function should return the
-error, and callers in the same module should only add some logging if that
-significantly helps to isolate the issue.</p>
-<p><i>Note:</i> In a chain of modules, other than at the VERBOSE level, when a
-lower-level module detects invalid data coming from a higher-level module, the
-lower-level module should only log this situation to the DEBUG log, and only
-if logging provides information that is not otherwise available to the caller.
-Specifically, there is no need to log situations where an exception is thrown
-(the exception should contain all the relevant information), or where the only
-information being logged is contained in an error code. This is especially
-important in the interaction between the framework and applications, and
-conditions caused by third-party applications that are properly handled by the
-framework should not trigger logging higher than the DEBUG level. The only
-situations that should trigger logging at the INFORMATIVE level or higher is
-when a module or application detects an error at its own level or coming from
-a lower level.</p>
-<p><i>Note:</i> When a condition that would normally justify some logging is
-likely to occur many times, it can be a good idea to implement some
-rate-limiting mechanism to prevent overflowing the logs with many duplicate
-copies of the same (or very similar) information.</p>
-<p><i>Note:</i> Losses of network connectivity are considered common and fully
-expected and should not be logged gratuitously. A loss of network connectivity
-that has consequences within an app should be logged at the DEBUG or VERBOSE
-level (depending on whether the consequences are serious enough and unexpected
-enough to be logged in a release build).</p>
-<p><i>Note:</i> A full filesystem on a filesystem that is acceessible to or on
-behalf of third-party applications should not be logged at a level higher than
-INFORMATIVE.</p>
-<p><i>Note:</i> Invalid data coming from any untrusted source (including any
-file on shared storage, or data coming through just about any network
-connections) is considered expected and should not trigger any logging at a
-level higher then DEBUG when it's detected to be invalid (and even then
-logging should be as limited as possible).</p>
-<p><i>Note:</i> Keep in mind that the '+' operator, when used on Strings,
-implicitly creates a StringBuilder with the default buffer size (16
-characters) and potentially quite a few other temporary String objects, i.e.
-that explicitly creating StringBuilders isn't more expensive than relying on
-the default '+' operator (and can be a lot more efficient in fact). Also keep
-in mind that code that calls Log.v() is compiled and executed on release
-builds, including building the strings, even if the logs aren't being
-read.</p>
-<p><i>Note:</i> Any logging that is meant to be read by other people and to be
-available in release builds should be terse without being cryptic, and should
-be reasonably understandable. This includes all logging up to the DEBUG
-level.</p>
-<p><i>Note:</i> When possible, logging should be kept on a single line if it
-makes sense. Line lengths up to 80 or 100 characters are perfectly acceptable,
-while lengths longer than about 130 or 160 characters (including the length of
-the tag) should be avoided if possible.</p>
-<p><i>Note:</i> Logging that reports successes should never be used at levels
-higher than VERBOSE.</p>
-<p><i>Note:</i> Temporary logging that is used to diagnose an issue that's
-hard to reproduce should be kept at the DEBUG or VERBOSE level, and should be
-enclosed by if blocks that allow to disable it entirely at compile-time.</p>
-<p><i>Note:</i> Be careful about security leaks through the log. Private
-information should be avoided. Information about protected content must
-definitely be avoided. This is especially important when writing framework
-code as it's not easy to know in advance what will and will not be private
-information or protected content.</p>
-<p><i>Note:</i> System.out.println() (or printf() for native code) should
-never be used. System.out and System.err get redirected to /dev/null, so your
-print statements will have no visible effects. However, all the string
-building that happens for these calls still gets executed.</p>
-<p><i>Note:</i> <b>The golden rule of logging is that your logs may not
-unnecessarily push other logs out of the buffer, just as others may not push
-out yours.</b></p>
-
-<h2>Javatests Style Rules</h2>
-<h2><a name="testmethodnames"></a>Naming test methods</h2>
-<p>When naming test methods, you can use an underscore to seperate what is
-being tested from the specific case being tested. This style makes it easier
-to see exactly what cases are being tested.</p>
-<p><a>For example:</a></p>
-<pre>testMethod_specificCase1 testMethod_specificCase2</pre>
-
-<pre>void testIsDistinguishable_protanopia() {
-    ColorMatcher colorMatcher = new ColorMatcher(PROTANOPIA)
-    assertFalse(colorMatcher.isDistinguishable(Color.RED, Color.BLACK))
-    assertTrue(colorMatcher.isDistinguishable(Color.X, Color.Y))
-}
-</pre>
diff --git a/pdk/docs/source/download.jd b/pdk/docs/source/download.jd
deleted file mode 100644
index 65bcc70..0000000
--- a/pdk/docs/source/download.jd
+++ /dev/null
@@ -1,202 +0,0 @@
-page.title=Get Android Source Code
-doc.type=source
-@jd:body
-
-<div>
-  <p>This document describes how to set up your local work environment, how to use Repo to get the Android files, and how to build the files on your machine.</p>
-  <p>Related reading:
-    <ul>
-      <li>For an overview of the entire code-review and code-update process, see
-<a href="{@docRoot}source/life-of-a-patch.html">Life of a Patch</a>.</li>
-      <li>For reference details about Repo, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>.</li>
-    </ul>
-  </p>
-</div>
-
-<div>
-  <h2>What's in the source?</h2>
-  <p>To see snapshots and histories of the files available in the public Android repositories, visit the <a href="http://android.git.kernel.org/">GitWeb</a> web interface.</p>
-  <p>The source is approximately 2.6GB in size. You will need 6GB free to complete the build.</p>
-</div>
-
-<div>
-  <h2>Setting up your machine</h2>
-  <p>To build the Android source files, you will need to use Linux or Mac OS. Building under Windows is not currently supported.</p>
-
-  <h3>Linux</h3>
-  <p>The Android build is routinely tested in house on recent versions of Ubuntu (10.04 and later), but most distributions should have the required build tools available.  Reports of successes or failures on other distributions are welcome.</p>
-  <p>In general you will need:
-      <ul>
-        <li>Python 2.4, which you can download from <a href="http://www.python.org/download/">python.org</a>.</li>
-        <li>JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older.  You can download either from <a href="http://java.sun.com/javase/downloads/">java.sun.com</a>.</li>
-        <li>Git 1.5.4 or newer. You can find it at <a href="http://git.or.cz/">http://git.or.cz/</a>.</li>
-      </ul>
-  </p>
-
-  <h4>Ubuntu Linux (64-bit)</h4>
-  <p>The Sun JDK is no longer in Ubuntu's main package repository.  In order to download it, you need to add the appropriate repository and indicate to the system which JDK should be used.
-    <p>Java 6: for Gingerbread and newer
-      <div class=code>sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"<br/>
-                      sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"<br/>
-                      sudo apt-get update<br/>
-                      sudo apt-get install sun-java6-jdk<br/>
-                      sudo update-java-alternatives -s java-6-sun
-      </div>
-    </p>
-    <p>Java 5: for Froyo and older
-      <div class=code>sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"<br/>
-                      sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"<br/>
-                      sudo apt-get update<br/>
-                      sudo apt-get install sun-java5-jdk<br/>
-                      sudo update-java-alternatives -s java-1.5.0-sun
-      </div>
-    </p>
-  </p>
-  <p>To set up your development environment, install the following required packages:
-    <div class=code>$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev</div>
-  </p>
-  <p>You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc.</p>
-
-  <h4>Running Linux in a virtual machine</h4>
-If you are running Linux in a virtual machine, you will need at least 1.5GB of RAM and 10GB or more of disk space in order to build the Android tree.<br>
-</div> 
-
-<div>
-  <h3>Mac OS X</h3>
-  <p>To build the Android files in a Mac OS environment, you need an Intel/x86 machine running MacOS 10.4 (Tiger), 10.5 (Leopard), or 10.6 (Snow Leopard). The Android build system and tools do not support the obsolete PowerPC architecture.</p>
-  <p>Android must be built on a case-sensitive file system because the sources contain files that differ only in case. We recommend that you build Android on a partition that has been formatted with the journaled file system HFS+.  HFS+ is required to successfully build Mac OS applications such as the Android Emulator for OS X.</p>
-  <div>
-    <h4>Creating a case sensitive disk image</h4>
-    <p>If you want to avoid partitioning/formatting your hard drive, you can use a case-sensitive disk image instead. To create the image, launch Disk Utility and select "New Image".  A size of 8 GB is sufficient, or more if you prefer.  Be sure to select "case sensitive, journaled" as the volume format.</p>
-    <p>This will create a .dmg file which, once mounted, acts as a drive with the required formatting for Android development. For a disk image named "android.dmg" stored in your home directory, you can add the following to your <tt>~/.bash_profile</tt> to mount the image when you execute "mountAndroid": 
-    <div class=code># mount the android file image<br/>
-                    function mountAndroid{ hdiutil attach ~/android.dmg-mountpoint /Volumes/android; }</div>
-    Once mounted, you'll do all your work in the "android" volume. You can eject it (unmount it) just like you would with an external drive.</p>
-  </div>
-
-  <p>To set up your Mac OS development environment, follow these steps:
-    <ol>
-      <li>Install XCode from <a href="http://developer.apple.com/">http://developer.apple.com</a>. We recommend version 3.0 or newer.  If you are not already registered as an Apple developer, you will have to create an Apple ID in order to download.</li>
-      <li>Install MacPorts from <a href="http://www.macports.org/install.php">http://www.macports.org/</a>.</li>
-      <li>Make sure that /opt/local/bin appears in your path BEFORE /usr/bin.  If not, add 
-        <div class=code>export PATH=/opt/local/bin:$PATH</div>
-          to your <tt>~/.bash_profile</tt>.</li>
-      <li>Get make, git, and GPG packages from port: 
-          <div class=code>$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg</div>
-          If using Mac OS 10.4, also install bison:
-          <div class=code>$ POSIXLY_CORRECT=1 sudo port install bison</div>
-      </li>
-      <li>Temporary step: There is a bug in gmake 3.82 that prevents android from building.  You can install version 3.81 using MacPorts by taking the following steps:
-        <p>Edit <tt>/opt/local/etc/macports/sources.conf</tt> and a line that says <div class=code>file:///Users/Shared/dports</div> above the rsync line.  Then create this directory: <div class=code>$ mkdir /Users/Shared/dports</div>
-          In the new <tt>dports</tt> directory, run <div class=code>$ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/</div>
-          Create a port index for your new local repository: <div class=code>$ portindex /Users/Shared/dports</div>
-          Finally, install the old version of gmake with <div class=code>$ sudo port install gmake @3.81</div>
-        </p>
-      </li>
-      <li>Set an appropriate per-process file descriptor limit. To do this, add the following lines to your <tt>~/.bash_profile</tt>: <div class=code># set the number of open files to be 1024<br/>
-                      ulimit -S -n 1024</div>
-      </li>
-    </ol>
-  </p>
-</div>
-
-
-<div>
-  <h2>Installing Repo</h2>
-  <p>Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>.</p>
-  <p>To install, initialize, and configure Repo, follow these steps:
-    <ol>
-      <li>Make sure you have a bin/ directory in your home directory, and that it is included in your path:
-        <div class=code>$ mkdir ~/bin<br/>
-                        $ PATH=~/bin:$PATH</div>
-      </li>
-      <li>Download the Repo script and ensure it is executable:
-        <div class=code>$ curl http://android.git.kernel.org/repo &gt; ~/bin/repo<br/>
-                        $ chmod a+x ~/bin/repo</div>
-      </li>
-    </ol>
-</div>
-
-<div>
-  <h2>Initializing a Repo client</h2>
-  <p>After installing Repo, set up your client to access the android source repository:
-    <ol>
-      <li>Create an empty directory to hold your working files:
-        <div class=code>$ mkdir <i>directory</i><br/>
-                        $ cd <i>directory</i></div>
-      </li>
-      <li>Run <tt>repo init</tt> to bring down the latest version of Repo with all its most recent bug fixes.  You must specify a URL for the manifest, which specifies where the various repositories included in the Android source will be placed within your working directory.
-        <div class=code>$ repo init -u git://android.git.kernel.org/platform/manifest.git</div>
-        To check out a branch other than "master", specify it with -b:
-        <div class=code>$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake</div>
-      </li>
-      <li>When prompted, please configure Repo with your real name and email address.  To use the Gerrit code-review tool, you will need an email address that is connected with a <a href="http://www.google.com/accounts">registered Google account</a>.  Make sure this is a live address at which you can receive messages.  The name that you provide here will show up in attributions for your code submissions.
-      </li>
-    </ol>
-    A successful initialization will end with a message stating that Repo is initialized in your working directory.  Your client directory should now contain a <tt>.repo</tt> directory where files such as the manifest will be kept.</p>
-</div>
-
-<div>
-  <h2>Getting the files</h2>
-  <p>To pull down files to your working directory from the repositories as specified in the default manifest, run
-    <div class=code>$ repo sync</div>
-    For more about <tt>repo sync</tt> and other Repo commands, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>.</span>
-  <p>The Android source files will be located in your working directory under their project names.</p>
-</div>
-
-<div>
-  <h2>Verifying Git Tags</h2>
-  <p>Load the following public key into your GnuPG key database. The key is used to sign annotated tags that represent releases.
-    <div class=code>$ gpg --import</div>
-    Copy and paste the key(s) below, then enter EOF (Ctrl-D) to end the input and process the keys.
-    <div class=code>-----BEGIN PGP PUBLIC KEY BLOCK-----<br>
-      Version: GnuPG v1.4.2.2 (GNU/Linux)<br><br>
-      mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV <br>
-      lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7<br>
-      8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD <br>
-      u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z <br>
-      wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq <br>
-      /HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5<br>
-      jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4<br>
-      MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9<br>
-      b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv <br>
-      aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k <br>
-      cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX <br>
-      gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI <br>
-      2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl <br>
-      QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up <br>
-      hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk <br>
-      C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX <br>
-      LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+<br>
-      OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M <br>
-      pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s <br>
-      KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb <br>
-      N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA <br>
-      vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo <br>
-      G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ <br>
-      hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l <br>
-      EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=<br>
-      =Wi5D <br>
-      -----END PGP PUBLIC KEY BLOCK-----
-    </div>
-    After importing the keys, you can verify any tag with <div class=code>$ git tag -v <i>tagname</i></div>
-  </p>
-</div>
-
-<div>
-  <h2>Building the code</h2>
-  <p>To build the files, run envsetup, lunch, and make from within your working directory:
-    <div class=code>$ cd ~/<i>directory</i><br/>
-                    $ source build/envsetup.sh<br/>
-                    $ lunch<br/>
-                    $ make<br/>
-    </div>
-    If your build fails because of a missing <tt>run-java-tool</tt>, try setting the <tt>ANDROID_JAVA_HOME</tt> environment variable before making. 
-    <div class=code>$ export ANDROID_JAVA_HOME=$JAVA_HOME</div>
-  </p>
-</div>
-
-<div>
-  <h2>What's next?</h2>
-  <p>See <a href="{@docRoot}source/using-eclipse.html">Using Eclipse</a> for instructions on how to use an IDE for Android platform development.  To learn about reporting an issue and searching previously reported issues, see <a href="{@docRoot}source/report-bugs.html">Report bugs</a>.  For information about editing the files and uploading changes to the code-review server, see <a href="{@docRoot}source/submit-patches.html">Contribute</a>.
-</div>
diff --git a/pdk/docs/source/git-repo.jd b/pdk/docs/source/git-repo.jd
deleted file mode 100644
index f777e58..0000000
--- a/pdk/docs/source/git-repo.jd
+++ /dev/null
@@ -1,319 +0,0 @@
-page.title=Using Repo and Git
-doc.type=source
-@jd:body
-<div>
-<p>To work with the Android code, you will need to use both Git and Repo.<br></p>
-<ul><li><i>Git</i>
-is an open-source version-control system designed to handle very large projects that are distributed over multiple repositories. In the context of Android, we use Git for local operations such as local branching, commits, diffs, and edits.<br><br></li>
-<li><i>Repo</i>
-is a tool that we built on top of Git. Repo helps us manage the many Git repositories, does the uploads to our <a href="http://review.source.android.com/">revision control system</a>
-, and automates parts of the Android development workflow. Repo is not meant to replace Git, only to make it easier to work with Git in the context of Android. The repocommand is an executable Python script that you can put anywhere in your path.<i><br><br></i>
-In working with the Android source files, you will use Repo for across-network operations. For example, with a single Repo command you can download files from multiple repositories into your local working directory.
-</li>
-</ul>
-<h2>
-About Git
-</h2>
-<h3>
-Why Git?
-</h3>
-One of the challenges in setting up the Android project was figuring out how to best support the outside community--from the hobbiest community to large OEMs building mass-market consumer devices. We wanted components to be replaceable, and we wanted interesting components to be able to grow a life of their own outside of Android. We first chose a distributed revision control system, then further narrowed it down to Git.<br><h3>
-Already a Git user?
-</h3>
-In most situations, you can use Git instead of Repo, or mix Repo and Git
-commands to form complex commands. Using Repo for basic across-network
-operations will make your work much simpler, however.
-<br>
-<div><h2>
-Task reference <br></h2>
-The task list below shows a summary of how to do common Repo and Git tasks.
-For complete quick-start information and examples, see <a
-href="{@docRoot}source/download.html">Get source</a>
-.
-<h3>
-Installing Repo <br></h3>
-$ curl http://android.git.kernel.org/repo &gt; ~/bin/repo <div>$ chmod a+x ~/bin/repo</div>
-$ mkdir <i>working-directory-name</i>
-<br>$ cd <i>working-directory-name <br></i>
-$ repo init -u git://android.git.kernel.org/platform/manifest.git <br><br><h3>
-Synchronizing your client
-</h3>
-To synchronize the files for all available projects:<br>$ repo sync <br><br>To
-synchronize the files for selected projects:<br>$ repo sync <i>project1
-project2 ...</i>
-<i><br></i>
-<br><h3>
-Why use topic branches?
-</h3>
-Start a topic branch in your local work environment whenever you begin a change, for example when you begin work on a bug or new feature.<br><br>A topic branch is not a copy of the original files; it is a pointer to a particular commit. This makes creating local branches and switching among them a light-weight operation. By using branches, you canisolateone aspect of your work from the others. For an interesting article about using topic branches, see <a href="http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt">Separating topic branches</a>
-.
-<div><img src="{@docRoot}images/git-repo-0.png">
-</div>
-<br><br><h3>
-Creating topic branches
-</h3>
-To start a topic branch using Repo:<br>$ repo start <i>branchname</i>
-<br><br>To verify that your new branch was created:<br>$ repo status <br><br><h3>
-Using topic branches
-</h3>
-To assign the branch to a particular project:<br>$ repo start <i>branch</i>
-<i>name project</i>
-<br><br>To switch back and forth among branches that you have created in your local work environment:<br>$ git checkout <i>branchname</i>
-<br><br>To see a list of existing branches:<br>$ git branch <br>or...<br>$ repo branches <br><br>The name of the current branch will be preceded by an asterisk.<br><br></div>
-<div><i><b>Note:</b>
-<br></i>
-A bug might be causing repo sync to reset the local topic branch. If git branch shows * (no branch) after you run repo sync, then run git checkoutagain.<br></div>
-<div><br><h3>
-Viewing client status
-</h3>
-To list the state of your files:<br>$ repo status <br><br>To see uncommitted edits:<br>$ repo diff <br><br>Therepo diffcommand shows every local edit that you have made that would <i>not</i>
-go into the commit, if you were to commit right now.<br><br>To see every edit that would go into the commit if you were to commit right now, you need a Git command, git diff. Before running it, be sure you are down in the project directory:<br>$ cd ~/<i>workingdirectory</i>
-/<i>project</i>
-<br>$ git diff --cached <br><br><h3>
-Recovering sync conflicts
-</h3>
-If a repo sync shows sync conflicts:<br><ol><li>View the files that are unmerged (status code = U).
-</li>
-<li>Edit the conflict regions as necessary.
-</li>
-<li>Change into the relevant project directory, run git add and git commit for the files in question, and then "rebase" the changes. For example:<br>$ cd bionic <br>$ git add bionic/*<br>$ git commit <br>$ git rebase --continue <br><br></li>
-<li>When the rebase is complete start the entire sync again:<br>$ repo syncbionic <i>proj2</i>
-<i>proj3</i>
-<i>...</i>
-
-<i>projN</i>
-<br></li>
-</ol>
-<h3>
-Cleaning up your client files <br></h3>
-To update your local working directory after changes are merged in Gerrit:<br>$repo sync <br><br>To safely remove stale topic branches:<br>$ repo prune <br><br><h3>
-Deleting a client
-</h3>
-Deleting a client will <b>permanently delete</b>
-any changes you have not yet uploaded for review.Becauseall state information is stored in your client, you only need to delete the directory from your filesystem:<br><br>$ cd <i>~</i>
-<br>$ rm -rf <i>working-directory-name</i>
-<br><br><h3>
-Scripting common tasks
-</h3>
-You can use Repo to run the same program across all projects:<br><br>$ repo forall[<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]-c '<i>echo $REPO_PROJECT $@</i>
-'[<i>arg1</i>
-<i>arg2</i>
-<i>...</i>
-
-<i>argN</i>
-]<br><br>The -c argument is evaluated through /bin/sh and any arguments after it are passed through as shell positional parameters.<br><br><h2>
-Repo command reference
-</h2>
-Repo usage takes the following form:<br>repo <i>command options</i>
-<br><br>Optional elements are shown in brackets[ ]. Once Repo is installed, you can get information about any command by running <br>repo help <i>command</i>
-<br><br><h3>
-init
-</h3>
-repo init -u <i>url</i>
-[<i>options</i>
-]<br><br><div>Installs Repo in the current directory. This creates a .repo/ directory that contains Git repositories for the Repo source code and the standard Android manifest files. The .repo/ directory also containsmanifest.xml, which is a symlink to the selected manifest in the .repo/manifests/ directory.<br><br>The -u argument specifies a URL from which to retrieve a manifest repository. For example:<br>$ repo init -u git://android.git.kernel.org/platform/manifest.git <br><br>To select a manifest file within the repository, use the -m option. (If no manifest name is selected, the default is default.xml.)For example:<br>$ repo init -u git://android.git.kernel.org/platform/manifest.git-m dalkvik-plus.xml <br><br>To specify a revision, that is, a particular manifest-branch, use the -b option. For example:<br>$ repo init -u git://android.git.kernel.org/platform/manifest.git-b release-1.0<br><br>To see other repo init options, run <br>$ repo help init <br><br><b>Note:</b>
-For all remaining Repo commands, the current working directory must either be the parent directory of .repo/ or a subdirectory of the parent directory.<br><br></div>
-<h3>
-sync
-</h3>
-repo sync [<i>project-list</i>
-]<br><br><div>Downloads new changes and updates the working files in your local environment. After a successful repo sync, the code in specified projects will be up to date with the code in the remote repository.<br><br>You can specify project-list as a list of names or a list of paths to local source directories for the projects:<br>repo sync [<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]<br><br>If you run repo sync without any arguments, it will synchronize the files for all the projects.<br><br></div>
-<p><b>How Repo synchronization works</b>
-<br></p>
-<div>When you run repo sync, this is what happens:<br></div>
-<ol><li>If the project has never been synchronized, then repo sync is equivalent to git clone. All branches in the remote repository are copied to the local project directory.
-</li>
-<li>If the project has already been synchronized once, then repo sync is equivalent to:<br>git remote update <br>git rebase origin/<i>branch</i>
-<br>where <i>branch</i>
-is the currently checked-out branch in the local project directory. If the local branch is not tracking a branch in the remote repository, then no synchronization will occur for the project.<br><br>If the git rebase operation results in merge conflicts, you will need to use the normal Git commands (for example, git rebase --continue) to resolve the conflicts.<br></li>
-</ol>
-<div>The repo sync command also updates the private repositories in the .repo/ directory.<br></div>
-<br><h3>
-upload
-</h3>
-repo upload [<i>project-list</i>
-]<br><br><div>For the specified projects, Repo compares the local branches to the remote branches updated during the last repo sync. Repo will prompt you to select one or more of the branches that have not yet been uploaded for review.<br><br>After you select one or more branches, all commits on the selected branches are transmitted to Gerrit over an SSH connection.You will need to configure an SSH key to enable upload authorization.Visit <a href="http://review.source.android.com/Gerrit#settings,ssh-keys">SSH Keys</a>
-within the user settings panel to register your public keys with Gerrit.To enable password-less uploads, consider using ssh-agent on your client system.<br><br>When Gerrit receives the object data over its SSH server, it will turn each commit into a change so that reviewers can comment on each commit individually.<br><br>To combine several "checkpoint" commits together into a single commit, use git rebase -i before you run repo upload.<br><br>You can specify project-list as a list of names or a list of paths to local source directories for the projects:<br>repo upload [<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]<br><br>If you run repo upload without any arguments, it will search all the projects for changes to upload.<br><br>To make edits to changes after they have been uploaded, you should use a tool likegit rebase -ior git commit --amend to update your local commits.<br><br>After your edits are complete:<br></div>
-<div><ol><li>Make sure the updated branch is the currently checked out branch.
-</li>
-<li>Use repo upload --replace <i>proj1</i>
-to open the change matching editor.
-</li>
-<li>For each commit in the series, enter the Gerrit change Id inside the brackets:<br></li>
-</ol>
-</div>
-<div># Replacing from branch foo <br>[ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...<br>[ 2829 ] ec18b4ba Update proto client to support patch set replacments <br>[ 3022 ] c99883fe Teach 'repo upload --replace' how to add replacement patch se...<br># Insert change numbers in the brackets to add a new patch set.<br># To create a new change record, leave the brackets empty.<br><br>After the upload is complete the changes will have an additional Patch Set (e.g. Patch Set 2, Patch Set 3, ...).<br></div>
-<br><h3>
-diff
-</h3>
-repo diff [<i>project-list</i>
-]<br><br><div>Shows changes between commit and working tree.<br><br>You can specify project-list as a list of names or a list of paths to local source directories for the projects:<br>repo diff [<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]<br><br>Options:<br>-h, --helpmeans show this help message and exit.<br></div>
-<br><h3>
-download <br></h3>
-repo download <i>target</i>
-<i>change</i>
-<br><br><div>Downloads the specified change into the specified local directory. (Added to Repo as of version 1.0.4.)<br><br>For example, to download <a href="http://review.source.android.com/1241">change 1241</a>
-into your platform/frameworks/base directory:<br>$ repo download platform/frameworks/base 1241<br><br>A"repo sync"should effectively remove any commits retrieved via "repo download".Or, you can check out the remote branch; e.g., "git checkout m/master".<br><br><b>Note:</b>
-As of Jan. 26, 2009, there is a mirroring lag of approximately 5 minutes between when a change is visible on the web in <a href="http://review.source.android.com/">Gerrit</a>
-and when repo download will be able to find it, because changes are actually downloaded off the git://android.git.kernel.org/ mirror farm. There will always be a slight mirroring lag as Gerrit pushes newly uploaded changes out to the mirror farm.
-</div>
-<br><h3>
-forall
-</h3>
-repo forall [<i>project-list</i>
-] -c <i>command</i>
-[<i>arg.</i>
-..]<br><br><div>Runs a shell command in each project.<br><br>You can specify project-list as a list of names or a list of paths to local source directories for the projects <br></div>
-<br><h3>
-help
-</h3>
-repo help [<i>command</i>
-]<br><br><div>Displays detailed help about a command.<br></div>
-<br><h3>
-prune <br></h3>
-repo prune [<i>project-list</i>
-]<br><br><div>Prunes (deletes) topics that are already merged.<br><br>You can specify project-list as a list of names or a list of paths to local source directories for the projects:<br>repo prune [<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]<br></div>
-<br><h3>
-start
-</h3>
-repo start <i>newbranchname</i>
-[<i>project-list</i>
-]<br><br><div>Starts a new branch for development.<br><br>The <i>newbranchname</i>
-argument should provide a short description of the change you are trying to make to the projects.If you don't know, consider using the name default.<br><br>The <i>project-list</i>
-specifies which projects will participate in this topic branch. You can specify project-list as a list of names or a list of paths to local working directories for the projects:<br>repo start default [<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]<br><br>"." is a useful shorthand for the project in the current working directory.<br></div>
-<br><h3>
-status
-</h3>
-repo status [<i>project-list</i>
-]<br><br><div>Shows the status of the current working directory. You can specify project-list as a list of names or a list of paths to local source directories for the projects:<br>repo status [<i>proj1</i>
-<i>proj2</i>
-<i>...</i>
-
-<i>projN</i>
-]<br><br>To see the status for only the current branch, run <br>repo status .<br><br>The status information will be listed by project. For each file in the project, a two-letter code is used:<br></div>
-<div><ul><li>In the left-most column, an uppercase letter indicates what is happening in the index (the staged files) when compared to the last committed state.<br><br></li>
-<li>In the next column, a lowercase letter indicates what is happening in the working directory when compared to the index (what is staged).
-</li>
-</ul>
-<table><tbody><tr><td><b>Character</b>
-</td>
-<td><b>Meaning</b>
-</td>
-</tr>
-<tr><td>A
-</td>
-<td>The file is added (brand new). Can only appear in the first column.<br></td>
-</tr>
-<tr><td>M or m <br></td>
-<td>The file already exists but has been modified in some way.
-</td>
-</tr>
-<tr><td>D or d <br></td>
-<td>The file has been deleted.<br></td>
-</tr>
-<tr><td>R
-</td>
-<td>The file has been renamed. Can only appear in the first column. The new name is also shown on the line.</td>
-</tr>
-<tr><td>C
-</td>
-<td>The file has been copied from another file. Can only appear in the first column. The source is also shown.
-</td>
-</tr>
-<tr><td>T
-</td>
-<td>Only the file's mode (executable or not) has been changed. Can only appear in the first column.
-</td>
-</tr>
-<tr><td>U
-</td>
-<td>The file has merge conflicts and is still unmerged. Can only appear in the first column.
-</td>
-</tr>
-<tr><td>-
-</td>
-<td>The file state is unmodified. A hyphen in <i>both</i>
-columns means this is a new file, unknown to Git. After you run git add on this file, repo status will show A-, indicating the file has been added.<br></td>
-</tr>
-</tbody>
-</table>
-<br>For example, if you edit the file main.py within the appeng project without staging the changes, then repo status might show <br><br>project appeng/<br>-mmain.py <br><br>If you go on to stage the changes to main.py by running git add, then repo status might show <br><br>project appeng/<br>M- main.py <br><br>If you then make further edits to the already-staged main.py and make edits to another file within the project, app.yaml, then repo status might show <br><br>project appeng/<br>-mapp.yaml <br>Mm main.py <br><br></div>
-<h2>
-Git and Repo cheatsheet
-</h2>
-Click on the cheatsheet to open it in a new window for easier printing.
-
-<div><img src="{@docRoot}images/git-repo-1.png">
-</div>
-
-<!--
-<h2>Additional Resources</h2>
-<h3>Resources for platform developers</h3> 
-Google I/O videos:
-<ul>
-  <li><a href="http://sites.google.com/site/io/an-introduction-to-android">Introduction to Android</a></li> 
-  <li><a href="http://sites.google.com/site/io/anatomy-physiology-of-an-android">Anatomy Physiology of an Android</a></li> 
-  <li><a href="http://sites.google.com/site/io/inside-the-android-application-framework">Inside the Android Application Framework</a></li> 
-  <li><a href="http://sites.google.com/site/io/dalvik-vm-internals">Dalvik VM Internals</a></li> 
-</ul> 
- 
-Getting started with the Android source code:
-<ul>
-  <li><a href="http://source.android.com/source/download.html">Get source</a></li> 
-  <li><a href="http://source.android.com/source/code-style.html">Code Style Guide</a></li> 
-</ul> 
- 
-Repo and Git resources:
-<ul>
-  <li><a href="http://source.android.com/source/git-repo.html">Using Repo and Git</a></li> 
-  <li>The <a href="http://book.git-scm.com/">Git Community Book</a> maintained by Scott Chacon</li> 
-  <li><a href="http://git.or.cz/gitwiki/FrontPage">GitWiki</a></li> 
-  <li><a href="http://www.kernel.org/pub/software/scm/git/docs/">Git Manual Page</a></li> 
-  <li><a href="http://www.gitcasts.com/">GitCasts</a> (Git how-to videos)</li> 
-</ul> 
- 
-Documentation on specific tasks:
-<ul>
-  <li><a href="http://source.android.com/source/building-dream.html">Building for an Android Developer Phone</a></li> 
-</ul> 
--->
-
-<h2>
-<b>Terminology</b>
-</h2>
-<i>Staged</i>
-<i>changes</i>
-<br>Changes marked by git add for inclusion in the next commit's snapshot.<br><br><i>Commit <br></i>
-At intervals, you use git commit to save a snapshot of the staged files and a log message that describes the change.<br><br><i>Manifest</i>
-<br>A manifest file that contains a list of repositories and a mapping of where the files from these repositories will be located within your working directory. When you synchronize your files, the files contained in the repositories that are listed in the manifest will be pulled into your working directory.</div>
-</div>
diff --git a/pdk/docs/source/index.jd b/pdk/docs/source/index.jd
deleted file mode 100644
index a9acbf4..0000000
--- a/pdk/docs/source/index.jd
+++ /dev/null
@@ -1,37 +0,0 @@
-page.title=Get Involved
-doc.type=source
-@jd:body
-<div>
-<p>Thanks for your interest in Android! Here are some ways you can get involved
-and help us improve Android. For background on the Android project and our
-goals, check out the <a href="{@docRoot}about/philosophy.html">Project
-Philosophy page</a>.</p>
-
-<h2>Report Bugs</h2>
-<p>One of the easiest and most effective ways you can help improve Android is
-to file bugs. For more information, visit the <a
-href="{@docRoot}source/report-bugs.html">Reporting Bugs</a> page.</p>
-<p>Please note that we can't guarantee that any particular bug will be fixed in
-any particular release. To see what happens to your bug once you report it,
-read <a href="{@docRoot}source/life-of-a-bug.html">Life of a Bug</a>.</p>
-
-<h2>Develop Apps</h2>
-<p>We created Android so that all developers can distribute their applications
-to users on an open platform. One of the best ways you can help Android is to
-write cool apps that users love!</p>
-<p>To get started, visit <a
-href="http://developer.android.com/">developer.android.com</a>. This site
-provides the information and tools you need to write applications for
-compatible Android devices, using the SDK.</p>
-
-<h2>Contribute to the Code</h2>
-<p>Code is King. We'd love to review any changes you submit, so please check
-out the source, pick a bug or feature, and get coding. Note that the smaller
-and more targetted your patch submissions, the easier it will be for us to
-review them.</p>
-<p>You can get started with Android by learning about the <a
-href="{@docRoot}source/life-of-a-patch.html">Life of a Patch</a>, and by
-learning about <code>git</code>, <code>repo</code>, and other tools using the
-links to the left. If you need help along the way, you can join our <a
-href="{@docRoot}community/index.html">discussion groups.</a></p>
-</div>
diff --git a/pdk/docs/source/licenses.jd b/pdk/docs/source/licenses.jd
deleted file mode 100644
index 17cebeb..0000000
--- a/pdk/docs/source/licenses.jd
+++ /dev/null
@@ -1,82 +0,0 @@
-page.title=Licenses
-doc.type=source
-@jd:body
-<div>
-<p>The Android Open Source Project uses a few <a
-href="http://www.opensource.org/">open source initiative</a> approved open
-source licenses for our software.</p>
-<h2>Android Open Source Project license</h2>
-<p>The preferred license for the Android Open Source Project is the <a
-href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License,
-2.0</a> ("Apache 2.0"), and the majority of the Android software is licensed
-with Apache 2.0. While the project will strive to adhere to the preferred
-license, there may be exceptions which will be handled on a case-by-case
-basis. For example, the Linux kernel patches are under the GPLv2 license with
-system exceptions, which can be found on <a
-href="http://www.kernel.org/pub/linux/kernel/COPYING">kernel.org</a>.
-</p>
-<h2>Contributor License Grants</h2>
-<p>All <b>individual</b> contributors (that is, contributors making contributions
-only on their own behalf) of ideas, code, or documentation to the Android Open
-Source Project will be required to complete, sign, and submit an <a
-href="{@docRoot}source/cla-individual.html">Individual
-Contributor License Grant</a>. The grant can be executed online through the <a
-href="https://review.source.android.com/#settings,agreements">code review
-tool</a>. The grant clearly defines the terms under which intellectual
-property has been contributed to the Android Open Source Project. This license
-is for your protection as a contributor as well as the protection of the
-project; it does not change your rights to use your own contributions for any
-other purpose.</p>
-<p>For a <b>corporation</b> (or other entity) that has assigned employees to
-work on the Android Open Source Project, a <a
-href="{@docRoot}source/cla-corporate.html">Corporate
-Contributor License Grant</a> is available. This version of the grant allows a
-corporation to authorize contributions submitted by its designated employees
-and to grant copyright and patent licenses. Note that a Corporate Contributor
-License Grant does not remove the need for any developer to sign their own
-Individual Contributor License Grant as an individual, to cover any of their
-contributions which are <b><i>not</i></b> owned by the corporation signing the
-Corporate Contributor License Grant.
-</p>
-<p>Please note that we based our grants on the ones that the <a
-href="http://www.apache.org/">Apache Software Foundation</a> uses, which can
-be found on <a href="http://www.apache.org/licenses/">the Apache web site</a>.</p>
-<h2>Why Apache Software License?</h2>
-<p>We are sometimes asked why Apache Software License 2.0 is the preferred
-license for Android. For userspace (that is, non-kernel) software, we do in
-fact prefer ASL2.0 (and similar licenses like BSD, MIT, etc.) over other
-licenses such as LGPL.</p>
-<p>Android is about freedom and choice. The purpose of Android is promote
-openness in the mobile world, but we don't believe it's possible to predict or
-dictate all the uses to which people will want to put our software. So, while
-we encourage everyone to make devices that are open and modifiable, we don't
-believe it is our place to force them to do so. Using LGPL libraries would
-often force them to do so.</p>
-<p>Here are some of our specific concerns:</p>
-<ol>
-<li>LGPL (in simplified terms) requires either: shipping of source to the
-application; a written offer for source; or linking the LGPL-ed library
-dynamically and allowing users to manually upgrade or replace the library.
-Since Android software is typically shipped in the form of a static system
-image, complying with these requirements ends up restricting OEMs' designs.
-(For instance, it's difficult for a user to replace a library on read-only
-flash storage.)</li>
-<li>LGPL requires allowance of customer modification and reverse
-engineering for debugging those modifications.  Most device makers do
-not want to have to be bound by these terms, so to minimize the burden on
-these companies we minimize usage of LGPL software in userspace.</li>
-<li>Historically, LGPL libraries have been the source of a large number
-of compliance problems for downstream device makers and application
-developers. Educating engineers on these issues is difficult and slow-going,
-unfortunately. It's critical to Android's success that it be as easy as
-possible for device makers to comply with the licenses.  Given the
-difficulties with complying with LGPL in the past, it is most prudent to
-simply not use LGPL libraries if we can avoid it.</li>
-</ol>
-<p>The issues discussed above are our reasons for preferring ASL2.0 for
-our own code. They aren't criticisms of LGPL or other licenses. We do
-feel strongly on this topic, even to the point where we've gone out of our
-way to make sure as much code as possible is ASL2.0. However, we love all free
-and open source licenses, and respect others' opinions and preferences. We've
-simply decided that ASL2.0 is the right license for our goals.</p>
-</div>
diff --git a/pdk/docs/source/life-of-a-bug.jd b/pdk/docs/source/life-of-a-bug.jd
deleted file mode 100644
index 5d77f7a..0000000
--- a/pdk/docs/source/life-of-a-bug.jd
+++ /dev/null
@@ -1,128 +0,0 @@
-page.title=Life of a Bug
-doc.type=source
-@jd:body
-<p>The Android Open Source project maintains a public issue tracker where you
-can report bugs and request features for the Android software stack. (For
-details on this issue tracker, please see <a
-href="{@docRoot}source/report-bugs.html">the Reporting Bugs page</a>.)
-Reporting bugs is great (thank you!), but what happens to a bug report once
-you file it? This page describes the Life of a Bug.</p>
-<p><i>Please note: the the Android Open Source Project (AOSP) issue tracker is
-intended only for bugs &amp; feature requests related to the Android software
-stack. Because many users find their way here looking for the Google apps for
-Android (such as Gmail and so on), we have components set up for their
-convenience. However, these apps are not part of Android, and any issues
-reported on these components are not guaranteed to to receive attention.
-Most notably, to report issues related to Android Market, you should visit the
-<a href="http://www.google.com/support/forum/p/Android+Market?hl=en">Android
-Market Support Forum</a>.</i></p>
-<p>Here's the Life of a Bug, in a nutshell:</p>
-<ol>
-<li>A bug is filed, and has the state "New".</li>
-<li>An AOSP contributor periodically reviews and triages bugs. Bugs are
-triaged into one of four "buckets": New, Open, No-Action, or Resolved.</li>
-<li>Each bucket includes a number of states that provide more detail on the
-fate of the issue.</li>
-<li>Bugs in the "Resolved" bucket will eventually be included in a future
-release of the Android software.</li>
-</ol>
-<h2>Bucket Details</h2>
-<p>Here is some additional information on each bucket, what it means, and how
-it's handled.</p>
-<h3>New Issues</h3>
-<p>New issues include bug reports that are not yet being acted upon. The two
-states are:</p>
-<ul>
-<li><b>New</b><p>The bug report has not yet been triaged (that is, reviewed by
-an AOSP contributor.)</p></li>
-<li><b>NeedsInfo</b><p>The bug report has insufficient information to act
-upon. The person who reported the bug needs to provide additional detail
-before it can be triaged. If enough time passes and no new information is
-provided, the bug may be closed by default, as one of the No-Action
-states.</p></li>
-</ul>
-
-<h3>Open Issues</h3>
-<p>This bucket contains bugs that need action, but which are still
-unresolved, pending a change to the source code.</p>
-<ul>
-<li><b>Unassigned</b><p>The bug report has been recognized as an adequately
-detailed report of a legitimate issue, but has not yet been assigned to an
-AOSP contributor to be fixed. Typically, bugs in this state are considered low
-priority, at least insofar that if they were high priority, they'd be assigned
-to a contributor.</p></li>
-<li><b>Reviewed</b><p>Like <code>Unassigned</code>, but the issue
-represented is being tracked in a separate bug database. For example, the bug
-might have been reported via an internal bug-tracking system,
-which is considered the "master" copy. (For instance, Google maintains one
-such private issue tracker, intended primarily for bugs which contain
-sensitive information which can't be revealed publicly.)</p></li>
-<li><b>Assigned</b><p>Like <code>Unassigned</code>, but the bug has been
-actually assigned to a specific contributor to fix.</p></li>
-</ul>
-<p>Typically, a given bug will start in <code>Unassigned</code>, where it
-will remain until it is associated with a specific upcoming release, at which
-point it will enter <code>Reviewed</code> or <code>Assigned</code>. However,
-note that this isn't a guarantee, and it's not uncommon for bugs to go from
-<code>Unassigned</code> to one of the Resolved states.</p>
-<p>In general, if a bug is in one of these Open states, the AOSP team has
-recognized it as a legitimate issue and will fix it according to the product
-priorities and milestones. However, it's impossible to guarantee a fix in time 
-for any particular release.</p>
-
-<h3>No-Action Issues</h3>
-<p>This bucket contains bugs that have for one reason or another been
-determined to not require any action.</p>
-<ul>
-<li><b>Spam</b><p>A kind soul sent us some delicious pork products, that we,
-regrettably, do not want.</p></li>
-<li><b>Question</b><p>Someone mistook the issue tracker for a help forum.
-(This is not as uncommon as you might think: many users whose native language
-isn't English misunderstand the site and make this mistake.)</p></li>
-<li><b>Unreproducible</b><p>An AOSP contributor attempted to reproduce the
-behavior described, and was unable to do so. This sometimes means that the bug
-is legitimate but simply rare or difficult to reproduce, and sometimes means
-that the bug was fixed in a later release.</p></li>
-<li><b>WorkingAsIntended</b><p>An AOSP contributor has determined that the
-behavior described isn't a bug, but is the intended behavior. This state is
-also commonly referred to as "WAI".</b></li>
-<li><b>Declined</b><p>This is like <code>WorkingAsIntended</code>, except
-typically used for feature requests instead of bugs.  That is, an AOSP
-contributor has determined that the request is not going to be implemented in
-Android.</b></li>
-</ul>
-
-<h3>Resolved Issues</h3>
-<p>This bucket contains bugs that have had action taken, and are now
-considered resolved.</p>
-<ul>
-<li><b>FutureRelease</b><p>This bug has been fixed (or feature implemented) in
-a source tree, but has not yet been included in a formal Android
-platform release. (Note that this may also include fixes that exist in a
-private source tree that has not yet been contributed to a public
-tree.)</p></li>
-<li><b>Released</b><p>This bug has been fixed, and is included in a formal
-Android platform release. When this state is set, we try to also set a
-property indicating which release it was fixed in.</p></li>
-<li><b>Duplicate</b><p>This bug is a duplicate of another, existing bug
-report.</p></li>
-</ul>
-
-<h2>Other Stuff</h2>
-<p>The states and lifecycle above are how we generally try to track software.
-However, Android contains a lot of software and gets a correspondingly large
-number of bugs. As a result, sometimes bugs don't make it through all the
-states in a formal progression. We do try to keep the system up to date, but
-we tend to do so in periodic "bug sweeps" where we review the database and
-make updates.</p>
-<p>Since the AOSP is essentially constantly evolving, we do make tweaks to
-the list of bug states and the lifecycle described above.  When we do this,
-however, we'll be sure to update this page as well.</p>
-<p>Finally, you should be aware that for a variety of reasons, there are
-actually multiple issue trackers for Android-related issues. The <a
-href="http://code.google.com/p/android/issues/list">Google Code Project
-Hosting Issue Tracker</a> is the <b>only</b> official public issue tracker; however,
-Google also maintains a private issue tracker, own, as do most OEMs. We try to
-keep the public issue tracker in sync with private issue trackers
-wherever possible, but in cases where confidential information and security
-issues are involved, this isn't always possible.</p>
diff --git a/pdk/docs/source/life-of-a-patch.jd b/pdk/docs/source/life-of-a-patch.jd
deleted file mode 100644
index 458afa5..0000000
--- a/pdk/docs/source/life-of-a-patch.jd
+++ /dev/null
@@ -1,11 +0,0 @@
-page.title=Life of a Patch
-doc.type=source
-@jd:body
-<p>The Android Open Source Project (AOSP) uses a web-based code review tool
-known as "gerrit". The image below is a flowchart that details what happens to
-a patch, once it's been written. Though it may appear complex, the majority of
-the steps below are performed in the web application.</p>
-<p>For full instructions on how to get set up to use gerrit and git, please
-see <a href="{@docRoot}source/submit-patches.html">the Submitting Patches
-page</a>.</p>
-<img src="{@docRoot}images/workflow-0.png"/>
diff --git a/pdk/docs/source/overview.jd b/pdk/docs/source/overview.jd
deleted file mode 100644
index 5a31018..0000000
--- a/pdk/docs/source/overview.jd
+++ /dev/null
@@ -1,36 +0,0 @@
-page.title=Android 2.1 Platform
-doc.type=source
-@jd:body
-<p>Our sister site, <a
-href="http://developer.android.com/">http://developer.android.com/</a>, 
-includes feature overviews of the various Android platform versions.
-The links below will take you to developer.android.com where you can view this
-information.</p>
-<p>The links below will navigate you away from this site.</p>
-<h3><a href="http://developer.android.com/sdk/android-2.3-highlights.html">Android 2.3</a></h3>
-<p>Android 2.3 corresponded to the "Gingerbread" milestone branch, and has an API level of 9.</p>
-<h3><a href="http://developer.android.com/sdk/android-2.2-highlights.html">Android 2.2</a></h3>
-<p>Android 2.2 corresponded to the "FroYo" milestone branch, and has an API level of 8.</p>
-<h3><a href="http://developer.android.com/sdk/android-2.0-highlights.html">Android 2.1</a></h3>
-<p>Android 2.1 corresponded to the "Eclair" milestone branch, and has an API level of
-7.</p>
-<p>The Eclair branch was also used for 2.0 and 2.0.1; however, both of those
-releases were quickly obsoleted by the version 2.1 Eclair release. As Android
-2.1 includes key bug fixes and improvements not present in 2.0/2.0.1, only
-Android 2.1 should be used for new devices. As there is no compatibility
-program for 2.0 or 2.0.1, the officially compatible Eclair-based release is Android
-2.1. (The linked document refers to Android 2.0, because there were
-no new platform features added in 2.1.)</p>
-<h3><a href="http://developer.android.com/sdk/android-1.6-highlights.html">Android 1.6</a></h3>
-<p>Android 1.6 corresponded to the "Donut" milestone branch, and has an API level of
-4.</p>
-<h3><a href="http://developer.android.com/sdk/android-1.5-highlights.html">Android 1.5</a></h3>
-<p>Android 1.5 corresponded to the "Cupcake" milestone branch, and has an API
-level of 3.</p>
-<h3><a href="http://developer.android.com/sdk/android-1.1.html">Android 1.1</a></h3>
-<p>Android 1.1 has an API level of 2. Android 1.1 was known as
-"Petit Four" internally, though this name was not used officially.</p>
-<h3>Android 1.0</h3>
-<p>was the first release of Android, and has an API
-level of 1. Since it was the first released version of Android, no platform
-highlights were prepared for this release.</p>
diff --git a/pdk/docs/source/report-bugs.jd b/pdk/docs/source/report-bugs.jd
deleted file mode 100644
index a6e56c6..0000000
--- a/pdk/docs/source/report-bugs.jd
+++ /dev/null
@@ -1,133 +0,0 @@
-page.title=Report Bugs
-doc.type=source
-@jd:body
-<div>
-<p>Thanks for your interest in Android! One of the best ways you can help us
-improve Android is to let us know about any problems you find with it.</p>
-<p>First, though: if you think you've found a security vulnerability,
-<b>please don't use the forms below</b>. (Using the public forms below may
-allow anyone to see your report, which may put users at risk until the bug is
-fixed.) Instead, please report security bugs to our security team by emailing
-<a href="mailto:security@android.com">security@android.com</a>.  We believe in
-responsible disclosure of security vulnerabilities, and will give you proper
-attribution for any issues you report.</p>
-<p>Here's how to report non-security bugs:</p>
-<ol>
-  <li><a href="http://code.google.com/p/android/issues/advsearch">Search for
-  your bug</a> to see if anyone has already reported it.</li>
-  <li>If you find your issue and it's important to you, star it! That's how we
-  know which bugs are most important to fix.</li>
-  <li>If no one's reported your bug, file the bug. You can use one of these
-  templates:<ul>
-    <li><a
-    href="http://code.google.com/p/android/issues/entry?template=User%20bug%20report">Bugs
-    in your Device (for users)</a> - use this if you want to report a bug in a
-    device you own</li>
-    <li><a
-    href="http://code.google.com/p/android/issues/entry?template=Developer%20bug%20report">Bugs
-    in the Software (for developers)</a> - use this if you found a bug in the
-    course of developing an app</li>
-    <li><a
-    href="http://code.google.com/p/android/issues/entry?template=Feature%20request">Request
-    a New Feature</a> - use this for a feature you'd like to see in a future
-    verison</li>
-  </ul></li>
-</ol>
-<p>Please note that we can't guarantee that any particular bug can be fixed in
-any particular release. To see what happens to your bug once you report it,
-read <a href="{@docRoot}source/life-of-a-bug.html">Life of a Bug</a>.</p>
-<p>In general, please put as much info in bugs as you can. Just a one liner
-telling us something isn't working is usually useless, and will probably be
-closed without any action. The more detail you provide, the more likely your
-issue is to be resolved. Below, there are some examples of a good bug report
-and a poor bug report.</p>
-<h3>A Poor Bug Report</h3>
-<pre>
-Title: Error message
-
-When running Eclipse I get an "Internal Error" that says "See the .log file
-for more details".
-
-Steps to reproduce:
-Happens when "Object o = null". Doesn't happen when changed to "Object o".
-
-Expected results:
-I wouldn't get the error message--would work with Object o = null.
-
-Observed results:
-See above.
-</pre>
-<p>This is a poor bug report because it doesn't provide any context for the
-issue; is it a problem in the Dalvik virtual machine, the core framework, or
-something else? It also doesn't provide any code or hint on how to reproduce
-it. In other words, this bug report doesn't provide enough information for
-anyone to take action on, so it would be ignored.</p>
-<h3>A Good Bug Report</h3>
-<pre>
-Title: Stepping over "Object o = null" causes Eclipse "Internal Error"
-
-Interesting bug, while using Eclipse 3.3.1.1 with m37a of android and
-the following code:
-
-package com.saville.android;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-
-public class TestObjectNull extends Activity {
-    /** Called when the activity is first created. */
-    &#64;Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        setContentView(R.layout.main);
-
-        Object o = null;
-
-        o = "hi";
-
-        Log.v(TAG, "o=" + o);
-    }
-
-    static final String TAG = "TestObjectNull";
-
-}
-
-Eclipse indicates an "Internal Error" with "See the .log file for more
-details" and then asks if I want to exit the workbench. This occurs when I
-place a break point on "setContentView(R.layout.main);" and then single
-step over "Object o = null;"
-
-If I change "Object o = null;" to "Object o" all is well.
-
-The last lines of the .log file are:
-
-!ENTRY org.eclipse.core.jobs 4 2 2008-01-01 13:04:15.825
-!MESSAGE An internal error occurred during: "has children update".
-!STACK 0
-java.lang.InternalError: Invalid signature: "&lt;null&gt;"
-        at
-org.eclipse.jdi.internal.TypeImpl.signatureToTag(TypeImpl.java:307)
-        at
-org.eclipse.jdi.internal.LocalVariableImpl.tag(LocalVariableImpl.java:185)
-        at
-org.eclipse.jdi.internal.StackFrameImpl.getValues(StackFrameImpl.java:128)
-        at
-org.eclipse.jdi.internal.StackFrameImpl.getValue(StackFrameImpl.java:73)
-        at
-org.eclipse.jdt.internal.debug.core.model.JDILocalVariable.retrieveValue(JDILocalVariable.java:57)
-        at
-org.eclipse.jdt.internal.debug.core.model.JDIVariable.getCurrentValue(JDIVariable.java:66)
-        at
-org.eclipse.jdt.internal.debug.core.model.JDIVariable.getValue(JDIVariable.java:88)
-        at
-org.eclipse.debug.internal.ui.model.elements.VariableContentProvider.hasChildren(VariableContentProvider.java:62)
-        at
-org.eclipse.jdt.internal.debug.ui.variables.JavaVariableContentProvider.hasChildren(JavaVariableContentProvider.java:73)
-        at
-org.eclipse.debug.internal.ui.model.elements.ElementContentProvider.updateHasChildren(ElementContentProvider.java:223)
-        at
-org.eclipse.debug.internal.ui.model.elements.ElementContentProvider$3.run(ElementContentProvider.java:200)
-        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
-</pre>
-</div>
diff --git a/pdk/docs/source/roles.jd b/pdk/docs/source/roles.jd
deleted file mode 100644
index f4fb891..0000000
--- a/pdk/docs/source/roles.jd
+++ /dev/null
@@ -1,73 +0,0 @@
-page.title=People and Roles
-doc.type=source
-@jd:body
-<p>The Android Open Source Project (AOSP) includes individuals working in a variety
-of roles. As noted in <a href="{@docRoot}about/philosophy.html">Our
-Philosophy</a>, Google is responsible for Android product management
-and the engineering process for the core framework and platform; however,
-the project considers contributions from any source, not just Google. This
-page describes the kinds of roles that interested parties can take on.</p>
-<p>Anyone who is interested in exploring and contributing to Android can use the
-Android Open Source Project resources. Anyone can join the mailing lists, ask
-questions, contribute patches, report bugs, look at submitted patches, and use
-the tools. To get started with the Android code, see <a
-href="{@docRoot}source/index.html">Get Involved</a>.</p>
-
-<h2>Contributor</h2>
-<p>A "Contributor" is anyone making contributions to the AOSP source code,
-including both employees of Google or other companies, as well as external
-developers who are contributing to Android on their own behalf.  There is no
-distinction between Contributors who are employed by Google, and those who are
-not: all engineers use the same tools (<code>git</code>, <code>repo</code>,
-and <code>gerrit</code>), follow the same code review process, and are subject
-to the same requirements on code style and so on.</p>
-<p/>
-
-<h2>Developer</h2>
-<p>A "Developer" is an engineer writing applications that run on Android
-devices. There is, of course, no difference in skillset between a "Developer"
-and a "Contributor", but AOSP uses "Developer" to distinguish between
-engineers using the platform and those contributing to it. Developers are
-(along with end users) the "customers" of the platform that the Contributors
-create. As such, we talk about Developers a lot, though this isn't technically
-a separate role in the AOSP <i>per se.</i></p>
-<p/>
-
-<h2>Verifier</h2>
-<p>"Verifiers" are responsible for testing change requests. After individuals
-have submitted a significant amount of high-quality code to the project, the
-Project Leads might invite them to become Verifiers.</p><p><i>Note: at this
-time, generally Verifiers are the same as Approvers.</i></p>
-<p/>
-
-<h2>Approver</h2>
-"Approvers" are experienced members of the project who have demonstrated their
-design skills and have made significant technical contributions to the
-project. In the code-review process, an Approver decides whether to include or
-exclude a change. Project Leads (who are typically employed by Google) choose
-the Approvers, sometimes promoting to this position Verifiers who have
-demonstrated their expertise within a specific project.</p>
-<p/>
-
-<h2>Project Leads</h2>
-<p>Android consists of a number of sub-projects; you can see these in the git
-repository, as individual .git files. Tech Leads are senior Contributors who
-oversee the engineering for individual Android projects. Typically these tech
-leads will be Google employees.  A Project Lead for an individual project is
-responsible for the following:</p>
-<ul>
-  <li>Lead all technical aspects of the project; for example, the project
-  roadmap, development, release cycles, versioning, and QA.</li>
-  <li>Ensure that the project is QA-ed in time for scheduled Android platform
-  releases.</li>
-  <li>Designate Verifiers and Approvers for submitted patches.</li>
-  <li>Be fair and unbiased while reviewing changes. Accept or reject patches
-  based on technical merit and alignment with the Android strategy.</li>
-  <li>Review changes in a timely manner and make best efforts to communicate
-  when changes are not accepted.</li>
-  <li>Optionally maintain a web site for the project for information and
-  documents specific to the project.</li>
-  <li>Act as a facilitator in resolving technical conflicts.</li>
-  <li>Be a public face for the project and the go-to person for questions
-  related to the project.</li>
-</ul>
diff --git a/pdk/docs/source/source_toc.cs b/pdk/docs/source/source_toc.cs
deleted file mode 100644
index 09c20a6..0000000
--- a/pdk/docs/source/source_toc.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-<script type="text/javascript" language="JavaScript">
-<!--
-function nothing() {}
--->
-</script>
-
-<ul>
-  <li><h2>The Project</h2><ul>
-    <li><a href="<?cs var:toroot ?>source/roles.html">People and Roles</a></li>
-    <li><a href="<?cs var:toroot ?>source/licenses.html">Licensing Information</a></li>
-    <li><a href="http://android.git.kernel.org/">Browse Source</a> <span style="font-size: 75%; font-variant: small-caps">[off-site]</span></li>
-    <li><a href="<?cs var:toroot ?>source/overview.html">Platform Overview</a></li>
-    <li><a href="<?cs var:toroot ?>source/life-of-a-bug.html">Life of a Bug</a></li>
-    <li><a href="<?cs var:toroot ?>faqs.html#aosp">FAQs</a></li>
-  </ul>
-
-  <li><h2>Getting Started</h2><ul>
-    <li><a href="<?cs var:toroot ?>source/download.html">Getting the Source</a></li>
-    <li><a href="<?cs var:toroot ?>source/git-repo.html">Using git and repo</a></li>
-    <li><a href="<?cs var:toroot ?>source/using-eclipse.html">Using Eclipse</a></li>
-    <li><a href="<?cs var:toroot ?>source/code-style.html">Code Style</a></li>
-    <li><a href="<?cs var:toroot ?>source/building-dream.html">Building for an ADP</a></li>
-  </ul>
-
-  <li><h2>Contributing</h2><ul>
-    <li><a href="<?cs var:toroot ?>source/life-of-a-patch.html">Life of a Patch</a></li>
-    <li><a href="<?cs var:toroot ?>source/submit-patches.html">Submitting Patches</a></li>
-    <li><a href="<?cs var:toroot ?>source/report-bugs.html">Reporting Bugs</a></li>
-    <li><a href="<?cs var:toroot ?>source/code-lines.html">Branches &amp; Releases</a></li>
-  </ul>
-</ul>
-
-<script type="text/javascript">
-<!--
-    buildToggleLists();
-//-->
-</script>
-
diff --git a/pdk/docs/source/submit-patches.jd b/pdk/docs/source/submit-patches.jd
deleted file mode 100644
index 9e7d9df..0000000
--- a/pdk/docs/source/submit-patches.jd
+++ /dev/null
@@ -1,172 +0,0 @@
-page.title=Android Contributors' Workflow
-doc.type=source
-@jd:body
-<div>
-<br>This page describes how to record changes to the Android files on your local client, upload those changes to the code-review server, and use Gerrit to track changes.<br><h2>
-Prerequisites</h2>
-Before you follow the instructions on this page, you will need to set up your
-local working environment and get the Android source files. For instructions,
-see <a href="{@docRoot}source/download.html">Get source</a>
-.<br><br>Other recommended reading:<br><ul><li>For an overview of the code
-contribution and review process, see <a
-href="{@docRoot}source/life-of-a-patch.html">Life of a Patch</a>.</li>
-<li>For details about Repo, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>.<br></li>
-<li>For information about the different roles you can play within the Android
-Open Source community, see <a href="{@docRoot}source/roles.html">Project roles</a>.</li>
-<li>If you plan to contribute code to the Android platform, be sure to read
-the <a href="{@docRoot}source/licenses.html">AOSP's licensing information</a>.</li>
-<li>Note that changes to some of the upstream projects used by Android should be
-made directly to that project, as described in
-<a href="#upstream-projects">Upstream Projects</a>.
-</ul>
-<h2>
-Working with the code</h2>
-First, download the source into your working directory, as described in <a
-href="{@docRoot}source/download.html">Get source</a>
-. For information about how to choose which branch to use, see <a
-href="{@docRoot}source/code-lines.html">Android Code-Lines</a>.<br><br>To work on a particular change to the code, follow these steps:<br>
-<div><img src="{@docRoot}images/submit-patches-0.png">
-</div>
-<ol><li>Use repo start <i>branchname</i>
-to start a new topic branch.</li>
-<li>Edit the files.<br></li>
-<li><span>Use git add to stage changes.</span>
-<span>(Sometimes optional.)</span>
-<br></li>
-<li>Use repo status and git diff to view the status of your files.<i><br></i>
-</li>
-<li>Use git commit to commit changes.<br></li>
-<li><span>Use repo upload to upload changes to the review server</span>
-.<br></li>
-</ol>
-You can track your uploaded changes using the Gerrit code-review tool. When it's time to work on the code again, run repo sync, then go back to step 1 above and start another topic branch.<br><br>The steps will not always come in the order shown--for example, you might run git diff at several points in the process.<br><br><h3>
-Starting a topic branch</h3>
-Start a topic branch called default in your local work environment:<br><br>$ repo start default <br><br>For more about topic branches, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>.<br><h3>
-Editing the files</h3>
-You do not need to check files out before working on them. Edit the files using vim, emacs, or any other editor.<br><br><h3>
-Staging changes</h3>
-To indicate that every new and modified file in your working directory should be "staged" for inclusion in the next commit, run git add without any arguments. You can also specify files or filetypes. For example, the following command would stage all the new and modified files under the bionic directory and its subdirectories:<br><br>$ git add bionic/*<br><br>Run git help add to see more ways to use git add.<br><br><b>When is git add optional?<br></b>
-<br>If you add new files, you must stage them using git add before you run git commit. However, if you are only modifying or deleting files, you can skip git add if you use the -a option with git commit. For more details, see the "Committing changes" section further down.<br><br><h3>
-Using repo status <br></h3>
-To see the status of the current branch, run <br><br>$ repo status .<br><br>For information about how to interpret the results of repo status, see <a href="{@docRoot}source/git-repo.html#TOC-status">Using Repo and Git</a>.<br><br><h3>
-Using git diff</h3>
-To see uncommitted changes, cd into the project directory and run <br><br>$ git
-diff <br><br>Without any arguments, git diff will show you the differences
-between the files in your working directory and the committed
-files.<br><div><br><div><img src="{@docRoot}images/submit-patches-1.png">
-</div>
-<br></div>
-<div>If you add the --cached option, git diff will show you the differences between the files in your working directory and the staged files.<br><br></div>
-To see every edit that would go into the commit if you were to commit right now, make sure you are in the project directory and then run <br><br>$ git diff --cached <br><br><h3>
-Committing changes</h3>
-At intervals while you are working, commit your edits by using git commit from within the project directory:<br><span>$ cd ~/mydroid/<i>project-name</i>
-</span>
-<span><br>$ git commit</span>
-<br><br>Every file that you staged using git add will be included in this commit.<br><br>If you have not added any new files that you want to commit, you can skip git add and simply run <br><br>$ git commit -a <br><br>The -a option will stage all the files you have modified or deleted and include them in this commit. (If you have added new files and want them included in the commit, you will need to use git add before you run git commit.)<br><br>If commit <span></span>
-does not find changes to be committed, it will report "nothing to commit (working directory clean)". If commit finds changes to be committed, a file will open in which you can create a log message:<br><br><div><i>Your comments about this commit go here....</i>
-<br># Please enter the commit message for your changes. Lines starting <br># with '#' will be ignored, and an empty message aborts the commit.<br># On branch master <br># Changes to be committed:<br>#(use "git reset HEADfile..." to unstage)<br>#<br>#new file:.repo/projects/gerrit-manifests.git/FETCH_HEAD <br>#new file:.repo/projects/gerrit-manifests.git/HEAD <br>#new file:.repo/projects/gerrit-manifests.git/config <br>.<br>.<br>.<br></div>
-<br>If you do not add a log message, the commit will be aborted. Add a message and save the file.<br><br><h3>
-Committing changes during code review</h3>
-If you previously uploaded a change to Gerrit and the Approver has asked for changes, follow these steps:<br><ol><li>Edit the files to make the changes the Approver has requested.</li>
-<li>Recommit your edits using the --amend flag, for example:<br><span>$ git commit -a --amend</span>
-<br></li>
-<li>See below to upload the changes to Gerrit again for another review cycle.</li>
-</ol>
-<h3>
-Editing uploaded changes</h3>
-To update an existing change with a new patch set:<br><ol><li>Make sure the updated branch is the currently checked out branch.</li>
-<li>Use repo upload --replace <i>proj1</i>
-to open the change matching editor.</li>
-<li>For each commit in the series, enter the Gerrit change Id inside the brackets.</li>
-</ol>
-For more details, see <a href="{@docRoot}source/git-repo.html#TOC-upload">Using Repo and Git</a>
-.<br><h3>
-Uploading changes to Gerrit</h3>
-To upload your committed changes to the review server:<br><ol><li>Complete the appropriate <a href="https://review.source.android.com/#settings,new-agreement">Contributor Agreement</a>
-in Gerrit, granting the Android Open Source Project permission to distribute your changes to others.</li>
-<li>Select an <a href="https://review.source.android.com/#settings,ssh-keys">SSH Username</a>
-and upload your <a href="https://review.source.android.com/#settings,ssh-keys">public SSH key</a>
-, so that Gerrit can identify you when you upload changes.Please note that due to a bug in repo, repo upload requires your SSH Username be the local part of your email address (the text on the left of the @ sign).<br><br>These first two steps are only necessary prior to your first change.Gerrit will remember your agreement and SSH key for subsequent changes.<br><br></li>
-<li>Update to the latest revisions:<span><br></span>
-<span>$</span>
-<span>repo sync</span>
-<br><br>For information about how to handle sync conflicts and how Repo synchronization works, see <a href="{@docRoot}source/git-repo.html#TOC-sync">Using Repo and Git</a>
-.<br><br></li>
-<li>Run repo upload to examine the list of all available changes and select which topic branches will be uploaded to the review server:<br><span>$</span>
-<span>repo upload</span>
-<br><br>This will open an editor window that will let you choose which topic branch to upload.If there is only one branch available, a simple y/n prompt is instead of an editor.<br></li>
-</ol>
-After a change is uploaded successfully:<br><ul><li>Repo will give you a URL where you can view your submission.</li>
-<li>The code-review system will automatically notify the project owner about your submission.</li>
-</ul>
-For information about specifying particular projects with repo sync and repo upload, see <a href="{@docRoot}source/git-repo.html">Using Repo and Git</a>
-.<br><br><h3>
-Summary example <br></h3>
-Here is a simple example that shows how you might work with the bionic/Android.mk file:<br><br>$ cd ~/mydroid/bionic <br>$ repo start default <br>$ vi Android.mk <br><i>...edit and save the file...</i>
-<br>$ git commit -a <br>$ repo sync <br>$ repo upload <br><i>...close the editable window that opens...</i>
-<br><i>...visit the provided URL to open Gerrit and track your change...</i>
-<br><br><h3>
-Downloading changes from Gerrit</h3>
-To download a specific change from Gerrit, run <br><br>$ repo download <i>target change</i>
-<br><br>where target is the local directory into which the change should be downloaded andchange is the change number as listed in <a href="https://review.source.android.com/">Gerrit</a>
-. For more information, see <a href="{@docRoot}source/git-repo.html#TOC-download">Using Repo and Git</a>
-.<br><br><h2>
-Using the Gerrit code-review tool <br></h2>
-You can open Gerrit by visiting whatever URL is returned to you from the repo upload command, or by visiting <a href="https://review.source.android.com/">https://review.source.android.com</a>.<br><br><h3>
-Viewing the status of uploaded changes <br></h3>
-To check the status of a change that you uploaded, open <a href="https://review.source.android.com/mine">Gerrit</a>
-, sign in, and click MyChanges.<br><b><br></b>
-<h3>
-Reviewing a change <br></h3>
-If you are assigned to be the Approver for a change, you need to determine the following:<br><ul><li>Does this change fit within this project's stated purpose?<br></li>
-<li>Is this change valid within the project's existing architecture?</li>
-<li>Does this change introduce design flaws that will cause problems in the future?</li>
-<li>Does this change following the best practices that have been established for this project?</li>
-<li>Is this change a good way to perform the described function?</li>
-<li>Does this change introduce any security or instability risks?</li>
-</ul>
-If you approve of the change, you will then mark it with LGTM ("Looks Good to Me") within Gerrit.<br><br><h3>
-Verifying a change <br></h3>
-If you are assigned to be the Verifier for a change, you need to do the following:<br><ul><li>Patch the change into your local client using one of the Download commands.</li>
-<li>Build and test the change.</li>
-<li>Within Gerrit use Publish Comments to mark the commit as "Verified", or "Fails" (and add a message explaining what problems were identified).<br></li>
-</ul>
-<h3>
-Viewing diffs and comments</h3>
-To open the details of the change within Gerrit, click on the "Id number" or "Subject" of a change. To compare the established code with the updated code, click the file name under "Side-by-side diffs."<br>
-<h3>
-Adding comments</h3>
-Anyone in the community can use Gerrit to add inline comments to code submissions. A good comment will be relevant to the line or section of code to which it is attached in Gerrit. It might be a short and constructive suggestion about how a line of code could be improved, or it might be an explanation from the author about why the code makes sense the way it is.<br><br>To add an inline comment, double-click the relevant line of the code and write your comment in the text box that opens. When you click Save, only you can see your comment.<br><br>To publish your comments so that others using Gerrit will be able to see them, click the Publish Comments button. Your comments will be emailed to all relevant parties for this change, including the change owner, the patch set uploader (if different from the owner), and all current reviewers.<br><br><h3>
-After a submission is approved</h3>
-After a submission makes it through the review and verification process, Gerrit automatically merges the change into the public repository. The change will now be visible in gitweb, and others users will be able to run repo sync to pull the update into their local client.<br><br><h3>
-How do I become a Verifier or Approver?</h3>
-In short, contribute high-quality code to one or more of the Android projects.
-For details about the different roles in the Android Open Source community and
-who plays them, see <a href="{@docRoot}source/roles.html">Project roles</a>
-.<br><br><h2>
-Using GitWeb to track patch histories</h2>
-To view snapshots of the files that are in the public Android repositories and view file histories, use the <a href="http://android.git.kernel.org/">Android instance of GitWeb</a>
-.<br>
-<h2><a name="upstream-projects"></a>Upstream Projects</h2>
-Android makes use of a number of other open-source projects, such as the Linux
-kernel and WebKit, as described in
-<a href="{@docRoot}source/code-lines.html">Branches &amp Releases</a>. For the
-upstream projects detailed below, changes should be made directly upstream. Such
-changes will be incorporated into the Android tree as part of the usual process
-of pulling these projects.
-<h3>WebKit</h3>
-All changes to the WebKit project at <code>external/webkit</code> should be made
-upstream at <a href="http://www.webkit.org">http://www.webkit.org</a>. The
-process begins by filing a WebKit bug. This bug should use <code>Android</code>
-for the <code>Platform</code> and <code>OS</code> fields only if the bug is
-specific to Android. Bugs are far more likely to receive the reviewers'
-attention once a proposed fix is added and tests are included. See
-<a href="http://webkit.org/coding/contributing.html">Contributing Code to
-WebKit</a> for details.
-<h3>V8</h3>
-All changes to the V8 project at <code>external/v8</code> should be submitted
-upstream at
-<a href="http://code.google.com/p/v8">http://code.google.com/p/v8</a>. See
-<a href="http://code.google.com/p/v8/wiki/Contributing">Contributing to V8</a>
-for details.
-</div>
diff --git a/pdk/docs/source/using-eclipse.jd b/pdk/docs/source/using-eclipse.jd
deleted file mode 100644
index 660de11..0000000
--- a/pdk/docs/source/using-eclipse.jd
+++ /dev/null
@@ -1,153 +0,0 @@
-page.title=Using Eclipse
-doc.type=source
-@jd:body
-<div>
-<p>This document will help you set up the Eclipse IDE for Android platform development.</p>
-<p><i>Note: if you are looking for information on how to use
-Eclipse to develop applications that run on Android, this is not the right
-page for you. You probably would find <a
-href="http://developer.android.com/sdk/eclipse-adt.html">the Eclipse page on
-developer.android.com</a> more useful.</i></p>
-<h2><a>Enter eclipse</a>
-</h2>
-<h4>
-Basic setup
-</h4>
-<p>First, it's important to make sure the regular Android development system is set up.
-</p>
-<pre>cd /path/to/android/root <br>make     # and wait a while, if you haven't done this <br></pre>
-<p><b>Important</b>
-: You will still be using "make" to build the files you will actually run (in the emulator or on a device). You will be using Eclipse to edit files and verify that they compile, but when you want to run something you will need to make sure files are saved in Eclipse and run "make" in a shell. The Eclipse build is just for error checking.
-</p>
-<p>Eclipse needs a list of directories to search for Java files. This is called the "Java Build Path" and can be set with the .classpath file. We have a sample version to start you off.
-</p>
-<pre>cd /path/to/android/root <br>cp development/ide/eclipse/.classpath .<br>chmod u+w .classpath  # Make the copy writable <br></pre>
-<p>Now edit that copy of .classpath, if necessary.
-</p>
-<h5>
-Increase Eclipse's Memory Settings
-</h5>
-<p>The Android project is large enough that Eclipse's Java VM sometimes runs out of memory while compiling it. Avoid this problem by editing the the eclipse.ini file. On Apple OSX the eclipse.ini file is located at /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini
-</p>
-<p>Memory-related defaults (as of Eclipse 3.4)
-</p>
-
-<pre>-Xms40m <br>-Xmx256m <br>-XX:MaxPermSize=256m <br></pre>
-<p>Recommended settings for Android development
-</p>
-<pre>-Xms128m <br>-Xmx512m <br>-XX:MaxPermSize=256m <br></pre>
-<p>These settings set Eclipse's minimum Java heap size to 128MB, set the maximum Java heap size to 512MB, and keep the maximum permanent generation size at the default of 256MB.
-</p>
-<p>Now start Eclipse:
-</p>
-<pre>eclipse  # or you can click some clicky thing instead, if you prefer <br></pre>
-<p>Now create a project for Android development:
-</p>
-<ol><li>If Eclipse asks you for a workspace location, choose the default.
-</li>
-<li>If you have a "Welcome" screen, close it to reveal the Java perspective.
-</li>
-<li>File New Java Project
-</li>
-<li>Pick a project name, "android" or anything you like.
-</li>
-<li>Select "Create project from existing source", enter the path to your Android root directory, and click Finish.
-</li>
-<li>Wait while it sets up the project. (You'll see a subtle progress meter in the lower right corner.)
-</li>
-</ol>
-<p>Once the project workspace is created, Eclipse should start building. In theory, it should build with no errors and you should be set to go. If necessary, uncheck and re-check Project Build Automatically to force a rebuild.
-</p>
-<p><i><b>Note:</b>
-</i>
-Eclipse sometimes likes to add an "import android.R" statement at the top of your files that use resources, especially when you ask eclipse to sort or otherwise manage imports. This will cause your make to break. Look out for these erroneous import statements and delete them.
-</p>
-<h4>
-When you sync
-</h4>
-<p>Every time you repo sync, or otherwise change files outside of Eclipse (especially the .classpath), you need to refresh Eclipse's view of things:
-</p>
-<ol><li>Window Show View Navigator
-</li>
-<li>In the "Navigator", right-click on the project ("android-java" or whatever you named it)
-</li>
-<li>Click Refresh in the context menu
-</li>
-</ol>
-<h4>
-Adding apps to the build path
-</h4>
-<p>The default .classpath includes the source to the core system and a sample set of apps, but might not include the particular app you may want to work on. To add an app, you must add the app's source directory. To do this inside Eclipse:
-</p>
-<ol><li>Project Properties
-</li>
-<li>Select "Java Build Path" from the left-hand menu.
-</li>
-<li>Choose the "Source" tab.
-</li>
-<li>Click "Add Folder...".
-</li>
-<li>Add your app's "src" directory.
-</li>
-<li>Click OK.
-</li>
-</ol>
-<p>When you're done, the "source folder" path in the list should look like android/packages/apps/<i>YourAppName</i>
-/src. Depending on which app(s) you include, you may also need to include othersrc/main/java directories under android/dalvik/libcore. Do this if you find you cannot build with the default set.
-</p>
-<h2><a>Eclipse formatting</a>
-</h2>
-<p>You can import files in development/ide/eclipse to make Eclipse
-follow the Android style rules.  Select
-"Window &rsaquo; Preferences &rsaquo; Java &rsaquo; Code Style".
-Use "Formatter &rsaquo; Import" to import android-formatting.xml
-and "Organize Imports &rsaquo; Import" to import android.importorder.
-</p>
-<h2><a>Debugging the emulator with Eclipse</a>
-</h2>
-<p>You can also use eclipse to debug the emulator and step through code. First, start the emulator running:
-</p>
-<pre>cd /path/to/android/root <br>. build/envsetup.sh <br>lunch 1   # to build the emulator <br>make      # if you didn't already do this <br>emulator  # you should see a GUI picture of a phone <br></pre>
-<p>In another shell, start DDMS (the Dalvik debug manager):
-</p>
-<pre>cd /path/to/android/root <br>ddms      # you should get a splufty debugging console <br></pre>
-<p>Now, in eclipse, you can attach to the emulator:
-</p>
-<ol><li>Run Open Debug Dialog...
-</li>
-<li>Right-click "Remote Java Application", select "New".
-</li>
-<li>Pick a name, "android-debug" or anything you like.
-</li>
-<li>Set the "Project" to your project ("android-java" or whatever).
-</li>
-<li>Keep the "Host" set to "localhost", but change "Port" to 8700.
-</li>
-<li>Click the "Debug" button and you should be all set.
-</li>
-</ol>
-<p>Note that port 8700 is attached to whatever process is currently selected in the DDMS console, so you need to sure that DDMS has selected the process you want to debug.
-</p>
-<p>You may need to open the Debug perspective (next to the "Java" perspective icon in the upper-right, click the small "Open Perspective" icon and select "Debug"). Once you do, you should see a list of threads; if you select one and break it (by clicking the "pause" icon), it should show the stack trace, source file, and line where execution is at. Breakpoints and whatnot should all work.
-</p>
-<h2><a>Bonus material</a>
-</h2>
-<p>Replace Ctrl with the Apple key on Mac.
-</p>
-
-<pre>Ctrl-Shift-o = Organize imports <br>Ctrl-Shift-t = load class by name <br>Ctrl-Shift-r = load non-class resource by name <br>Ctrl-1 = quick fix <br>Ctrl-e = Recently viewed files <br>Ctrl-space = auto complete <br>Shift-Alt-r = refactor:rename <br>Shift-Alt-v = refactor:move <br></pre>
-
-<h2><a>"Eclipse is not working correctly, what should I do?"</a>
-</h2>
-<p>Make sure:
-</p>
-<ul><li>You followed the instructions on this page precisely.
-</li>
-<li>Your Problems view doesn't show any errors.
-</li>
-<li>Your application respects the package/directory structure.
-</li>
-</ul>
-<p>If you're still having problems, please contact one of the Android mailing lists or IRC channels.
-</p>
-</div>
diff --git a/pdk/doxygen_config/docsfiles/groups.dox b/pdk/doxygen_config/docsfiles/groups.dox
deleted file mode 100644
index 79f9d3f..0000000
--- a/pdk/doxygen_config/docsfiles/groups.dox
+++ /dev/null
@@ -1,3 +0,0 @@
-

-/*!

-*/

diff --git a/pdk/doxygen_config/docsfiles/main.dox b/pdk/doxygen_config/docsfiles/main.dox
deleted file mode 100644
index 069c1a2..0000000
--- a/pdk/doxygen_config/docsfiles/main.dox
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! \mainpage Google Client Location Library (CLL): location Interface

- *  <p>This documentation is part of Google's Client Location Library (CLL) Getting Started Guide.</p>

- *  <p>In most cases, this Doxygen-generated content opens in a new window (or tab), so look for this window's parent to return to the Getting Started guide. If you maintained 

- *  the original directory structure when you unzipped the documentation, you may also return to the Getting Started guide by clicking <a href="../cll_getting_started.html">Client Location Library (CLL) Getting Started Guide</a>.</p>

- */
\ No newline at end of file
diff --git a/pdk/doxygen_config/footer.html b/pdk/doxygen_config/footer.html
deleted file mode 100644
index 691287b..0000000
--- a/pdk/doxygen_config/footer.html
+++ /dev/null
@@ -1,2 +0,0 @@
-</body>
-</html>
\ No newline at end of file
diff --git a/pdk/doxygen_config/header.html b/pdk/doxygen_config/header.html
deleted file mode 100644
index 794041a..0000000
--- a/pdk/doxygen_config/header.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-<title>Doxygen-Generated Content</title>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<style type="text/css">
-<!--
-.tabs {
-	display: none;
-}
--->
-</style>
-</head>
-<body>
diff --git a/pdk/doxygen_config/overrideconfig.conf b/pdk/doxygen_config/overrideconfig.conf
deleted file mode 100644
index f1e3819..0000000
--- a/pdk/doxygen_config/overrideconfig.conf
+++ /dev/null
@@ -1,50 +0,0 @@
-

-#---------------------------------------------------------------------------

-# Project related configuration options

-#---------------------------------------------------------------------------

-DOXYFILE_ENCODING      = UTF-8

-PROJECT_NAME           = pdk

-PROJECT_NUMBER         = 

-

-INPUT                  = sources \

-                         docsfiles

-

-OUTPUT_DIRECTORY       = generatedDocs

-HTML_HEADER            = header.html

-HTML_FOOTER            = footer.html

-# FILL IN PATH TO HEADER BLOB WANTED IN EVERY FILE

-# RELATIVE PATH TO WHER ERUNNING DOXYGEN FROM

-HTML_STYLESHEET        =

-# PATH TO STYLE SHEET\

-

-BRIEF_MEMBER_DESC      = YES 

-REPEAT_BRIEF           = YES

-

-OPTIMIZE_OUTPUT_FOR_C  = YES

-

-ALWAYS_DETAILED_SEC    = YES

-INLINE_INHERITED_MEMB  = NO

-FULL_PATH_NAMES        = NO

-STRIP_FROM_PATH        = 

-STRIP_FROM_INC_PATH    = 

-SHORT_NAMES            = NO

-JAVADOC_AUTOBRIEF      = YES

-QT_AUTOBRIEF           = NO

-MULTILINE_CPP_IS_BRIEF = NO

-DETAILS_AT_TOP         = NO

-INHERIT_DOCS           = YES

-SEPARATE_MEMBER_PAGES  = NO

-

-QUIET                  = NO

-WARNINGS               = YES

-

-

-

-SOURCE_BROWSER         = YES

-

-GENERATE_HTML          = YES

-ENABLE_PREPROCESSING   = NO

-

-# ADDED JULY 08 TO TRY TO FIGURE OUT DOCUMENING C FILES

-EXTRACT_ALL            = YES

-STRIP_CODE_COMMENTS    = NO 
diff --git a/pdk/doxygen_config/pdk_config.conf b/pdk/doxygen_config/pdk_config.conf
deleted file mode 100644
index 1f1f349..0000000
--- a/pdk/doxygen_config/pdk_config.conf
+++ /dev/null
@@ -1,273 +0,0 @@
-# Doxyfile 1.5.6

-

-#---------------------------------------------------------------------------

-# Project related configuration options

-#---------------------------------------------------------------------------

-DOXYFILE_ENCODING      = UTF-8

-PROJECT_NAME           = pdk

-PROJECT_NUMBER         = 

-OUTPUT_DIRECTORY       = 

-CREATE_SUBDIRS         = NO

-OUTPUT_LANGUAGE        = English

-BRIEF_MEMBER_DESC      = YES 

-REPEAT_BRIEF           = YES

-ABBREVIATE_BRIEF       = "The $name class" \

-                         "The $name widget" \

-                         "The $name file" \

-                         is \

-                         provides \

-                         specifies \

-                         contains \

-                         represents \

-                         a \

-                         an \

-                         the

-ALWAYS_DETAILED_SEC    = YES

-INLINE_INHERITED_MEMB  = NO

-FULL_PATH_NAMES        = NO

-STRIP_FROM_PATH        = 

-STRIP_FROM_INC_PATH    = 

-SHORT_NAMES            = NO

-JAVADOC_AUTOBRIEF      = YES

-QT_AUTOBRIEF           = NO

-MULTILINE_CPP_IS_BRIEF = NO

-DETAILS_AT_TOP         = NO

-INHERIT_DOCS           = YES

-SEPARATE_MEMBER_PAGES  = NO

-TAB_SIZE               = 8

-ALIASES                = 

-OPTIMIZE_OUTPUT_FOR_C  = NO

-OPTIMIZE_OUTPUT_JAVA   = NO

-OPTIMIZE_FOR_FORTRAN   = NO

-OPTIMIZE_OUTPUT_VHDL   = NO

-BUILTIN_STL_SUPPORT    = NO

-CPP_CLI_SUPPORT        = NO

-SIP_SUPPORT            = NO

-IDL_PROPERTY_SUPPORT   = YES

-DISTRIBUTE_GROUP_DOC   = NO

-SUBGROUPING            = YES

-TYPEDEF_HIDES_STRUCT   = NO

-#---------------------------------------------------------------------------

-# Build related configuration options

-#---------------------------------------------------------------------------

-EXTRACT_ALL            = YES

-EXTRACT_PRIVATE        = NO

-EXTRACT_STATIC         = NO

-EXTRACT_LOCAL_CLASSES  = NO

-EXTRACT_LOCAL_METHODS  = NO

-EXTRACT_ANON_NSPACES   = YES

-HIDE_UNDOC_MEMBERS     = NO

-HIDE_UNDOC_CLASSES     = NO

-HIDE_FRIEND_COMPOUNDS  = NO

-HIDE_IN_BODY_DOCS      = NO

-INTERNAL_DOCS          = NO

-CASE_SENSE_NAMES       = YES

-HIDE_SCOPE_NAMES       = NO

-SHOW_INCLUDE_FILES     = NO

-# MIGHT WANT TO TWEAK LEATER

-INLINE_INFO            = YES

-SORT_MEMBER_DOCS       = YES

-SORT_BRIEF_DOCS        = YES

-SORT_GROUP_NAMES       = NO

-SORT_BY_SCOPE_NAME     = NO

-GENERATE_TODOLIST      = NO

-GENERATE_TESTLIST      = NO

-GENERATE_BUGLIST       = NO

-GENERATE_DEPRECATEDLIST= YES

-ENABLED_SECTIONS       = 

-MAX_INITIALIZER_LINES  = 30

-SHOW_USED_FILES        = NO

-SHOW_DIRECTORIES       = NO

-SHOW_FILES             = YES

-SHOW_NAMESPACES        = YES

-FILE_VERSION_FILTER    = 

-#---------------------------------------------------------------------------

-# configuration options related to warning and progress messages

-#---------------------------------------------------------------------------

-QUIET                  = NO

-WARNINGS               = YES

-WARN_IF_UNDOCUMENTED   = YES

-WARN_IF_DOC_ERROR      = YES

-WARN_NO_PARAMDOC       = NO

-WARN_FORMAT            = "$file:$line: $text"

-WARN_LOGFILE           = 

-#---------------------------------------------------------------------------

-# configuration options related to the input files

-#---------------------------------------------------------------------------

-INPUT                  = 

-INPUT_ENCODING         = UTF-8

-FILE_PATTERNS          = *.c \

-                	 *.cpp \

-                         *.dox \

-                         *.h \

-                         *.htm \

-                         *.html

-RECURSIVE              = YES

-EXCLUDE                = 

-# ecxlude entire directories or files

-EXCLUDE_SYMLINKS       = NO

-EXCLUDE_PATTERNS       = 

-EXCLUDE_SYMBOLS        = 

-EXAMPLE_PATH           = 

-EXAMPLE_PATTERNS       = *

-EXAMPLE_RECURSIVE      = NO

-IMAGE_PATH             = 

-INPUT_FILTER           = 

-FILTER_PATTERNS        = 

-FILTER_SOURCE_FILES    = NO

-#---------------------------------------------------------------------------

-# configuration options related to source browsing

-#---------------------------------------------------------------------------

-SOURCE_BROWSER         = YES

-INLINE_SOURCES         = NO

-STRIP_CODE_COMMENTS    = YES

-REFERENCED_BY_RELATION = NO

-REFERENCES_RELATION    = YES

-REFERENCES_LINK_SOURCE = NO

-USE_HTAGS              = NO

-VERBATIM_HEADERS       = NO

-#---------------------------------------------------------------------------

-# configuration options related to the alphabetical class index

-#---------------------------------------------------------------------------

-ALPHABETICAL_INDEX     = NO

-COLS_IN_ALPHA_INDEX    = 1

-IGNORE_PREFIX          = 

-#---------------------------------------------------------------------------

-# configuration options related to the HTML output

-#---------------------------------------------------------------------------

-GENERATE_HTML          = YES

-HTML_OUTPUT            = html

-HTML_FILE_EXTENSION    = .html

-HTML_HEADER            = 

-# FILL IN PATH TO HEADER BLOB WANTED IN EVERY FILE

-# RELATIVE PATH TO WHER ERUNNING DOXYGEN FROM

-HTML_FOOTER            = 

-HTML_STYLESHEET        =

-# PATH TO STYLE SHEET

-HTML_ALIGN_MEMBERS     = YES

-GENERATE_HTMLHELP      = NO

-GENERATE_DOCSET        = NO

-DOCSET_FEEDNAME        = "Doxygen generated docs"

-DOCSET_BUNDLE_ID       = org.doxygen.Project

-HTML_DYNAMIC_SECTIONS  = NO

-CHM_FILE               = 

-HHC_LOCATION           = 

-GENERATE_CHI           = NO

-CHM_INDEX_ENCODING     = 

-BINARY_TOC             = NO

-TOC_EXPAND             = NO

-DISABLE_INDEX          = NO

-ENUM_VALUES_PER_LINE   = 4

-GENERATE_TREEVIEW      = NONE

-TREEVIEW_WIDTH         = 250

-FORMULA_FONTSIZE       = 10

-#---------------------------------------------------------------------------

-# configuration options related to the LaTeX output

-#---------------------------------------------------------------------------

-GENERATE_LATEX         = NO

-LATEX_OUTPUT           = latex

-LATEX_CMD_NAME         = latex

-MAKEINDEX_CMD_NAME     = makeindex

-COMPACT_LATEX          = NO

-PAPER_TYPE             = a4wide

-EXTRA_PACKAGES         = 

-LATEX_HEADER           = 

-PDF_HYPERLINKS         = YES

-USE_PDFLATEX           = YES

-LATEX_BATCHMODE        = NO

-LATEX_HIDE_INDICES     = NO

-#---------------------------------------------------------------------------

-# configuration options related to the RTF output

-#---------------------------------------------------------------------------

-GENERATE_RTF           = NO

-RTF_OUTPUT             = rtf

-COMPACT_RTF            = NO

-RTF_HYPERLINKS         = NO

-RTF_STYLESHEET_FILE    = 

-RTF_EXTENSIONS_FILE    = 

-#---------------------------------------------------------------------------

-# configuration options related to the man page output

-#---------------------------------------------------------------------------

-GENERATE_MAN           = NO

-MAN_OUTPUT             = man

-MAN_EXTENSION          = .3

-MAN_LINKS              = NO

-#---------------------------------------------------------------------------

-# configuration options related to the XML output

-#---------------------------------------------------------------------------

-GENERATE_XML           = NO

-XML_OUTPUT             = xml

-XML_SCHEMA             = 

-XML_DTD                = 

-XML_PROGRAMLISTING     = YES

-#---------------------------------------------------------------------------

-# configuration options for the AutoGen Definitions output

-#---------------------------------------------------------------------------

-GENERATE_AUTOGEN_DEF   = NO

-#---------------------------------------------------------------------------

-# configuration options related to the Perl module output

-#---------------------------------------------------------------------------

-GENERATE_PERLMOD       = NO

-PERLMOD_LATEX          = NO

-PERLMOD_PRETTY         = YES

-PERLMOD_MAKEVAR_PREFIX = 

-#---------------------------------------------------------------------------

-# Configuration options related to the preprocessor   

-#---------------------------------------------------------------------------

-ENABLE_PREPROCESSING   = NO

-# KEY CONSIDERATION TWEAK BACK AND FORTH. function in an # if/def preprocessor directive. Processor evalutes whether true. Should doxygen follow compiles behavior or document everything?

-# usually have optional things that people may want to tweak. 

-MACRO_EXPANSION        = YES

-EXPAND_ONLY_PREDEF     = YES

-SEARCH_INCLUDES        = NO

-INCLUDE_PATH           = 

-INCLUDE_FILE_PATTERNS  = 

-PREDEFINED             = 

-#to mimic preprocessor behaviors.

-EXPAND_AS_DEFINED      = 

-SKIP_FUNCTION_MACROS   = YES

-#---------------------------------------------------------------------------

-# Configuration::additions related to external references   

-#---------------------------------------------------------------------------

-TAGFILES               = 

-GENERATE_TAGFILE       = 

-ALLEXTERNALS           = NO

-EXTERNAL_GROUPS        = NO

-PERL_PATH              = 

-#---------------------------------------------------------------------------

-# Configuration options related to the dot tool   

-#---------------------------------------------------------------------------

-CLASS_DIAGRAMS         = NO

-#CHANGE WHEN HAVE DIAGRAMS

-MSCGEN_PATH            = YES

-HIDE_UNDOC_RELATIONS   = YES

-HAVE_DOT               = NO

-DOT_FONTNAME           = FreeSans

-DOT_FONTPATH           = 

-CLASS_GRAPH            = YES

-COLLABORATION_GRAPH    = YES

-GROUP_GRAPHS           = YES

-UML_LOOK               = NO

-TEMPLATE_RELATIONS     = NO

-INCLUDE_GRAPH          = YES

-INCLUDED_BY_GRAPH      = YES

-CALL_GRAPH             = NO

-CALLER_GRAPH           = NO

-GRAPHICAL_HIERARCHY    = YES

-DIRECTORY_GRAPH        = YES

-DOT_IMAGE_FORMAT       = png

-DOT_PATH               = 

-DOTFILE_DIRS           = 

-DOT_GRAPH_MAX_NODES    = 50

-MAX_DOT_GRAPH_DEPTH    = 1000

-DOT_TRANSPARENT        = YES

-DOT_MULTI_TARGETS      = NO

-GENERATE_LEGEND        = YES

-DOT_CLEANUP            = YES

-#---------------------------------------------------------------------------

-# Configuration::additions related to the search engine   

-#---------------------------------------------------------------------------

-SEARCHENGINE           = NO

-@INCLUDE = overrideconfig.conf

-# relative to where running doxygen from

-# @INCLUDE = $(PROJECTCONF)
diff --git a/pdk/hosting/app.yaml b/pdk/hosting/app.yaml
deleted file mode 100644
index 6758539..0000000
--- a/pdk/hosting/app.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-application: pdk-docs
-version: 2
-runtime: python
-api_version: 1
-
-handlers:
-- url: /
-  static_files: online-pdk/index.html
-  upload: online-pdk/index.html
-
-- url: /(.*)
-  static_files: online-pdk/\1
-  upload: online-pdk/.*
diff --git a/pdk/hosting/edoxfix.sh b/pdk/hosting/edoxfix.sh
deleted file mode 100755
index f82e912..0000000
--- a/pdk/hosting/edoxfix.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-# $1 = output directory of generated docs: out/target/product/generic/obj/PACKAGING/pdkdocs_intermediates/generatedDocs/html
-# fix a bug in doxygen 1.5.6 and higher...
-# insert the line: '</div>\n' after line 25 in each generated source file: 
-echo \</div\> > $1/div.tmp
-for f in `find $1 -name '*-source.html' -print`
-do
-  head -n 25 $f > $f.head.tmp
-  let count=$(wc -l $f  | cut -d\  -f 1 )
-  count=$(($count-25))
-  tail -n $count $f > $f.tail.tmp
-  cat $f.head.tmp $1/div.tmp $f.tail.tmp > $f
-done
-rm $1/*.tmp
diff --git a/pdk/hosting/pdk.py b/pdk/hosting/pdk.py
deleted file mode 100644
index a1c7c07..0000000
--- a/pdk/hosting/pdk.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python2.5
-#
-# Copyright (C) 2008 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.
-#
-
-"""Serve static pages for the pdk on appengine
-"""
-
-import os
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp.util import run_wsgi_app
-
-
-class MainPage(webapp.RequestHandler):
-  def get(self):
-    self.redirect('online-pdk/guide/index.html')
-
-application = webapp.WSGIApplication([('/', MainPage)], debug=True)
-
-def main():
-  run_wsgi_app(application)
-
-if __name__ == "__main__":
-  main()
-  
-# Testing
-# You must install google appengine.  See: http://code.google.com/appengine/downloads.html
-# 
-# Here's the command to run the pdk-docs server locally:
-#   python <path_to_appengine_installation>/dev_appserver.py --address 0.0.0.0 \
-#     <path_to_cupcake_code>/android/out/target/common/docs
-    
-# To verify it is working you can access it with a browser loacally on port 8080:
-
-# http://localhost:8080/index.html
-
-
-# To upload this application:
-# /home/build/static/projects/apphosting/devtools/appcfg.py update pdk/
-# where the pdk directory contains: pdk.py, app.yaml, and the docs directory.
-# where the docs are made from the Pdk.mk file.
diff --git a/pdk/micro-httpd.py b/pdk/micro-httpd.py
deleted file mode 100644
index 96e4000..0000000
--- a/pdk/micro-httpd.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# 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.
-
-import SimpleHTTPServer, SocketServer, os
-PORT = int(os.environ.get('HTTP_PORT', 8080))
-Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
-httpd = SocketServer.TCPServer(("", PORT), Handler)
-httpd.serve_forever()
diff --git a/pdk/pndk/Android_PNDK_README.html b/pdk/pndk/Android_PNDK_README.html
deleted file mode 100644
index 40b7a72..0000000
--- a/pdk/pndk/Android_PNDK_README.html
+++ /dev/null
@@ -1,741 +0,0 @@
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-<base target="_top">
-
-<style type="text/css">
-  
-
-/* default css */
-
-table {
-  font-size: 1em;
-  line-height: inherit;
-}
-
-
-tr {
-  
-  text-align: left;
-  
-}
-
-
-div, address, ol, ul, li, option, select {
-  margin-top: 0px;
-  margin-bottom: 0px;
-}
-
-p {
-  margin: 0px;
-}
-
-body {
-  margin: 6px;
-  padding: 0px;
-  font-family: Verdana, sans-serif;
-  font-size: 10pt;
-  background-color: #ffffff;
-}
-
-
-img {
-  -moz-force-broken-image-icon: 1;
-}
-
-@media screen {
-  html.pageview {
-    background-color: #f3f3f3 !important;
-  }
-
-  
-
-  body {
-    min-height: 1100px;
-    
-    counter-reset: __goog_page__;
-  }
-  * html body {
-    height: 1100px;
-  }
-  .pageview body {
-    border-top: 1px solid #ccc;
-    border-left: 1px solid #ccc;
-    border-right: 2px solid #bbb;
-    border-bottom: 2px solid #bbb;
-    width: 648px !important;
-    margin: 15px auto 25px;
-    padding: 40px 50px;
-  }
-  /* IE6 */
-  * html {
-    overflow-y: scroll;
-  }
-  * html.pageview body {
-    overflow-x: auto;
-  }
-  /* Prevent repaint errors when scrolling in Safari. This "Star-7" css hack
-     targets Safari 3.1, but not WebKit nightlies and presumably Safari 4.
-     That's OK because this bug is fixed in WebKit nightlies/Safari 4 :-). */
-  html*#wys_frame::before {
-    content: '\A0';
-    position: fixed;
-    overflow: hidden;
-    width: 0;
-    height: 0;
-    top: 0;
-    left: 0;
-  }
-  
-  
-
-  
-    .writely-callout-data {
-      display: none;
-      *display: inline-block;
-      *width: 0;
-      *height: 0;
-      *overflow: hidden;
-    }
-    .writely-footnote-marker {
-      background-image: url('MISSING');
-      background-color: transparent;
-      background-repeat: no-repeat;
-      width: 7px;
-      overflow: hidden;
-      height: 16px;
-      vertical-align: top;
-
-      
-      -moz-user-select: none;
-    }
-    .editor .writely-footnote-marker {
-      cursor: move;
-    }
-    .writely-footnote-marker-highlight {
-      background-position: -15px 0;
-      -moz-user-select: text;
-    }
-    .writely-footnote-hide-selection ::-moz-selection, .writely-footnote-hide-selection::-moz-selection {
-      background: transparent;
-    }
-    .writely-footnote-hide-selection ::selection, .writely-footnote-hide-selection::selection {
-      background: transparent;
-    }
-    .writely-footnote-hide-selection {
-      cursor: move;
-    }
-
-    
-    .editor .writely-comment-yellow {
-      background-color: #FF9;
-      background-position: -240px 0;
-    }
-    .editor .writely-comment-yellow-hover {
-      background-color: #FF0;
-      background-position: -224px 0;
-    }
-    .editor .writely-comment-blue {
-      background-color: #C0D3FF;
-      background-position: -16px 0;
-    }
-    .editor .writely-comment-blue-hover {
-      background-color: #6292FE;
-      background-position: 0 0;
-    }
-    .editor .writely-comment-orange {
-      background-color: #FFDEAD;
-      background-position: -80px 0;
-    }
-    .editor .writely-comment-orange-hover {
-      background-color: #F90;
-      background-position: -64px 0;
-    }
-    .editor .writely-comment-green {
-      background-color: #99FBB3;
-      background-position: -48px 0;
-    }
-    .editor .writely-comment-green-hover {
-      background-color: #00F442;
-      background-position: -32px 0;
-    }
-    .editor .writely-comment-cyan {
-      background-color: #CFF;
-      background-position: -208px 0;
-    }
-    .editor .writely-comment-cyan-hover {
-      background-color: #0FF;
-      background-position: -192px 0;
-    }
-    .editor .writely-comment-purple {
-      background-color: #EBCCFF;
-      background-position: -144px 0;
-    }
-    .editor .writely-comment-purple-hover {
-      background-color: #90F;
-      background-position: -128px 0;
-    }
-    .editor .writely-comment-magenta {
-      background-color: #FCF;
-      background-position: -112px 0;
-    }
-    .editor .writely-comment-magenta-hover {
-      background-color: #F0F;
-      background-position: -96px 0;
-    }
-    .editor .writely-comment-red {
-      background-color: #FFCACA;
-      background-position: -176px 0;
-    }
-    .editor .writely-comment-red-hover {
-      background-color: #FF7A7A;
-      background-position: -160px 0;
-    }
-
-    .editor .writely-comment-marker {
-      background-image: url('MISSING');
-      background-color: transparent;
-      padding-right: 11px;
-      background-repeat: no-repeat;
-      width: 16px;
-      height: 16px;
-      -moz-user-select: none;
-    }
-
-    .editor .writely-comment-hidden {
-      padding: 0;
-      background: none;
-    }
-    .editor .writely-comment-marker-hidden {
-      background: none;
-      padding: 0;
-      width: 0;
-    }
-    .editor .writely-comment-none {
-      opacity: .2;
-      filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);
-      -moz-opacity: .2;
-    }
-    .editor .writely-comment-none-hover {
-      opacity: .2;
-      filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);
-      -moz-opacity: .2;
-    }
-  
-
-
-  
-  .br_fix br:not(:-moz-last-node):not(:-moz-first-node) {
-    
-    position:relative;
-    
-    left: -1ex
-    
-  }
-  
-  .br_fix br+br {
-    position: static !important
-  }
-}
-
-h6 { font-size: 8pt }
-h5 { font-size: 8pt }
-h4 { font-size: 10pt }
-h3 { font-size: 12pt }
-h2 { font-size: 14pt }
-h1 { font-size: 18pt }
-
-blockquote {padding: 10px; border: 1px #DDD dashed }
-
-a img {border: 0}
-
-.pb {
-  border-width: 0;
-  page-break-after: always;
-  /* We don't want this to be resizeable, so enforce a width and height
-     using !important */
-  height: 1px !important;
-  width: 100% !important;
-}
-
-.editor .pb {
-  border-top: 1px dashed #C0C0C0;
-  border-bottom: 1px dashed #C0C0C0;
-}
-
-div.google_header, div.google_footer {
-  position: relative;
-  margin-top: 1em;
-  margin-bottom: 1em;
-}
-
-
-/* Table of contents */
-.editor div.writely-toc {
-  background-color: #f3f3f3;
-  border: 1px solid #ccc;
-}
-.writely-toc > ol {
-  padding-left: 3em;
-  font-weight: bold;
-}
-ol.writely-toc-subheading {
-  padding-left: 1em;
-  font-weight: normal;
-}
-/* IE6 only */
-* html writely-toc ol {
-  list-style-position: inside;
-}
-.writely-toc-none {
-  list-style-type: none;
-}
-.writely-toc-decimal {
-  list-style-type: decimal;
-}
-.writely-toc-upper-alpha {
-  list-style-type: upper-alpha;
-}
-.writely-toc-lower-alpha {
-  list-style-type: lower-alpha;
-}
-.writely-toc-upper-roman {
-  list-style-type: upper-roman;
-}
-.writely-toc-lower-roman {
-  list-style-type: lower-roman;
-}
-.writely-toc-disc {
-  list-style-type: disc;
-}
-
-/* end default css */
-
-
-  /* default print css */
-  
-  @media print {
-    body {
-      padding: 0;
-      margin: 0;
-    }
-
-    div.google_header, div.google_footer {
-      display: block;
-      min-height: 0;
-      border: none;
-    }
-
-    div.google_header {
-      flow: static(header);
-    }
-
-    /* used to insert page numbers */
-    div.google_header::before, div.google_footer::before {
-      position: absolute;
-      top: 0;
-    }
-
-    div.google_footer {
-      flow: static(footer);
-    }
-
-    /* always consider this element at the start of the doc */
-    div#google_footer {
-      flow: static(footer, start);
-    }
-
-    span.google_pagenumber {
-      content: counter(page);
-    }
-
-    span.google_pagecount {
-      content: counter(pages);
-    }
-
-
-    callout.google_footnote {
-      
-      display: prince-footnote;
-      footnote-style-position: inside;
-      /* These styles keep the footnote from taking on the style of the text
-         surrounding the footnote marker. They can be overridden in the
-         document CSS. */
-      color: #000;
-      font-family: Verdana;
-      font-size: 10.0pt;
-      font-weight: normal;
-    }
-
-    /* Table of contents */
-    #WritelyTableOfContents a::after {
-      content: leader('.') target-counter(attr(href), page);
-    }
-
-    #WritelyTableOfContents a {
-      text-decoration: none;
-      color: black;
-    }
-  }
-
-  @page {
-    @top {
-      content: flow(header);
-    }
-    @bottom {
-      content: flow(footer);
-    }
-    @footnotes {
-      border-top: solid black thin;
-      padding-top: 8pt;
-    }
-  }
-  /* end default print css */
-
-
-/* custom css */
-
-
-/* end custom css */
-
-
-
-  /* ui edited css */
-  
-  body {
-    font-family: Verdana;
-    
-    font-size: 10.0pt;
-    line-height: normal;
-    background-color: #ffffff;
-  }
-  /* end ui edited css */
-
-
-
-/* editor CSS */
-.editor a:visited {color: #551A8B}
-.editor table.zeroBorder {border: 1px dotted gray}
-.editor table.zeroBorder td {border: 1px dotted gray}
-.editor table.zeroBorder th {border: 1px dotted gray}
-
-
-.editor div.google_header, .editor div.google_footer {
-  border: 2px #DDDDDD dashed;
-  position: static;
-  width: 100%;
-  min-height: 2em;
-}
-
-.editor .misspell {background-color: yellow}
-
-.editor .writely-comment {
-  font-size: 9pt;
-  line-height: 1.4;
-  padding: 1px;
-  border: 1px dashed #C0C0C0
-}
-
-
-/* end editor CSS */
-
-</style>
-
-</head>
-
-<body onload="DoPageLoad();"
-    
-    revision="cfnx2f69_111dp3jzfgb:107">
-
-    
-    
-    
-<h1>
-  Using the Android Native Development Kit (NDK)
-</h1>
-version 1.3<br>
-<br>
-<h2>
-  Introduction
-</h2>
-The Android Native Development Kit enables developers to write shared libraries
-in C or C++ and call them from Java code. The native shared libraries can be
-packaged into apk files along with a normal Android application written in Java,
-so that the resulting Android application can be downloaded and installed on an
-Android phone.<br>
-<br>
-The Native Development Kit consists of:<br>
-<ul>
-  <li>
-    C/C++ headers for native APIs<br>
-  </li>
-  <li>
-    C/C++ libraries for native APIs<br>
-  </li>
-  <li>
-    Documentation
-  </li>
-  <li>
-    Sample Code
-  </li>
-</ul>
-<br>
-The Native Development Kit is designed to be used with the Android SDK:<br>
-<ul>
-  <li>
-    The NDK is used to create a shared library containing native code.
-  </li>
-  <li>
-    The SDK is used to create an Android application written in Java that calls
-    into the native code shared library.
-  </li>
-</ul>
-<h1>
-</h1>
-<h2>
-  Setting up your machine<br>
-</h2>
-The Native Development Kit may be installed on either Linux or OS X. Developing
-under Windows is not yet supported.<br>
-<div>
-  <h3>
-    Linux Installation
-  </h3>
-  The
-  Android&nbsp;build&nbsp;is&nbsp;routinely&nbsp;tested&nbsp;on&nbsp;recent&nbsp;versions&nbsp;of&nbsp;Ubuntu&nbsp;(6.06&nbsp;and&nbsp;later),&nbsp;but
-  may work on other distributions as well.<br>
-  <h4>
-    <a name=TOC-Ubuntu-Linux-i386-></a><span style=FONT-FAMILY:Verdana>Ubuntu
-    Linux (i386)</span>
-  </h4>
-  <div style=FONT-FAMILY:Verdana>
-    To set up your Linux development environment, make sure you have the
-    following:<span style="WORD-SPACING:0px; FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; font-size-adjust:none; font-stretch:normal; TEXT-TRANSFORM:none; COLOR:#000000; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate"><font size=2>
-    </font></span>
-  </div>
-  <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
-    <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
-      <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
-        <ul style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
-          <li style="MARGIN-TOP:8px; MARGIN-BOTTOM:8px">
-            Git 1.5.4 or
-            newer<span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"><font size=2>.&nbsp;</font></span>
-          </li>
-        </ul>
-      </div>
-    </div>
-  </div>
-  <blockquote style="BORDER:medium none ; MARGIN:0pt 0pt 0pt 40px; PADDING:0px">
-    <span style=FONT-FAMILY:arial><span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"><span style="FONT-FAMILY:courier new,monospace">$
-    </span></span><span style="FONT-FAMILY:courier new,monospace">sudo apt-get
-    install git-core<br>
-    </span></span>
-  </blockquote>
-  <div>
-    <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
-      <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:arial,sans-serif">
-        <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
-          <h4>
-            <a name=TOC-Ubuntu-Linux-amd64-></a><span style=FONT-FAMILY:Verdana>Ubuntu
-            Linux (amd64)</span>
-          </h4>
-          <span style=FONT-FAMILY:Verdana>This has not been as well
-          tested.</span>
-        </div>
-        <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
-          <br>
-        </div>
-        <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
-          The Android build requires a 32-bit build environment:
-        </div>
-        <div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
-          <ul>
-            <li>
-              Get the packages as listed above in the i386
-              instructions:<span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal">&nbsp;&nbsp;&nbsp;</span>
-            </li>
-          </ul>
-        </div>
-      </div>
-    </div>
-  </div>
-  <blockquote style="BORDER:medium none ; MARGIN:0pt 0pt 0pt 40px; PADDING:0px">
-    <span style=FONT-FAMILY:arial><span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"><span style="FONT-FAMILY:courier new,monospace">$&nbsp;</span></span><span style="FONT-FAMILY:courier new,monospace">sudo
-    apt-get install git-core<br>
-    </span></span>
-  </blockquote>
-  <h4>
-    <a name=TOC-Other-Linux></a>Other Linux
-  </h4>
-  <p>
-    There's
-    no&nbsp;reason&nbsp;why&nbsp;Android&nbsp;cannot&nbsp;be&nbsp;built&nbsp;on&nbsp;non-Ubuntu&nbsp;systems<span style=FONT-WEIGHT:normal><font size=2>.&nbsp;In&nbsp;general&nbsp;you&nbsp;will&nbsp;need:</font></span>
-  </p>
-  <ul>
-    <li>
-      Git&nbsp;1.5.4&nbsp;or&nbsp;newer.&nbsp;You&nbsp;can&nbsp;find&nbsp;it&nbsp;at&nbsp;<a href=http://git.or.cz/ rel=nofollow>http://git.or.cz/</a><span style=FONT-FAMILY:arial></span>
-    </li>
-  </ul>
-  <div>
-    <h3>
-      Mac OS Installation
-    </h3>
-    <ul>
-      <li>
-        <span style=FONT-FAMILY:arial,sans-serif>To build the Android files in a
-        Mac OS environment, you need an Intel/x86 machine. The Android build
-        system and tools do not support the older PowerPC architecture.</span>
-      </li>
-      <li>
-        <span style=FONT-FAMILY:arial,sans-serif>Android must be built on a
-        case-sensitive file system.<br>
-        </span>
-      </li>
-      <ul>
-        <li>
-          We recommend that you build Android on a partition that has been
-          formatted with the "Case-sensitive Journaled HFS+" file system:
-        </li>
-        <ul>
-          <li>
-            A case-sensitive file system is required because the sources contain
-            files that differ only in case.
-          </li>
-          <li>
-            Journaled systems are more robust. (This is optional, but
-            recommended.)
-          </li>
-          <li>
-            HFS+ is required to successfully build Mac OS applications such as
-            the Android Emulator for OS X.
-          </li>
-        </ul>
-        <li>
-          If you want to avoid partitioning/formatting your hard drive, you can
-          use a case-sensitive disk image instead.
-        </li>
-        <ul>
-          <li>
-            To create the image:<br>
-            <ul>
-              <li>
-                launch /Applications/Utilities/Disk Utility
-              </li>
-              <li>
-                select "New Image"
-              </li>
-              <li>
-                size: 8 GB (this will work, but you can choose more if you want
-                to)
-              </li>
-              <li>
-                volume format: case sensitive, journaled
-              </li>
-            </ul>
-          </li>
-          <li>
-            This will create a .dmg file which, once mounted, acts as a drive
-            with the required formatting for Android development. For a disk
-            image named "android.dmg" stored in your home directory, you can add
-            the following to your ~/.bash_profile to mount the image when you
-            execute "mountAndroid":<br>
-            <br>
-            <div style=MARGIN-LEFT:40px>
-              <span style="FONT-FAMILY:courier new,monospace"># command to mount
-              the android file
-              image</span><br style="FONT-FAMILY:courier new,monospace">
-              <span style="FONT-FAMILY:courier new,monospace">function
-              mountAndroid&nbsp; { hdiutil attach ~/android.dmg&nbsp;
-              -mountpoint /Volumes/android; }</span><br>
-            </div>
-            <br>
-            Once mounted, you'll do all your work in the "android" volume. You
-            can eject it (unmount it) just like you would with an external
-            drive.
-          </li>
-        </ul>
-      </ul>
-    </ul>
-    <div>
-      <br>
-      <ul>
-        <li>
-          Install git 1.5.4 or newer. You can find it at
-          <a href=http://git.or.cz/ rel=nofollow>http://git.or.cz/</a>
-        </li>
-      </ul>
-      <h2>
-        Installing the Android SDK
-      </h2>
-      The Android NDK uses the Android SDK.&nbsp;You can find the Android SDK at
-      <a href=http://code.google.com/android/download.html id=a.-o title=http://code.google.com/android/download.html>http://code.google.com/android/download.html</a><br>
-      This version of the Android NDK requires the Cupcake version of the
-      Android SDK.<br>
-      <br>
-      <h2>
-        Installing the Prebuilt Native Toolchain<br>
-      </h2>
-      The NDK uses the prebuilt native toolchain from the Android Open Source
-      git repository.<br>
-      <br>
-      To download the prebuilt native toolchain to your working directory,
-      execute the following commands:<br>
-      <br>
-      <span style="FONT-FAMILY:Courier New"></span>
-      <div style=MARGIN-LEFT:40px>
-        <span style="FONT-FAMILY:Courier New">git clone
-        git://android.git.kernel.org/platform/prebuilt.git</span><br>
-        <span style="FONT-FAMILY:Courier New">cd prebuilt</span><br>
-        <span style="FONT-FAMILY:Courier New">git checkout -b cupcake -t
-        origin/cupcake</span><br>
-      </div>
-      <div style=MARGIN-LEFT:40px>
-        <span style="FONT-FAMILY:Courier New"></span>
-      </div>
-      <br>
-      <h2>
-        Setting Environment Variables
-      </h2>
-      The NDK requires that you set two environment variables:<br>
-      <ul>
-        <li>
-          PREBUILT must be set to the directory that contains the prebuilt
-          toolchain. Include the "prebuilt" directory in the path. Example:
-          /Volumes/android/prebuilt<br>
-        </li>
-        <li>
-          ANDROID_SDK_BASE must be set to the directory that contains the
-          Android SDK. Example: ~/AndroidSDK<br>
-        </li>
-      </ul>
-      <br>
-      <h2>
-        <span style=FONT-FAMILY:Verdana>Unpacking the NDK</span>
-      </h2>
-      Unpack the android_pndk.tar.gz into your working directory<br>
-      <br>
-      <div style=MARGIN-LEFT:40px>
-        <span style="FONT-FAMILY:Courier New">tar -zxvf
-        android_pndk.tar.gz</span><br>
-      </div>
-      <br>
-      This will create a directory called pndk. It should contain a README.html
-      file (this file) and the following directories: config, include, lib, and
-      sample.<br>
-      <br>
-      Look in the "samples" directory for samples showing how to use the NDK.<br>
-      <br>
-      <br>
-    </div>
-    <br>
-  </div>
-  <br>
-</div>
-<br></body>
-</html>
\ No newline at end of file
diff --git a/pdk/pndk/Pndk.mk b/pdk/pndk/Pndk.mk
deleted file mode 100644
index ce9e3b0..0000000
--- a/pdk/pndk/Pndk.mk
+++ /dev/null
@@ -1,232 +0,0 @@
-#
-# Copyright (C) 2008 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.
-#
-
-# Assemble the Native Development Kit
-# Assembled using the generic build by default.
-# (set in device/config/product_config.make)
-
-# A macro to make rules to copy all newer files in a directory tree matching an
-# optional find filter and add the files to a list variable for dependencies.
-# Designed after copy_headers.make: Create a rule to copy each file;
-# copy-one-file defines the actual rule.
-# $(1): source directory tree root
-# $(2): destination directory tree root
-# $(3): list variable to append destination files to
-# $(4): optional find(1) arguments
-define define-tree-copy-rules
-  $(eval _src_files := $(shell find $(1) -type f $(4))) \
-  $(foreach _src, $(_src_files), \
-    $(eval _dest := $(patsubst $(1)%,$(2)%,$(_src))) \
-    $(eval $(3) := $($(3)) $(_dest)) \
-    $(eval $(call copy-one-file,$(_src),$(_dest))) \
-   )
-endef
-
-#-------------------------------------------------------------------------------
-# Install all the files needed to build the pndk.
-#   We build three versions of the pndk
-#       (1) The full version, with source.
-#       (2) The full version, without source.
-#       (3) A JNI-only version, with source.
-#
-#   We make five sets of trees:
-#		(A) Common files used in all versions of the pndk
-#   (B) Common files used in the full versions of the pndk
-#		(C) Files used in the standard pndk (no source files included)
-#		(D) Files used in both the JNI-only and full-with-source version
-#		(E) Files used in just the full-with-source version
-#
-#   Each pndk version is created by combining the appropriate trees:
-#
-#            (A)   (B)  (C)  (D)  (E)
-#       (1)  yes   yes       yes  yes
-#       (2)  yes   yes  yes
-#       (3)  yes             yes
-#
-# Source is provided for partners who want to recompile our libraries for optimization.
-# The JNI-only version is provided for partners that want to create shared
-# libraries that can be packaged with APK files and called from Java code.
-
-LOCAL_PATH := $(call my-dir)
-
-# Source trees for the pndk
-samples_src_dir := $(LOCAL_PATH)/samples
-sample_src_dir := $(samples_src_dir)/sample
-samplejni_src_dir := $(samples_src_dir)/samplejni
-config_src_dir := $(LOCAL_PATH)/config
-kernel_common_src_dir := $(KERNEL_HEADERS_COMMON)
-kernel_arch_src_dir := $(KERNEL_HEADERS_ARCH)
-bionic_src_dir := bionic
-jni_src_dir := $(JNI_H_INCLUDE)
-
-# Workspace directory
-pndk_intermediates := $(call intermediates-dir-for,PACKAGING,pndk)
-
-# Common destination trees for the pndk
-pndk_common_tree := $(pndk_intermediates)/common
-pndk_common_dest_dir := $(pndk_common_tree)/pndk
-samplejni_dest_dir := $(pndk_common_dest_dir)/samples/samplejni
-config_dest_dir := $(pndk_common_dest_dir)/config
-kernel_dest_dir := $(pndk_common_dest_dir)/include/kernel/include
-gcc_dest_dir := $(pndk_common_dest_dir)/toolchain
-jni_dest_dir := $(pndk_common_dest_dir)/include/nativehelper
-
-# Common-full destination trees for the pndk
-pndk_common_full_tree := $(pndk_intermediates)/common_full
-pndk_common_full_dest_dir := $(pndk_common_full_tree)/pndk
-sample_dest_dir := $(pndk_common_full_dest_dir)/samples/sample
-
-# Destination trees without source for the standard pndk (without source)
-pndk_no_src_tree := $(pndk_intermediates)/no_src
-pndk_no_src_dest_dir := $(pndk_no_src_tree)/pndk
-bionic_no_src_dest_dir := $(pndk_no_src_dest_dir)/include/bionic
-
-# Destination trees including source for the pndk with source
-pndk_src_tree := $(pndk_intermediates)/with_src
-pndk_src_dest_dir := $(pndk_src_tree)/pndk
-bionic_src_dest_dir := $(pndk_src_dest_dir)/include/bionic
-
-# Destinations of all common files (not picked up by tree rules below)
-pndk_common_dest_files := $(pndk_common_dest_dir)/Android_PNDK_README.html \
-		$(pndk_common_dest_dir)/config/armelf.x \
-		$(pndk_common_dest_dir)/config/armelflib.x \
-		$(pndk_common_dest_dir)/lib/crtbegin_dynamic.o \
-		$(pndk_common_dest_dir)/lib/crtend_android.o \
-		$(pndk_common_dest_dir)/lib/libc.so \
-		$(pndk_common_dest_dir)/lib/libm.so 
-    
-# Destinations of files used by the full, non-jni-only configurations
-pndk_common_full_dest_files := \
-		$(pndk_common_full_dest_dir)/lib/libdl.so \
-		$(pndk_common_full_dest_dir)/lib/libstdc++.so
-
-# Install common files outside common trees
-$(pndk_common_dest_dir)/Android_PNDK_README.html: $(LOCAL_PATH)/Android_PNDK_README.html | $(ACP)
-	@echo "pndk Android_PNDK_README.html: from $? to $@"
-	$(copy-file-to-target)
-
-$(pndk_common_dest_dir)/config/armelf.x: $(BUILD_SYSTEM)/armelf.x | $(ACP)
-	@echo "pndk config: $@"
-	$(copy-file-to-target)
-
-$(pndk_common_dest_dir)/config/armelflib.x: $(BUILD_SYSTEM)/armelflib.x | $(ACP)
-	@echo "pndk config: $@"
-	$(copy-file-to-target)
-
-$(pndk_common_dest_dir)/lib/%: $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/% | $(ACP)
-	@echo "pndk lib: $@"
-	$(copy-file-to-target)
-
-# Install common_full files outside common trees
-$(pndk_common_full_dest_dir)/lib/%: $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/% | $(ACP)
-	@echo "pndk lib full: $@"
-	$(copy-file-to-target)
-
-# Install files in common trees
-listvar := pndk_common_dest_files
-$(call define-tree-copy-rules,$(samplejni_src_dir),$(samplejni_dest_dir),$(listvar))
-$(call define-tree-copy-rules,$(config_src_dir),$(config_dest_dir),$(listvar))
-$(call define-tree-copy-rules,$(kernel_common_src_dir),$(kernel_dest_dir),$(listvar))
-$(call define-tree-copy-rules,$(kernel_arch_src_dir),$(kernel_dest_dir),$(listvar))
-$(call define-tree-copy-rules,$(jni_src_dir),$(jni_dest_dir),$(listvar), -name jni.h)
-
-# Install files common to the full builds but not the JNI build
-listvar := pndk_common_full_dest_files
-$(call define-tree-copy-rules,$(sample_src_dir),$(sample_dest_dir),$(listvar))
-
-# Install files without sources
-listvar := pndk_no_src_dest_files
-$(call define-tree-copy-rules,$(bionic_src_dir),$(bionic_no_src_dest_dir),$(listvar),-name '*.h')
-
-# Install files including sources
-listvar := pndk_with_src_dest_files
-$(call define-tree-copy-rules,$(bionic_src_dir),$(bionic_src_dest_dir),$(listvar))
-
-
-#-------------------------------------------------------------------------------
-# Create the multiple versions of the pndk:
-# pndk_no_src           all files without source
-# pndk_with_source      all files with source
-# pndk_jni_with_source  just files for building JNI shared libraries with source.
-
-# Name the tar files
-name := android_pndk-$(TARGET_PRODUCT)
-ifeq ($(TARGET_BUILD_TYPE),debug)
-  name := $(name)_debug
-endif
-name := $(name)-$(BUILD_NUMBER)
-pndk_tarfile := $(pndk_intermediates)/$(name).tar
-pndk_tarfile_zipped := $(pndk_tarfile).gz
-pndk_with_src_tarfile := $(pndk_intermediates)/$(name)-src.tar
-pndk_with_src_tarfile_zipped := $(pndk_with_src_tarfile).gz
-pndk_jni_with_src_tarfile := $(pndk_intermediates)/$(name)-jni-src.tar
-pndk_jni_with_src_tarfile_zipped := $(pndk_jni_with_src_tarfile).gz
-
-.PHONY: pndk pndk_with_src pndk_no_src pndk_jni_with_src pndk_debug
-
-pndk: pndk_no_src pndk_with_src pndk_jni_with_src
-pndk_no_src: $(pndk_tarfile_zipped)
-pndk_with_src: $(pndk_with_src_tarfile_zipped)
-pndk_jni_with_src: $(pndk_jni_with_src_tarfile_zipped)
-
-# Put the pndk zip files in the distribution directory
-$(call dist-for-goals,pndk,$(pndk_tarfile_zipped))
-$(call dist-for-goals,pndk,$(pndk_with_src_tarfile_zipped))
-$(call dist-for-goals,pndk,$(pndk_jni_with_src_tarfile_zipped))
-
-# zip up tar files
-%.tar.gz: %.tar
-	@echo "pndk: zipped $<"
-	$(hide) gzip -cf $< > $@
-
-# tar up the files without our sources to make the pndk.
-$(pndk_tarfile): $(pndk_common_dest_files) $(pndk_common_full_dest_files) $(pndk_no_src_dest_files)
-	@echo "pndk: $@"
-	@mkdir -p $(dir $@)
-	@rm -f $@
-	$(hide) tar rf $@ -C $(pndk_common_tree) pndk
-	$(hide) tar rf $@ -C $(pndk_common_full_tree) pndk
-	$(hide) tar rf $@ -C $(pndk_no_src_tree) pndk
-
-# tar up the full sources to make the pndk with sources.
-$(pndk_with_src_tarfile): $(pndk_common_dest_files) $(pndk_common_full_dest_files) $(pndk_with_src_dest_files) $(pndk_full_with_src_dest_files)
-	@echo "pndk: $@"
-	@mkdir -p $(dir $@)
-	@rm -f $@
-	$(hide) tar rf $@ -C $(pndk_common_tree) pndk
-	$(hide) tar rf $@ -C $(pndk_common_full_tree) pndk
-	$(hide) tar rf $@ -C $(pndk_src_tree) pndk
-	
-# tar up the sources to make the pndk with JNI support.
-$(pndk_jni_with_src_tarfile): $(pndk_common_dest_files) $(pndk_with_src_dest_files)
-	@echo "pndk: $@"
-	@mkdir -p $(dir $@)
-	@rm -f $@
-	$(hide) tar rf $@ -C $(pndk_common_tree) pndk
-	$(hide) tar rf $@ -C $(pndk_src_tree) pndk
-
-# Debugging reporting can go here, add it as a target to get output.
-pndk_debug: pndk
-	@echo "You are here: $@"
-	@echo "pndk tar file:          $(pndk_tarfile_zipped)"
-	@echo "pndk_with_src tar file: $(pndk_with_src_tarfile_zipped)"
-	@echo "pndk_jni_with_src tar file: $(pndk_jni_with_src_tarfile_zipped)"
-	@echo "pndk_files:             $(pndk_no_src_dest_files)"
-	@echo "pndk_with_src files:    $(pndk_with_src_dest_files)"
-	@echo "pndk_full_with_src files:    $(pndk_full_with_src_dest_files)"
-	@echo "pndk_common_files:      $(pndk_common_dest_files)"
-	@echo "pndk_common_full_dest_files:      $(pndk_common_full_dest_files)"
-
diff --git a/pdk/pndk/config/config.mk b/pdk/pndk/config/config.mk
deleted file mode 100644
index a6972b1..0000000
--- a/pdk/pndk/config/config.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Assumes PREBUILT is defined to point to the correct flavor of the prebuilt 
-# directory in the Android source tree
-
-CC  := $(PREBUILT)/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gcc
-AR  := $(PREBUILT)/toolchain/arm-eabi-4.2.1/bin/arm-eabi-ar
-
-INC   := -I$(NDK_BASE)/include/bionic/libc/arch-arm/include \
-         -I$(NDK_BASE)/include/kernel/include \
-         -I$(NDK_BASE)/include/bionic/libm/include \
-         -I$(NDK_BASE)/include/bionic/libm/include/arm \
-         -I$(NDK_BASE)/include/bionic/libc/include \
-         -I$(NDK_BASE)/include/bionic/libstdc++/include
-
-LINK       := -nostdlib -Bdynamic \
-     -Wl,-T,$(NDK_BASE)/config/armelf.x \
-     -Wl,-dynamic-linker,/system/bin/linker \
-     -Wl,-z,nocopyreloc \
-     -L$(NDK_BASE)/lib \
-     -Wl,-rpath-link=$(NDK_BASE)/lib \
-    $(NDK_BASE)/lib/crtbegin_dynamic.o
-
-POSTLINK := $(NDK_BASE)/lib/crtend_android.o
-
-%.o: %.cpp
-	$(CC) $(CFLAGS) -fno-exceptions -fno-rtti $(INC) -o $@ -c $< 
-  
-%.o: %.c
-	$(CC) $(CFLAGS) $(INC) -o $@ -c $< 
-  
diff --git a/pdk/pndk/samples/sample/Makefile b/pdk/pndk/samples/sample/Makefile
deleted file mode 100644
index a66ae86..0000000
--- a/pdk/pndk/samples/sample/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-
-NDK_BASE   := ../..
-
-include $(NDK_BASE)/config/config.mk
-
-EXECUTABLE := hello
-SOURCES    := hello.c
-OBJECTS    := $(SOURCES:.c=.o)
-LIBS       := -lc -lm
-
-all: $(EXECUTABLE)
-
-# need $(LINK) before all objects and $(POSTLINK) after all objects for 
-# android runtime setup.
-
-hello: $(OBJECTS)
-	$(CC) $(LINK) -o $@ $(OBJECTS) $(LIBS) $(POSTLINK)
-
-clean:
-	rm -rf *.o hello
-
diff --git a/pdk/pndk/samples/sample/Makefile.hello_cpp b/pdk/pndk/samples/sample/Makefile.hello_cpp
deleted file mode 100644
index 5d82b66..0000000
--- a/pdk/pndk/samples/sample/Makefile.hello_cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-NDK_BASE   := ../..
-
-include $(NDK_BASE)/config/config.mk
-
-EXECUTABLE := hello_cpp
-SOURCES    := hello_cpp.cpp
-OBJECTS    := $(SOURCES:.cpp=.o)
-LIBS       := -lc -lm -lstdc++
-
-all: $(EXECUTABLE)
-
-# need $(LINK) before all objects and $(POSTLINK) after all objects for 
-# android runtime setup.
-
-hello_cpp: $(OBJECTS)
-	$(CC) $(LINK) -o $@ $(OBJECTS) $(LIBS) $(POSTLINK)
-
-clean:
-	rm -rf *.o hello_cpp
-
diff --git a/pdk/pndk/samples/sample/Makefile.lib b/pdk/pndk/samples/sample/Makefile.lib
deleted file mode 100644
index fbb5a14..0000000
--- a/pdk/pndk/samples/sample/Makefile.lib
+++ /dev/null
@@ -1,31 +0,0 @@
-
-NDK_BASE   := ../..
-
-include $(NDK_BASE)/config/config.mk
-
-# Assumes PREBUILT is defined to point to the correct flavor of the prebuilt 
-# directory in the Android source tree
-
-SOURCES    := hellolibrary.c
-OBJECTS    := $(SOURCES:.c=.o)
-LIBS       := -lc -lm
-ALIB       := $(PREBUILT)/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a
-
-all: sharedlib staticlib
-
-# Using shared and static suffixes as these are going in the same directory;
-# typically you would not do this as you would make only one version,
-# but if we don't we'll screw up the linking because of linker defaults.
-
-staticlib: $(OBJECTS)
-	$(AR) -cr libhello-static.a $(OBJECTS) 
-	
-sharedlib: hellolibrary-shared.o
-	$(CC) -nostdlib -Wl,-soname,libhello-shared.so -Wl,-shared,-Bsymbolic -L$(NDK_BASE)/lib $^ $(LIBS) -o libhello-shared.so -Wl,--no-undefined $(ALIB)
-	
-hellolibrary-shared.o: hellolibrary.c
-	$(CC) -c -fpic $(INC) -o $@ $^ 
-
-clean:
-	rm -rf *.o libhello-static.a libhello-shared.so
-					                                            
diff --git a/pdk/pndk/samples/sample/Makefile.uselib b/pdk/pndk/samples/sample/Makefile.uselib
deleted file mode 100644
index b44eae2..0000000
--- a/pdk/pndk/samples/sample/Makefile.uselib
+++ /dev/null
@@ -1,23 +0,0 @@
-
-NDK_BASE   := ../..
-
-include $(NDK_BASE)/config/config.mk
-
-SOURCES    := use_hellolibrary.c
-OBJECTS    := $(SOURCES:.c=.o)
-LIBS       := -lc -lm 
-
-all: use_hellolibrary-a use_hellolibrary-so
-
-# need $(LINK) before all objects and $(POSTLINK) after all objects for 
-# android runtime setup.
-
-use_hellolibrary-a: $(OBJECTS)
-	$(CC) $(LINK) -o $@ $(OBJECTS) $(LIBS) -L. -lhello-static $(POSTLINK)
-
-use_hellolibrary-so: $(OBJECTS)
-	$(CC) $(LINK) -o $@ $(OBJECTS) $(LIBS) -L. -lhello-shared $(POSTLINK)
-
-clean:
-	rm -rf *.o use_hellolibrary-a use_hellolibrary-so
-
diff --git a/pdk/pndk/samples/sample/README b/pdk/pndk/samples/sample/README
deleted file mode 100644
index ecc751f..0000000
--- a/pdk/pndk/samples/sample/README
+++ /dev/null
@@ -1,135 +0,0 @@
-Building native code applications and libraries
-
-STEP 1
-Building an application.
---------
-
-0) set the environment variable PREBUILT to point to the Android prebuilt directory
-  export PREBUILT=<path_to_android_src>/prebuilt/<platform>
-
-where you type in the actual path to the android source in place of <path_to_android_src>
-and the platform you are using instead of <platform>: either linux-x86 or darwin-x86
-
-1) Test the pndk install by building the hello world sample application:
-
-  cd <your_pndk_base>/samples/sample
-  make clean
-  make
-
-The sample application uses hello.c to construct the hello binary,  which you 
-can load and run on the ARM device. To achieve proper runtime behavior, verify
-that:
-  * crtbegin_dynamic.o is the first linked object file
-  * crtend_android.o is last linked object.
-Both are set by the config.mk file in pndk/config.
-
-2) Test that this works correctly by attaching your ARM-based device to the USB 
-port and installing the application (hello) you just made by (in the commands
-below # is the ARM device's shell prompt):
-
-NOTE: need a development build so remount opens system permissions
-
-  adb remount
-  adb push hello system/app
-  adb shell
-  # cd system/app
-  # ./hello
-  Hello from the NDK; no user libraries.
-  # exit
-
-3) You may also build the c++ binary hello_cpp.cpp into an application:
-
-  make -f Makefile.hello_cpp clean
-  make -f Makefile.hello_cpp hello_cpp
-
-This uses the hello_cpp.cpp and hello_cpp.h files to construct the hello_cpp 
-binary application, which you can load and run on the ARM device.  Note that
-we do not provide for C++ exceptions thus you must use the -fno-exceptions flag
-when compiling.
-
-  adb push hello_cpp system/app
-  adb shell
-  # cd system/app
-  # ./hello_cpp
-  C++ example printing message: Hello world!
-  # exit
-
-
-STEP 2
-Building and using a library 
--------
-
-Makefile.lib in pndk/sample shows how to make either a shared library or a 
-static library from the hellolibrary.c source.  The example makes the libraries
-libhello-shared.so and libhello-static.a .
-
-Makefile.uselib then shows how to make an application that links against either
-a shared or a static library.  They examples shows how to build the two
-applications use_hellolibrary-so and use-hellolibrary-a from the source
-use_hellolibrary.c.
-
-1) To make a shared library and an application that uses it:
-
-  make -f Makefile.lib clean
-  make -f Makefile.lib sharedlib
-  make -f Makefile.uselib clean
-  make -f Makefile.uselib use_hellolibrary-so
-
-2) Copy the shared library libhello-shared.so to /system/lib (or the location 
-in which shared libraries are found by the kernel on your ARM-based device.) 
-
-  adb push libhello-shared.so system/lib
- 
-You would not typically use the -shared or -static extensions in the filename, 
-but the distinction is important in the case where a static and shared library 
-are made in the same directory. Giving the files different names allows you to 
-override the link defaults that default to a static library of the same name.
-
-3) The application, use_hellolibrary-so, can now be tested by loading and 
-running on the ARM device. 
-
-  adb push use_hellolibrary-so /system/app
-  adb shell
-  # cd system/app
-  # ./use_hellolibrary-so
-  Library printing message: Hello from the NDK.
-  # exit
-
-4) To make a static library:
-
-  make -f Makefile.lib clean
-  make -f Makefile.lib staticlib
-  make -f Makefile.uselib clean
-  make -f Makefile.uselib use_hellolibrary-a
-
-5) Test the application use_hellolibrary-a by loading and running it on the ARM
-device.
-
-  adb push use_hellolibrary-a system/app
-  adb shell
-  # cd system/app
-  # ./use_hellolibrary-a
-  Library printing message: Hello from the NDK.
-  # exit
-
-
-SUMMARY:
----------
-
-To make everything execute the following:
-
-make clean
-make
-make -f Makefile.lib clean
-make -f Makefile.lib
-make -f Makefile.uselib clean
-make -f Makefile.uselib
-make -f Makefile.hello_cpp clean
-make -f Makefile.hello_cpp hello_cpp
-
-
-You should have:
-	* The libraries libhello-static.a and libhello-shared.so built, the latter
-			ready for installation,
-	* The applications hello, use_hellolibrary-a, and use_hellolibrary-so 
-			available for installation on the ARM device.
diff --git a/pdk/pndk/samples/sample/hello.c b/pdk/pndk/samples/sample/hello.c
deleted file mode 100644
index b7d750f..0000000
--- a/pdk/pndk/samples/sample/hello.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include <stdio.h>
-
-int main(int argc, char *argv[])
-{
-  printf("Hello from the NDK; no user libraries.\n");
-  return 0;
-}
diff --git a/pdk/pndk/samples/sample/hello_cpp.cpp b/pdk/pndk/samples/sample/hello_cpp.cpp
deleted file mode 100644
index c0a157a..0000000
--- a/pdk/pndk/samples/sample/hello_cpp.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include <stdio.h>
-#include "hello_cpp.h"
-
-Hello::Hello()
-{
-}
-
-Hello::~Hello()
-{
-}
-
-void Hello::printMessage(char* msg)
-{
-  printf("C++ example printing message: %s", msg);
-}
-
-int main(void)
-{
-  Hello hello_obj;
-  hello_obj.printMessage("Hello world!\n");
-  return 0;
-}
diff --git a/pdk/pndk/samples/sample/hello_cpp.h b/pdk/pndk/samples/sample/hello_cpp.h
deleted file mode 100644
index b98ae7f..0000000
--- a/pdk/pndk/samples/sample/hello_cpp.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef HELLO_CPP_H
-#define HELLO_CPP_H
-
-class Hello
-{
-public:
-    Hello();
-    ~Hello();
-    void printMessage(char* msg);
-};
-
-#endif
diff --git a/pdk/pndk/samples/sample/hellolibrary.c b/pdk/pndk/samples/sample/hellolibrary.c
deleted file mode 100644
index 90f98fa..0000000
--- a/pdk/pndk/samples/sample/hellolibrary.c
+++ /dev/null
@@ -1,10 +0,0 @@
-/* hellolibrary.c - demonstrate library use with the NDK. 
- * This will be the library that gets called as wither a static or shared lib.*/
-
-#include <stdio.h>
-
-int hellolibrary(char *msg)
-{
-  printf("Library printing message: %s", msg);
-  return 0;
-}
diff --git a/pdk/pndk/samples/sample/use_hellolibrary.c b/pdk/pndk/samples/sample/use_hellolibrary.c
deleted file mode 100644
index e32a364..0000000
--- a/pdk/pndk/samples/sample/use_hellolibrary.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/* use_hellolibrary.c -- used to show how to link to the hellolibrary */
-
-int hellolibrary(char *msg);
-
-int main()
-{
-  hellolibrary("Hello from the NDK.\n");
-  return 0;
-}
diff --git a/pdk/pndk/samples/samplejni/AndroidManifest.xml b/pdk/pndk/samples/samplejni/AndroidManifest.xml
deleted file mode 100644
index 450eb0b..0000000
--- a/pdk/pndk/samples/samplejni/AndroidManifest.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.example.jniexample"
-      android:versionCode="1"
-      android:versionName="1.0.0">
-    <application android:icon="@drawable/icon" android:label="@string/app_name">
-        <activity android:name=".JNIExample"
-                  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> 
\ No newline at end of file
diff --git a/pdk/pndk/samples/samplejni/Makefile b/pdk/pndk/samples/samplejni/Makefile
deleted file mode 100644
index 18e97df..0000000
--- a/pdk/pndk/samples/samplejni/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# Package a shared library into an APK
-
-NDK_BASE   := ../..
-
-# Assume ANDROID_SDK_BASE is defined to point to the base of the Android SDK
-# Assumes PREBUILT is defined to point to the prebuilt directory of the Android source
-
-include $(NDK_BASE)/config/config.mk
-
-SOURCES    := native.cpp
-OBJECTS    := $(SOURCES:.cpp=.o)
-LIBS       := -lc -lm
-ALIB       := $(PREBUILT)/toolchain/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1/interwork/libgcc.a
-
-APKBUILDER := $(ANDROID_SDK_BASE)/tools/apkbuilder
-
-APK_INPUT_DIR := bin
-APK_OUTPUT_DIR := bin/full
-
-APK_NAME   := JNIExample.apk
-INPUT_APK  := $(APK_INPUT_DIR)/$(APK_NAME)
-OUTPUT_APK := $(APK_OUTPUT_DIR)/$(APK_NAME)
-APK_STAGE  := $(APK_OUTPUT_DIR)/temp
-
-JNI_LIBS := libnative.so
-
-all: $(OUTPUT_APK)
-
-$(OUTPUT_APK) : $(INPUT_APK) $(JNI_LIBS)
-	rm -rf $(APK_STAGE)
-	mkdir -p $(APK_STAGE)
-	unzip $(INPUT_APK) -d $(APK_STAGE)
-	mkdir -p $(APK_STAGE)/lib/armeabi
-	cp $(JNI_LIBS) $(APK_STAGE)/lib/armeabi
-	$(APKBUILDER) $(OUTPUT_APK) -v -rf $(APK_STAGE)
-	rm -rf $(APK_STAGE)
-
-libnative.so: native.o
-	$(CC) -nostdlib -Wl,-soname,libhello-shared.so -Wl,-shared,-Bsymbolic -L$(NDK_BASE)/lib $^ $(LIBS) -o $@ -Wl,--no-undefined $(ALIB)
-	
-native.o: native.cpp
-	$(CC) -c -fpic $(INC) -I$(NDK_BASE)/include/nativehelper -o $@ $^ 
-
-clean:
-	rm -rf *.o libnative.so $(APK_OUTPUT_DIR)
diff --git a/pdk/pndk/samples/samplejni/README b/pdk/pndk/samples/samplejni/README
deleted file mode 100644
index c5ed772..0000000
--- a/pdk/pndk/samples/samplejni/README
+++ /dev/null
@@ -1,43 +0,0 @@
-JNI Example
-
-This sample shows how to build a native code library, package it into an APK, and call it using JNI.
-
-Prerequesites
-
-You must install the Android SDK in order to build the Java APK. The Android SDK can be downloaded
-from
-
-http://code.google.com/android/download.html
-
-Build Steps:
-
-1) Create an Eclipse project to for the Java code.
-
-	Launch Eclipse
-	Choose File : New : Project...
-	Choose Android : Android Project
-	Choose Next
-	Enter "JNIExample" into the Project name: field.
-	Choose "Create project from existing source"
-	Click the Browse button and browse to the pndk/samplejni directory
-	
-	Click Finish
-
-2) Build the Eclipse Project
-
-	Select the JNIExample project in the Package Explorer
-	Make sure that the menu item Project:Build Automatically is not checked.
-	Choose Project:Build
-
-    The resulting apk file ends up in bin/full/JNIExample.apk
-
-2) Build the shared library, insert the shared library into the APK file and resign the
-    shared library.
-
-    ANDROID_SDK_BASE=<directory where SDK is installed> make
-
-Install the APK on the device:
-
-	adb install -r bin/full/JNIExample.apk
-
-Once the application is installed, you can run it by tapping on the "JNI Example" icon.
diff --git a/pdk/pndk/samples/samplejni/native.cpp b/pdk/pndk/samples/samplejni/native.cpp
deleted file mode 100644
index 2e5fa4d..0000000
--- a/pdk/pndk/samples/samplejni/native.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-#include <jni.h>
-#include <stdio.h>
-
-static jint
-add(JNIEnv *env, jobject thiz, jint a, jint b) {
-int result = a + b;
-    printf("%d + %d = %d", a, b, result);
-    return result;
-}
-
-static const char *classPathName = "com/example/jniexample/Native";
-
-static JNINativeMethod methods[] = {
-  {"add", "(II)I", (void*)add },
-};
-
-/*
- * Register several native methods for one class.
- */
-static int registerNativeMethods(JNIEnv* env, const char* className,
-    JNINativeMethod* gMethods, int numMethods)
-{
-    jclass clazz;
-
-    clazz = env->FindClass(className);
-    if (clazz == NULL) {
-        fprintf(stderr, "Native registration unable to find class '%s'", className);
-        return JNI_FALSE;
-    }
-    if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) {
-        fprintf(stderr, "RegisterNatives failed for '%s'", className);
-        return JNI_FALSE;
-    }
-
-    return JNI_TRUE;
-}
-
-/*
- * Register native methods for all classes we know about.
- */
-static int registerNatives(JNIEnv* env)
-{
-  if (!registerNativeMethods(env, classPathName,
-                 methods, sizeof(methods) / sizeof(methods[0]))) {
-    return JNI_FALSE;
-  }
-
-  return JNI_TRUE;
-}
-
-/*
- * Set some test stuff up.
- *
- * Returns the JNI version on success, -1 on failure.
- */
-
-typedef union {
-    JNIEnv* env;
-    void* venv;
-} UnionJNIEnvToVoid;
-
-jint JNI_OnLoad(JavaVM* vm, void* reserved)
-{
-    UnionJNIEnvToVoid uenv;
-    uenv.venv = NULL;
-    jint result = -1;
-    JNIEnv* env = NULL;
-    
-    printf("JNI_OnLoad");
-
-    if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) {
-        fprintf(stderr, "GetEnv failed");
-        goto bail;
-    }
-    env = uenv.env;
-
-    if (!registerNatives(env)) {
-        fprintf(stderr, "registerNatives failed");
-    }
-    
-    result = JNI_VERSION_1_4;
-    
-bail:
-    return result;
-}
diff --git a/pdk/pndk/samples/samplejni/res/drawable/icon.png b/pdk/pndk/samples/samplejni/res/drawable/icon.png
deleted file mode 100644
index 7502484..0000000
--- a/pdk/pndk/samples/samplejni/res/drawable/icon.png
+++ /dev/null
Binary files differ
diff --git a/pdk/pndk/samples/samplejni/res/values/strings.xml b/pdk/pndk/samples/samplejni/res/values/strings.xml
deleted file mode 100644
index a647beb..0000000
--- a/pdk/pndk/samples/samplejni/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <string name="app_name">JNI Example</string>
-</resources>
diff --git a/pdk/pndk/samples/samplejni/src/com/example/jniexample/JNIExample.java b/pdk/pndk/samples/samplejni/src/com/example/jniexample/JNIExample.java
deleted file mode 100644
index 315ee21..0000000
--- a/pdk/pndk/samples/samplejni/src/com/example/jniexample/JNIExample.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.example.jniexample;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.widget.TextView;
-
-public class JNIExample extends Activity {
-    /** Called when the activity is first created. */
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        TextView tv = new TextView(this);
-        int sum = Native.add(2, 3);
-        tv.setText("Native Code test: 2 + 3 = " + Integer.toString(sum));
-        setContentView(tv);
-    }
-}
-
-class Native {
-    static {
-        System.loadLibrary("native");
-    }
-
-    static native int add(int a, int b);
-}
diff --git a/pdk/sample/partner/company/mychipset/libaudio/Android.mk.stub b/pdk/sample/partner/company/mychipset/libaudio/Android.mk.stub
deleted file mode 100644
index d7c7524..0000000
--- a/pdk/sample/partner/company/mychipset/libaudio/Android.mk.stub
+++ /dev/null
@@ -1,20 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := libaudio
-
-LOCAL_SHARED_LIBRARIES := \
-    libcutils \
-    libutils \
-    libmedia \
-    libhardware
-
-LOCAL_SRC_FILES += MyAudioHardware.cpp
-
-LOCAL_CFLAGS +=
-
-LOCAL_C_INCLUDES +=
-
-LOCAL_STATIC_LIBRARIES += libaudiointerface
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/pdk/sample/partner/company/mychipset/libcamera/Android.mk.stub b/pdk/sample/partner/company/mychipset/libcamera/Android.mk.stub
deleted file mode 100755
index 29ec868..0000000
--- a/pdk/sample/partner/company/mychipset/libcamera/Android.mk.stub
+++ /dev/null
@@ -1,15 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES:= MyCameraHardware.cpp
-
-LOCAL_STATIC_LIBRARIES:= \
-	libcamera-common
- 
-LOCAL_SHARED_LIBRARIES:= libutils liblog
-
-LOCAL_MODULE:= libcamera
-
-include $(BUILD_SHARED_LIBRARY)
-
diff --git a/pdk/sample/partner/wifi_company/mychipset/Android.mk.stub b/pdk/sample/partner/wifi_company/mychipset/Android.mk.stub
deleted file mode 100644
index 2964d28..0000000
--- a/pdk/sample/partner/wifi_company/mychipset/Android.mk.stub
+++ /dev/null
@@ -1,53 +0,0 @@
-# Install firmware file for WiFi
-#
-#
-# where to install the file on the device
-#
-
-local_target_dir := $(TARGET_OUT_ETC)/wifi
-
-########################
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := MyFirmwareFile.bin
-
-LOCAL_MODULE_TAGS := user development
-
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(local_target_dir)
-
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-
-include $(BUILD_PREBUILT)
-
-########################
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := MyFirmwareConfigFile.ini
-
-LOCAL_MODULE_TAGS := user development
-
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(local_target_dir)
-
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-
-include $(BUILD_PREBUILT)
-
-########################
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := wlan.ko
-
-LOCAL_MODULE_TAGS := user development
-
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/modules
-
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-
-include $(BUILD_PREBUILT)
-
-########################
-
diff --git a/samples/AndroidBeamDemo/Android.mk b/samples/AndroidBeamDemo/Android.mk
index f125f0f..b5f45e8 100644
--- a/samples/AndroidBeamDemo/Android.mk
+++ b/samples/AndroidBeamDemo/Android.mk
@@ -1,7 +1,7 @@
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
-LOCAL_MODULE_TAGS := samples
+LOCAL_MODULE_TAGS := samples tests
 
 # Only compile source java files in this apk.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java b/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java
index 0cc5f89..d419bac 100644
--- a/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java
+++ b/samples/AndroidBeamDemo/src/com/example/android/beam/Beam.java
@@ -73,9 +73,8 @@
         time.setToNow();
         String text = ("Beam me up!\n\n" +
                 "Beam Time: " + time.format("%H:%M:%S"));
-        NdefMessage msg = new NdefMessage(
-                new NdefRecord[] { createMimeRecord(
-                        "application/com.example.android.beam", text.getBytes())
+        NdefMessage msg = new NdefMessage(NdefRecord.createMime(
+                "application/com.example.android.beam", text.getBytes())
          /**
           * The Android Application Record (AAR) is commented out. When a device
           * receives a push with an AAR in it, the application specified in the AAR
@@ -85,7 +84,7 @@
           * uses the tag dispatch system.
           */
           //,NdefRecord.createApplicationRecord("com.example.android.beam")
-        });
+        );
         return msg;
     }
 
@@ -138,18 +137,6 @@
         mInfoText.setText(new String(msg.getRecords()[0].getPayload()));
     }
 
-    /**
-     * Creates a custom MIME type encapsulated in an NDEF record
-     *
-     * @param mimeType
-     */
-    public NdefRecord createMimeRecord(String mimeType, byte[] payload) {
-        byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII"));
-        NdefRecord mimeRecord = new NdefRecord(
-                NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], payload);
-        return mimeRecord;
-    }
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         // If NFC is not available, we won't be needing this menu
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index bcb0fcb..54e9723 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -161,6 +161,16 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".app.FinishAffinity"
+                android:label="@string/activity_finish_affinity"
+                android:taskAffinity=":finishing"
+                android:enabled="@bool/atLeastJellyBean">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
         <activity android:name=".app.SoftInputModes"
                 android:label="@string/soft_input_modes">
             <intent-filter>
@@ -409,6 +419,15 @@
                   android:enabled="@bool/atLeastHoneycomb" />
 <!-- END_INCLUDE(loader_throttle) -->
 
+        <activity android:name=".app.LoaderRetained"
+                android:label="@string/loader_retained"
+                android:enabled="@bool/atLeastHoneycomb">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
         <!-- Intent Samples -->
 
         <activity android:name=".app.Intents" android:label="@string/activity_intents">
@@ -519,6 +538,21 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".app.IsolatedService$Controller"
+                android:label="@string/activity_isolated_service_controller"
+                android:launchMode="singleTop"
+                android:enabled="@bool/atLeastJellyBean">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <service android:name=".app.IsolatedService" android:isolatedProcess="true"
+                android:enabled="@bool/atLeastJellyBean" />
+        <service android:name=".app.IsolatedService2" android:isolatedProcess="true"
+                android:enabled="@bool/atLeastJellyBean" />
+
         <!-- Alarm Samples -->
 
         <receiver android:name=".app.OneShotAlarm" android:process=":remote" />
@@ -554,7 +588,8 @@
         </activity>
 
         <service android:name=".accessibility.ClockBackService"
-            android:label="@string/accessibility_service_label">
+            android:label="@string/accessibility_service_label"
+            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
             <intent-filter>
                 <action android:name="android.accessibilityservice.AccessibilityService" />
             </intent-filter>
@@ -571,7 +606,8 @@
 
         <service android:name=".accessibility.TaskBackService"
                  android:label="@string/accessibility_query_window_label"
-                 android:enabled="@bool/atLeastIceCreamSandwich">
+                 android:enabled="@bool/atLeastIceCreamSandwich"
+                 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
             <intent-filter>
                 <action android:name="android.accessibilityservice.AccessibilityService" />
             </intent-filter>
@@ -886,6 +922,16 @@
             </intent-filter>
         </activity>
 
+        <!-- Accessibility Samples -->
+        <activity android:name=".accessibility.AccessibilityNodeProviderActivity"
+                android:label="@string/accessibility_node_provider"
+                android:enabled="@bool/atLeastIceCreamSandwich">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
         <!-- Application Updating Samples -->
 
 <!-- BEGIN_INCLUDE(app_update_declaration) -->
@@ -2179,7 +2225,29 @@
             </intent-filter>
         </activity>
 
-        <activity android:name=".view.OverscanActivity" android:label="Views/Full Screen Modes">
+        <activity android:name=".view.OverscanActivity"
+                android:label="Views/System UI Visibility/System UI Modes"
+                android:uiOptions="splitActionBarWhenNarrow">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".view.ContentBrowserActivity"
+                android:label="Views/System UI Visibility/Content Browser"
+                android:theme="@android:style/Theme.Holo.Light.DarkActionBar"
+                android:uiOptions="splitActionBarWhenNarrow">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".view.VideoPlayerActivity"
+                android:label="Views/System UI Visibility/Video Player"
+                android:theme="@android:style/Theme.Holo"
+                android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
diff --git a/samples/ApiDemos/_index.html b/samples/ApiDemos/_index.html
index 3c45843..421eca6 100644
--- a/samples/ApiDemos/_index.html
+++ b/samples/ApiDemos/_index.html
@@ -1,19 +1,19 @@
-<p>The API Demos application includes a variety of small applications 
+<p>The API Demos application includes a variety of small applications
 that illustrate the use of various Android APIs. It includes samples of:
 </p>
 <ul>
-  <li>Notifications</li>  
-  <li>Alarms</li>  
-  <li>Progress Dialogs</li>  
-  <li>Intents</li>  
-  <li>Menus</li>  
-  <li>Search</li>  
-  <li>Persistent application state</li>  
-  <li>Preferences</li>  
-  <li>Background Services</li>  
-  <li>App Widgets</li>  
-  <li>Voice Recognition</li>  
-  <li>And many many more...</li>  
+  <li>Notifications</li>
+  <li>Alarms</li>
+  <li>Progress Dialogs</li>
+  <li>Intents</li>
+  <li>Menus</li>
+  <li>Search</li>
+  <li>Persistent application state</li>
+  <li>Preferences</li>
+  <li>Background Services</li>
+  <li>App Widgets</li>
+  <li>Voice Recognition</li>
+  <li>And many many more...</li>
 </ul>
 
 <div class="note">
@@ -36,6 +36,7 @@
 <li><a href="src/com/example/android/apis/graphics/TouchPaint.html">Stylus and hover
 support</a></li>
 <li><a href="src/com/example/android/apis/view/Switches.html">Switch widget</a></li>
+<li><a href="src/com/example/android/apis/accessibility/AccessibilityNodeProviderActivity.html">Accessibility Node Provider</a></li>
 <li><a
   href="src/com/example/android/apis/accessibility/TaskBackService.html">Window
   Querying Accessibility Service</a></li>
diff --git a/samples/ApiDemos/res/drawable-nodpi/frantic.jpg b/samples/ApiDemos/res/drawable-nodpi/frantic.jpg
index 7038ef3..4c62333 100644
--- a/samples/ApiDemos/res/drawable-nodpi/frantic.jpg
+++ b/samples/ApiDemos/res/drawable-nodpi/frantic.jpg
Binary files differ
diff --git a/samples/ApiDemos/res/layout/accessibility_node_provider.xml b/samples/ApiDemos/res/layout/accessibility_node_provider.xml
new file mode 100644
index 0000000..cc10c9c
--- /dev/null
+++ b/samples/ApiDemos/res/layout/accessibility_node_provider.xml
@@ -0,0 +1,34 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="50dip"
+        android:text="@string/accessibility_node_provider_instructions">
+    </TextView>
+
+    <view
+        class="com.example.android.apis.accessibility.AccessibilityNodeProviderActivity$VirtualSubtreeRootView"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+    </view>
+
+</LinearLayout>
diff --git a/samples/ApiDemos/res/layout/activity_animation.xml b/samples/ApiDemos/res/layout/activity_animation.xml
index 2432c90..9d956b5 100644
--- a/samples/ApiDemos/res/layout/activity_animation.xml
+++ b/samples/ApiDemos/res/layout/activity_animation.xml
@@ -23,20 +23,41 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/activity_animation_msg"/>
 
     <Button android:id="@+id/fade_animation"
-        android:layout_width="wrap_content" android:layout_height="wrap_content" 
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
         android:text="@string/activity_animation_fade">
         <requestFocus />
     </Button>
 
     <Button android:id="@+id/zoom_animation"
-        android:layout_width="wrap_content" android:layout_height="wrap_content" 
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
         android:text="@string/activity_animation_zoom">
     </Button>
 
+    <Button android:id="@+id/modern_fade_animation"
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:text="@string/activity_modern_animation_fade">
+        <requestFocus />
+    </Button>
+
+    <Button android:id="@+id/modern_zoom_animation"
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:text="@string/activity_modern_animation_zoom">
+    </Button>
+
+    <Button android:id="@+id/scale_up_animation"
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:text="@string/activity_scale_up_animation">
+    </Button>
+
+    <Button android:id="@+id/zoom_thumbnail_animation"
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:text="@string/activity_zoom_thumbnail_animation">
+    </Button>
+
 </LinearLayout>
 
diff --git a/samples/ApiDemos/res/layout/activity_finish_affinity.xml b/samples/ApiDemos/res/layout/activity_finish_affinity.xml
new file mode 100644
index 0000000..e6954d5
--- /dev/null
+++ b/samples/ApiDemos/res/layout/activity_finish_affinity.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:padding="4dip"
+    android:gravity="center_horizontal"
+    android:layout_width="match_parent" android:layout_height="match_parent">
+
+    <TextView
+        android:layout_width="match_parent" android:layout_height="wrap_content"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="No matter how deep you go, Activity.finishAffinity() will get you back."/>
+
+    <TextView android:id="@+id/seq"
+        android:layout_width="match_parent" android:layout_height="wrap_content"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
+
+    <Button android:id="@+id/nest"
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:text="Nest some more">
+        <requestFocus />
+    </Button>
+
+    <Button android:id="@+id/finish"
+        android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:text="FINISH!">
+        <requestFocus />
+    </Button>
+
+</LinearLayout>
diff --git a/samples/ApiDemos/res/layout/activity_recreate.xml b/samples/ApiDemos/res/layout/activity_recreate.xml
index d55dfbd..7a5efcb 100644
--- a/samples/ApiDemos/res/layout/activity_recreate.xml
+++ b/samples/ApiDemos/res/layout/activity_recreate.xml
@@ -14,9 +14,6 @@
      limitations under the License.
 -->
 
-<!-- Demonstrates starting and stopping a local service.
-     See corresponding Java code com.android.sdk.app.LocalSerice.java. -->
-
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" android:padding="4dip"
     android:gravity="center_horizontal"
@@ -24,8 +21,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/activity_recreate_msg"/>
 
     <Button android:id="@+id/recreate"
diff --git a/samples/ApiDemos/res/layout/alarm_controller.xml b/samples/ApiDemos/res/layout/alarm_controller.xml
index 97ad9f5..0a9d00c 100644
--- a/samples/ApiDemos/res/layout/alarm_controller.xml
+++ b/samples/ApiDemos/res/layout/alarm_controller.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/alarm_controller"/>
 
     <Button android:id="@+id/one_shot"
diff --git a/samples/ApiDemos/res/layout/alarm_service.xml b/samples/ApiDemos/res/layout/alarm_service.xml
index e7dac9d..bee1a06 100644
--- a/samples/ApiDemos/res/layout/alarm_service.xml
+++ b/samples/ApiDemos/res/layout/alarm_service.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/alarm_service"/>
 
     <Button android:id="@+id/start_alarm"
diff --git a/samples/ApiDemos/res/layout/clipboard.xml b/samples/ApiDemos/res/layout/clipboard.xml
index 645b1ea..8f844aa 100644
--- a/samples/ApiDemos/res/layout/clipboard.xml
+++ b/samples/ApiDemos/res/layout/clipboard.xml
@@ -21,87 +21,145 @@
     com.example.android.apis.content.ClipboardSample
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
-
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
+    <LinearLayout android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal">
+        android:orientation="vertical">
 
-        <Button android:id="@+id/copy_styled_text"
-            android:layout_width="wrap_content" android:layout_height="wrap_content"
-            android:onClick="pasteStyledText"
-            android:text="@string/copy_text" />
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <Button android:id="@+id/copy_styled_text"
+                android:layout_width="wrap_content" android:layout_height="wrap_content"
+                android:onClick="pasteStyledText"
+                android:text="@string/copy_text" />
+
+            <TextView
+                android:id="@+id/styled_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textStyle="normal" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <Button android:id="@+id/copy_plain_text"
+                android:layout_width="wrap_content" android:layout_height="wrap_content"
+                android:onClick="pastePlainText"
+                android:text="@string/copy_text" />
+
+            <TextView
+                android:id="@+id/plain_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textStyle="normal" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <Button android:id="@+id/copy_html_text"
+                android:layout_width="wrap_content" android:layout_height="wrap_content"
+                android:onClick="pasteHtmlText"
+                android:text="@string/copy_text" />
+
+            <TextView
+                android:id="@+id/html_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textStyle="normal" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <Button android:id="@+id/copy_intent"
+                android:layout_width="wrap_content" android:layout_height="wrap_content"
+                android:onClick="pasteIntent"
+                android:text="@string/copy_intent" />
+
+            <Button android:id="@+id/copy_uri"
+                android:layout_width="wrap_content" android:layout_height="wrap_content"
+                android:onClick="pasteUri"
+                android:text="@string/copy_uri" />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:text="Data type: " />
+
+            <Spinner android:id="@+id/clip_type"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:drawSelectorOnTop="true"
+                android:prompt="@string/clip_type_prompt"
+            />
+
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="4dp"
+            android:orientation="horizontal">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:text="MIME types: " />
+
+            <TextView
+                android:id="@+id/clip_mime_types"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:background="#ff303030"
+                android:padding="4dp"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                />
+
+            </LinearLayout>
 
         <TextView
-            android:id="@+id/styled_text"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:gravity="center_horizontal"
-            android:textStyle="normal" />
-
-    </LinearLayout>
-
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-        <Button android:id="@+id/copy_plain_text"
-            android:layout_width="wrap_content" android:layout_height="wrap_content"
-            android:onClick="pastePlainText"
-            android:text="@string/copy_text" />
+            android:layout_marginTop="4dp"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="Data content:" />
 
         <TextView
-            android:id="@+id/plain_text"
-            android:layout_width="wrap_content"
+            android:id="@+id/clip_text"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:gravity="center_horizontal"
-            android:textStyle="normal" />
+            android:background="#ff303030"
+            android:padding="4dp"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            />
 
     </LinearLayout>
-
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-        <Button android:id="@+id/copy_intent"
-            android:layout_width="wrap_content" android:layout_height="wrap_content"
-            android:onClick="pasteIntent"
-            android:text="@string/copy_intent" />
-
-        <Button android:id="@+id/copy_uri"
-            android:layout_width="wrap_content" android:layout_height="wrap_content"
-            android:onClick="pasteUri"
-            android:text="@string/copy_uri" />
-
-    </LinearLayout>
-
-    <Spinner android:id="@+id/clip_type"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:drawSelectorOnTop="true"
-        android:prompt="@string/clip_type_prompt"
-    />
-
-    <TextView
-        android:id="@+id/clip_mime_types"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:textStyle="normal"
-        />
-
-    <EditText
-        android:id="@+id/clip_text"
-        android:layout_width="match_parent"
-        android:layout_height="0px"
-        android:layout_weight="1"
-        android:textStyle="normal"
-        />
-
-</LinearLayout>
+</ScrollView>
\ No newline at end of file
diff --git a/samples/ApiDemos/res/layout/content_browser.xml b/samples/ApiDemos/res/layout/content_browser.xml
new file mode 100644
index 0000000..1d613d8
--- /dev/null
+++ b/samples/ApiDemos/res/layout/content_browser.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent" android:layout_height="match_parent"
+    >
+    <view class="com.example.android.apis.view.ContentBrowserActivity$Content"
+        android:id="@+id/content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        />
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fitsSystemWindows="true"
+        android:animateLayoutChanges="true"
+        >
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|center_horizontal"
+            android:textColor="#ff000000"
+            android:background="#c0ffffff"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:gravity="center"
+            android:padding="16dp"
+            android:text="A title goes here"
+            />
+        <SeekBar
+            android:id="@+id/seekbar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|center_horizontal"
+            android:layout_marginBottom="16dp"
+            />
+    </FrameLayout>
+</FrameLayout>
diff --git a/samples/ApiDemos/res/layout/foreground_service_controller.xml b/samples/ApiDemos/res/layout/foreground_service_controller.xml
index 076d4a3..7716150 100644
--- a/samples/ApiDemos/res/layout/foreground_service_controller.xml
+++ b/samples/ApiDemos/res/layout/foreground_service_controller.xml
@@ -24,8 +24,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/foreground_service_controller"/>
 
     <Button android:id="@+id/start_foreground"
diff --git a/samples/ApiDemos/res/layout/forward_target.xml b/samples/ApiDemos/res/layout/forward_target.xml
index b122955..d9c65ba 100644
--- a/samples/ApiDemos/res/layout/forward_target.xml
+++ b/samples/ApiDemos/res/layout/forward_target.xml
@@ -24,6 +24,7 @@
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
         android:layout_weight="0"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/forward_target"/>
 
 </LinearLayout>
diff --git a/samples/ApiDemos/res/layout/forwarding.xml b/samples/ApiDemos/res/layout/forwarding.xml
index 6f0d8a8..e8c5ea4 100644
--- a/samples/ApiDemos/res/layout/forwarding.xml
+++ b/samples/ApiDemos/res/layout/forwarding.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/forwarding"/>
 
     <Button android:id="@+id/go"
diff --git a/samples/ApiDemos/res/layout/intent_activity_flags.xml b/samples/ApiDemos/res/layout/intent_activity_flags.xml
index 610e2dd..79e881a 100644
--- a/samples/ApiDemos/res/layout/intent_activity_flags.xml
+++ b/samples/ApiDemos/res/layout/intent_activity_flags.xml
@@ -24,8 +24,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/intent_activity_flags"/>
 
     <Button android:id="@+id/flag_activity_clear_task"
diff --git a/samples/ApiDemos/res/layout/intents.xml b/samples/ApiDemos/res/layout/intents.xml
index 5531235..aed709d 100644
--- a/samples/ApiDemos/res/layout/intents.xml
+++ b/samples/ApiDemos/res/layout/intents.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/intents"/>
 
     <Button android:id="@+id/get_music"
diff --git a/samples/ApiDemos/res/layout/isolated_service_controller.xml b/samples/ApiDemos/res/layout/isolated_service_controller.xml
new file mode 100644
index 0000000..fa16cea
--- /dev/null
+++ b/samples/ApiDemos/res/layout/isolated_service_controller.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- Demonstrates isolated services.
+     See corresponding Java code com.android.sdk.app.IsolatedSerice.java. -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical" android:padding="4dip"
+    android:gravity="center_horizontal"
+    android:layout_width="match_parent" android:layout_height="match_parent">
+
+    <TextView
+        android:layout_width="match_parent" android:layout_height="wrap_content"
+        android:layout_weight="0"
+        android:paddingBottom="4dip"
+        android:gravity="center_vertical|center_horizontal"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/isolated_service_controller"/>
+
+    <LinearLayout android:orientation="horizontal" android:paddingTop="16dp"
+        android:layout_width="wrap_content" android:layout_height="wrap_content">
+    
+        <Button android:id="@+id/start1"
+            android:layout_width="wrap_content" android:layout_height="wrap_content" 
+            android:text="@string/start_service_1">
+            <requestFocus />
+        </Button>
+    
+        <Button android:id="@+id/stop1"
+            android:layout_width="wrap_content" android:layout_height="wrap_content" 
+            android:text="@string/stop_service_1">
+        </Button>
+    </LinearLayout>
+
+    <LinearLayout android:orientation="horizontal"
+        android:layout_width="wrap_content" android:layout_height="wrap_content">
+        <CheckBox android:id="@+id/bind1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/bind_service_1" />
+        <TextView android:id="@+id/status1"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingLeft="16dp" />
+    </LinearLayout>
+
+    <LinearLayout android:orientation="horizontal" android:paddingTop="16dp"
+        android:layout_width="wrap_content" android:layout_height="wrap_content">
+    
+        <Button android:id="@+id/start2"
+            android:layout_width="wrap_content" android:layout_height="wrap_content" 
+            android:text="@string/start_service_2">
+            <requestFocus />
+        </Button>
+    
+        <Button android:id="@+id/stop2"
+            android:layout_width="wrap_content" android:layout_height="wrap_content" 
+            android:text="@string/stop_service_2">
+        </Button>
+    </LinearLayout>
+
+    <LinearLayout android:orientation="horizontal"
+        android:layout_width="wrap_content" android:layout_height="wrap_content">
+        <CheckBox android:id="@+id/bind2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/bind_service_2" />
+        <TextView android:id="@+id/status2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingLeft="16dp" />
+    </LinearLayout>
+
+</LinearLayout>
+
diff --git a/samples/ApiDemos/res/layout/local_sample.xml b/samples/ApiDemos/res/layout/local_sample.xml
index 70a9c6b..4700d57 100644
--- a/samples/ApiDemos/res/layout/local_sample.xml
+++ b/samples/ApiDemos/res/layout/local_sample.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/local_sample"/>
 
     <Button android:id="@+id/go"
diff --git a/samples/ApiDemos/res/layout/local_service_binding.xml b/samples/ApiDemos/res/layout/local_service_binding.xml
index 6f04ab1..71b5872 100644
--- a/samples/ApiDemos/res/layout/local_service_binding.xml
+++ b/samples/ApiDemos/res/layout/local_service_binding.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/local_service_binding"/>
 
     <Button android:id="@+id/bind"
diff --git a/samples/ApiDemos/res/layout/local_service_controller.xml b/samples/ApiDemos/res/layout/local_service_controller.xml
index 30298d0..4f2aa63 100644
--- a/samples/ApiDemos/res/layout/local_service_controller.xml
+++ b/samples/ApiDemos/res/layout/local_service_controller.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/local_service_controller"/>
 
     <Button android:id="@+id/start"
diff --git a/samples/ApiDemos/res/layout/messenger_service_binding.xml b/samples/ApiDemos/res/layout/messenger_service_binding.xml
index 23cf63e..8b6ee27 100644
--- a/samples/ApiDemos/res/layout/messenger_service_binding.xml
+++ b/samples/ApiDemos/res/layout/messenger_service_binding.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/messenger_service_binding"/>
 
     <Button android:id="@+id/bind"
@@ -41,6 +41,7 @@
     <TextView android:id="@+id/callback"
         android:layout_width="match_parent" android:layout_height="wrap_content"
         android:layout_weight="0"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:gravity="center_horizontal" android:paddingTop="4dip"/>
 
 </LinearLayout>
diff --git a/samples/ApiDemos/res/layout/overscan.xml b/samples/ApiDemos/res/layout/overscan.xml
index 3112e18..ebae5cc 100644
--- a/samples/ApiDemos/res/layout/overscan.xml
+++ b/samples/ApiDemos/res/layout/overscan.xml
@@ -24,56 +24,179 @@
         android:layout_height="match_parent"
         android:scaleType="center"
         />
-    <LinearLayout
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="25dp"
-        android:layout_marginRight="25dp"
-        android:layout_marginBottom="25dp"
-        android:layout_gravity="bottom|center"
-        android:background="#60000000"
-        android:padding="8dp"
-        android:orientation="horizontal"
-        >
+        android:layout_height="match_parent"
+        android:fitsSystemWindows="true">
         <LinearLayout
-            android:layout_width="wrap_content"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_weight="1"
+            android:layout_marginLeft="25dp"
+            android:layout_marginRight="25dp"
+            android:layout_marginBottom="25dp"
+            android:layout_gravity="bottom|center"
+            android:background="#60000000"
+            android:padding="8dp"
             android:orientation="vertical"
             >
-            <TextView
-                android:id="@+id/text1"
-                android:layout_width="wrap_content"
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:textColor="#FFFFFFFF"
-                android:textSize="16dp"
-                android:textStyle="bold"
-                android:gravity="left"
-                />
+                android:orientation="horizontal"
+                android:baselineAligned="true"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="#FFFFFFFF"
+                    android:textSize="16dp"
+                    android:textStyle="bold"
+                    android:gravity="left"
+                    android:text="Mode:"
+                    />
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:baselineAlignedChildIndex="0"
+                    >
+                    <CheckBox
+                        android:id="@+id/modeLowProfile"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="#FFFFFFFF"
+                        android:text="LOW_PROFILE"
+                        />
+                    <CheckBox
+                        android:id="@+id/modeFullscreen"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="-10dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="FULLSCREEN"
+                        />
+                    <CheckBox
+                        android:id="@+id/modeHideNavigation"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="-10dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="HIDE_NAVIGATION"
+                        />
+                </LinearLayout>
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:baselineAligned="true"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="#FFFFFFFF"
+                    android:textSize="16dp"
+                    android:textStyle="bold"
+                    android:gravity="left"
+                    android:text="Layout:"
+                    />
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:baselineAlignedChildIndex="0"
+                    >
+                    <CheckBox
+                        android:id="@+id/layoutStable"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="#FFFFFFFF"
+                        android:text="STABLE"
+                        />
+                    <CheckBox
+                        android:id="@+id/layoutFullscreen"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="-10dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="FULLSCREEN"
+                        />
+                    <CheckBox
+                        android:id="@+id/layoutHideNavigation"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="-10dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="HIDE_NAVIGATION"
+                        />
+                </LinearLayout>
+            </LinearLayout>
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:baselineAligned="true"
+                >
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textColor="#FFFFFFFF"
+                    android:textSize="16dp"
+                    android:textStyle="bold"
+                    android:gravity="left"
+                    android:text="Window:"
+                    />
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:baselineAlignedChildIndex="0"
+                    >
+                    <CheckBox
+                        android:id="@+id/windowFullscreen"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textColor="#FFFFFFFF"
+                        android:text="FULLSCREEN"
+                        />
+                    <CheckBox
+                        android:id="@+id/windowHideActionBar"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="-10dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="Hide ActionBar"
+                        />
+                    <CheckBox
+                        android:id="@+id/windowActionMode"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="-10dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="Action Mode"
+                        />
+                    <!-- Crappy hack to make these the same size as the
+                         above groups.  You'd never do this in real code. -->
+                    <CheckBox
+                        android:layout_width="wrap_content"
+                        android:layout_height="0dp"
+                        android:textColor="#FFFFFFFF"
+                        android:text="HIDE_NAVIGATION"
+                        />
+                </LinearLayout>
+            </LinearLayout>
             <TextView
-                android:id="@+id/text2"
-                android:layout_width="wrap_content"
+                android:id="@+id/metricsText"
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:textColor="#FFFFFFFF"
                 android:textSize="11dp"
                 android:textStyle="bold"
-                android:gravity="left"
+                android:gravity="center"
                 />
         </LinearLayout>
-        <TextView
-            android:id="@+id/switchy"
-            android:background="#C0000000"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="bottom"
-            android:layout_marginTop="4dp"
-            android:padding="10dp"
-            android:textColor="#FFFFFFFF"
-            android:textSize="11dp"
-            android:textStyle="bold"
-            android:clickable="true"
-            android:onClick="clicked"
-            android:text="Switch"
-            />
-    </LinearLayout>
+    </FrameLayout>
 </FrameLayout>
diff --git a/samples/ApiDemos/res/layout/redirect_enter.xml b/samples/ApiDemos/res/layout/redirect_enter.xml
index 6b4493e..d1cd4f4 100644
--- a/samples/ApiDemos/res/layout/redirect_enter.xml
+++ b/samples/ApiDemos/res/layout/redirect_enter.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/redirect_enter"/>
 
     <Button android:id="@+id/go"
diff --git a/samples/ApiDemos/res/layout/redirect_getter.xml b/samples/ApiDemos/res/layout/redirect_getter.xml
index c4e3bd7..29d633f 100644
--- a/samples/ApiDemos/res/layout/redirect_getter.xml
+++ b/samples/ApiDemos/res/layout/redirect_getter.xml
@@ -23,14 +23,13 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/redirect_getter"/>
 
     <EditText android:id="@+id/text"
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip">
+        android:layout_weight="0" android:paddingBottom="4dip">
         <requestFocus />
     </EditText>
 
diff --git a/samples/ApiDemos/res/layout/redirect_main.xml b/samples/ApiDemos/res/layout/redirect_main.xml
index a54a9df..6970082 100644
--- a/samples/ApiDemos/res/layout/redirect_main.xml
+++ b/samples/ApiDemos/res/layout/redirect_main.xml
@@ -23,14 +23,14 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/redirect_main"/>
 
     <TextView android:id="@+id/text"
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip" />
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
 
     <Button android:id="@+id/clear"
         android:layout_width="wrap_content" android:layout_height="wrap_content" 
diff --git a/samples/ApiDemos/res/layout/remote_binding_options.xml b/samples/ApiDemos/res/layout/remote_binding_options.xml
index aec33f8..b6e4ff5 100644
--- a/samples/ApiDemos/res/layout/remote_binding_options.xml
+++ b/samples/ApiDemos/res/layout/remote_binding_options.xml
@@ -23,14 +23,15 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="Demonstrates various options that can be used when binding to a service to modify its process management."/>
 
     <TextView android:id="@+id/callback"
         android:layout_width="match_parent" android:layout_height="wrap_content"
         android:layout_weight="0"
-        android:gravity="center_horizontal" android:paddingBottom="4dip"/>
+        android:gravity="center_horizontal" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
 
     <ScrollView android:layout_width="match_parent" android:layout_height="match_parent">
         <LinearLayout android:orientation="vertical"
diff --git a/samples/ApiDemos/res/layout/remote_service_binding.xml b/samples/ApiDemos/res/layout/remote_service_binding.xml
index cc408d1..1998b1c 100644
--- a/samples/ApiDemos/res/layout/remote_service_binding.xml
+++ b/samples/ApiDemos/res/layout/remote_service_binding.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/remote_service_binding"/>
 
     <Button android:id="@+id/bind"
@@ -46,7 +46,8 @@
     <TextView android:id="@+id/callback"
         android:layout_width="match_parent" android:layout_height="wrap_content"
         android:layout_weight="0"
-        android:gravity="center_horizontal" android:paddingTop="4dip"/>
+        android:gravity="center_horizontal" android:paddingTop="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium" />
 
 </LinearLayout>
 
diff --git a/samples/ApiDemos/res/layout/remote_service_controller.xml b/samples/ApiDemos/res/layout/remote_service_controller.xml
index 61d770f..9153523 100644
--- a/samples/ApiDemos/res/layout/remote_service_controller.xml
+++ b/samples/ApiDemos/res/layout/remote_service_controller.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/remote_service_controller"/>
 
     <Button android:id="@+id/start"
diff --git a/samples/ApiDemos/res/layout/reorder_four.xml b/samples/ApiDemos/res/layout/reorder_four.xml
index a5c22b5..314c269 100644
--- a/samples/ApiDemos/res/layout/reorder_four.xml
+++ b/samples/ApiDemos/res/layout/reorder_four.xml
@@ -26,8 +26,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/reorder_four_text"/>
 
     <Button android:id="@+id/reorder_second_to_front"
diff --git a/samples/ApiDemos/res/layout/reorder_on_launch.xml b/samples/ApiDemos/res/layout/reorder_on_launch.xml
index 981b3f4..c4f4957 100644
--- a/samples/ApiDemos/res/layout/reorder_on_launch.xml
+++ b/samples/ApiDemos/res/layout/reorder_on_launch.xml
@@ -26,8 +26,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/reorder_on_launch"/>
 
     <Button android:id="@+id/reorder_launch_two"
diff --git a/samples/ApiDemos/res/layout/reorder_three.xml b/samples/ApiDemos/res/layout/reorder_three.xml
index 51a8d0c..36bf47c 100644
--- a/samples/ApiDemos/res/layout/reorder_three.xml
+++ b/samples/ApiDemos/res/layout/reorder_three.xml
@@ -26,8 +26,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/reorder_three_text"/>
 
     <Button android:id="@+id/reorder_launch_four"
diff --git a/samples/ApiDemos/res/layout/reorder_two.xml b/samples/ApiDemos/res/layout/reorder_two.xml
index 6fadca0..b6f5cbb 100644
--- a/samples/ApiDemos/res/layout/reorder_two.xml
+++ b/samples/ApiDemos/res/layout/reorder_two.xml
@@ -26,8 +26,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/reorder_two_text"/>
 
     <Button android:id="@+id/reorder_launch_three"
diff --git a/samples/ApiDemos/res/layout/screen_orientation.xml b/samples/ApiDemos/res/layout/screen_orientation.xml
index b5943e2..8129108 100644
--- a/samples/ApiDemos/res/layout/screen_orientation.xml
+++ b/samples/ApiDemos/res/layout/screen_orientation.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/screen_orientation_summary"/>
 
     <Spinner android:id="@+id/orientation"
diff --git a/samples/ApiDemos/res/layout/service_start_arguments_controller.xml b/samples/ApiDemos/res/layout/service_start_arguments_controller.xml
index 556dffc..bcf4a65 100644
--- a/samples/ApiDemos/res/layout/service_start_arguments_controller.xml
+++ b/samples/ApiDemos/res/layout/service_start_arguments_controller.xml
@@ -23,8 +23,8 @@
 
     <TextView
         android:layout_width="match_parent" android:layout_height="wrap_content"
-        android:layout_weight="0"
-        android:paddingBottom="4dip"
+        android:layout_weight="0" android:paddingBottom="4dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
         android:text="@string/service_start_arguments_controller"/>
 
     <Button android:id="@+id/start1"
diff --git a/samples/ApiDemos/res/layout/video_player.xml b/samples/ApiDemos/res/layout/video_player.xml
new file mode 100644
index 0000000..82cc1d0
--- /dev/null
+++ b/samples/ApiDemos/res/layout/video_player.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- BEGIN_INCLUDE(complete) -->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent" android:layout_height="match_parent"
+    >
+    <view class="com.example.android.apis.view.VideoPlayerActivity$Content"
+        android:id="@+id/content"
+        android:src="@drawable/frantic"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="center"
+        />
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fitsSystemWindows="true"
+        android:animateLayoutChanges="true"
+        >
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|center_horizontal"
+            android:textColor="#ffffffff"
+            android:background="#a0000000"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:gravity="left"
+            android:padding="16dp"
+            android:text="A title goes here"
+            />
+        <Button
+            android:id="@+id/play"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:textSize="28dp"
+            />
+        <SeekBar
+            android:id="@+id/seekbar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="bottom|center_horizontal"
+            android:layout_marginBottom="16dp"
+            />
+    </FrameLayout>
+</FrameLayout>
+<!-- END_INCLUDE(complete) -->
diff --git a/samples/ApiDemos/res/layout/webview_1.xml b/samples/ApiDemos/res/layout/webview_1.xml
index 67cea3a..e70db5f 100644
--- a/samples/ApiDemos/res/layout/webview_1.xml
+++ b/samples/ApiDemos/res/layout/webview_1.xml
@@ -29,51 +29,6 @@
             android:layout_height="wrap_content"
             android:layout_width="match_parent"
             />
-            
-        <WebView android:id="@+id/wv2"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv3"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv4"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv5"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv6"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-    
-        <WebView android:id="@+id/wv7"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv8"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv9"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
-            
-        <WebView android:id="@+id/wv10"
-            android:layout_height="wrap_content"
-            android:layout_width="match_parent"
-            />
     </LinearLayout>
         
  </ScrollView>        
diff --git a/samples/ApiDemos/res/menu/content_actions.xml b/samples/ApiDemos/res/menu/content_actions.xml
new file mode 100644
index 0000000..84d783f
--- /dev/null
+++ b/samples/ApiDemos/res/menu/content_actions.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 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.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/action_search"
+          android:icon="@android:drawable/ic_menu_search"
+          android:title="@string/action_bar_search"
+          android:showAsAction="always"
+          android:actionViewClass="android.widget.SearchView" />
+    <item android:id="@+id/menu_item_share_action_provider_action_bar"
+          android:showAsAction="always"
+          android:title="@string/action_bar_share_with"
+          android:actionProviderClass="android.widget.ShareActionProvider" />
+    <group android:id="@+id/show_tabs_group"
+            android:checkableBehavior="single">
+        <item android:id="@+id/show_tabs"
+                android:title="Show Tabs"
+                android:showAsAction="never" />
+        <item android:id="@+id/hide_tabs"
+                android:title="Hide Tabs"
+                android:checked="true"
+                android:showAsAction="never" />
+    </group>
+    <group android:id="@+id/stable_layout_group"
+            android:checkableBehavior="all">
+        <item android:id="@+id/stable_layout"
+                android:title="Stable Layout"
+                android:checked="true"
+                android:showAsAction="never" />
+    </group>
+    <item android:id="@+id/action_share"
+          android:icon="@android:drawable/ic_menu_share"
+          android:title="@string/action_bar_share"
+          android:showAsAction="ifRoom" />
+    <item android:id="@+id/action_sort"
+          android:icon="@android:drawable/ic_menu_sort_by_size"
+          android:title="@string/action_bar_sort"
+          android:showAsAction="ifRoom">
+        <menu>
+            <item android:id="@+id/action_sort_size"
+                  android:icon="@android:drawable/ic_menu_sort_by_size"
+                  android:title="@string/action_bar_sort_size"
+                  android:onClick="onSort" />
+            <item android:id="@+id/action_sort_alpha"
+                  android:icon="@android:drawable/ic_menu_sort_alphabetically"
+                  android:title="@string/action_bar_sort_alpha"
+                  android:onClick="onSort" />
+        </menu>
+    </item>
+</menu>
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/ApiDemos/res/values-v16/bools.xml
similarity index 69%
copy from samples/NFCDemo/res/layout/tag_divider.xml
copy to samples/ApiDemos/res/values-v16/bools.xml
index b6b1b7c..4eb3b40 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/ApiDemos/res/values-v16/bools.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -15,8 +14,7 @@
      limitations under the License.
 -->
 
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+<resources>
+    <!-- True if running under JellyBean or later. -->
+    <bool name="atLeastJellyBean">true</bool>
+</resources>
diff --git a/samples/ApiDemos/res/values/arrays.xml b/samples/ApiDemos/res/values/arrays.xml
index aac4f79..1508613 100644
--- a/samples/ApiDemos/res/values/arrays.xml
+++ b/samples/ApiDemos/res/values/arrays.xml
@@ -42,8 +42,12 @@
     <string-array name="clip_data_types">
         <item>No data in clipboard</item>
         <item>Text clip</item>
+        <item>HTML Text clip</item>
         <item>Intent clip</item>
         <item>Uri clip</item>
+        <item>Coerce to text</item>
+        <item>Coerce to styled text</item>
+        <item>Coerce to HTML text</item>
     </string-array>
 
     <!-- Used in App/SearchInvoke.java -->
diff --git a/samples/ApiDemos/res/values/bools.xml b/samples/ApiDemos/res/values/bools.xml
index bc48079..c112fb4 100644
--- a/samples/ApiDemos/res/values/bools.xml
+++ b/samples/ApiDemos/res/values/bools.xml
@@ -29,4 +29,9 @@
          for IceCreamSandwich is true. -->
     <bool name="atLeastIceCreamSandwich">false</bool>
 
+    <!-- This resource is true if running under at least JellyBean
+         API level.  The default value is false; an alternative value
+         for JellyBean is true. -->
+    <bool name="atLeastJellyBean">false</bool>
+
 </resources>
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index c637655..a64de16 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -64,6 +64,10 @@
     <string name="activity_animation_msg">Press a button to launch an activity with a custom animation.</string>
     <string name="activity_animation_fade">Fade in</string>
     <string name="activity_animation_zoom">Zoom in</string>
+    <string name="activity_modern_animation_fade">Modern fade in</string>
+    <string name="activity_modern_animation_zoom">Modern zoom in</string>
+    <string name="activity_scale_up_animation">Scale up</string>
+    <string name="activity_zoom_thumbnail_animation">Thumbnail zoom</string>
 
     <string name="activity_save_restore">App/Activity/Save &amp; Restore State</string>
     <string name="save_restore_msg">Demonstration of saving and restoring activity state in onSaveInstanceState() and onCreate().</string>
@@ -88,6 +92,8 @@
         it reconstructed with significant new changes.  In this case the theme is changed.</string>
     <string name="recreate">Recreate</string>
 
+    <string name="activity_finish_affinity">App/Activity/Finish Affinity</string>
+
     <string name="activity_receive_result">App/Activity/Receive Result</string>
     <string name="pick_result">Pick a result to send, or BACK to cancel.</string>
     <string name="corky">Corky</string>
@@ -159,6 +165,8 @@
 
     <string name="loader_cursor">App/Loader/Cursor</string>
 
+    <string name="loader_retained">App/Loader/Retained</string>
+
     <string name="loader_custom">App/Loader/Custom</string>
 
     <string name="loader_throttle">App/Loader/Throttle</string>
@@ -239,6 +247,20 @@
     <string name="start_service_foreground">Start Service Foreground</string>
     <string name="start_service_background">Start Service Background</string>
 
+    <string name="activity_isolated_service_controller">App/Service/Isolated Service Controller</string>
+    <string name="isolated_service_controller">This demonstrates the use of android:isolatedProcess
+            with services.  There are two services, which can be independently controlled; they will
+            each run in their own isolated process</string>
+    <string name="start_service_1">Start Service 1</string>
+    <string name="stop_service_1">Stop Service 1</string>
+    <string name="bind_service_1">Bind Service 1</string>
+    <string name="start_service_2">Start Service 2</string>
+    <string name="stop_service_2">Stop Service 2</string>
+    <string name="bind_service_2">Bind Service 2</string>
+    <string name="isolated_service_1_started">Isolated service 1 has started</string>
+    <string name="isolated_service_1_stopped">Isolated service 1 has stopped</string>
+    <string name="isolated_service_1_label">Sample Isolated Service 1</string>
+
     <string name="one_shot_received">The one-shot alarm has gone off</string>
     <string name="repeating_received">The repeating alarm has gone off</string>
 
@@ -1245,6 +1267,9 @@
     <string name="chronometer_clear_format">Clear format string</string>
     <string name="chronometer_initial_format">Initial format: <xliff:g id="initial-format">%s</xliff:g></string>
 
+    <string name="play">Play</string>
+    <string name="pause">Pause</string>
+
     <!-- ============================ -->
     <!--  vibrator examples strings  -->
     <!-- ============================ -->
@@ -1297,6 +1322,10 @@
     <!--  Accessibility examples strings  -->
     <!-- ============================ -->
 
+    <string name="accessibility_node_provider">Accessibility/Accessibility Node Provider</string>
+    <string name="accessibility_node_provider_instructions">Enable TalkBack and Explore-by-touch from accessibility
+        settings. Then touch the colored squares.</string>
+
     <string name="accessibility_service">Accessibility/Accessibility Service</string>
     <string name="accessibility_service_label">ClockBack</string>
     <string name="accessibility_service_instructions">
diff --git a/samples/ApiDemos/src/com/example/android/apis/accessibility/AccessibilityNodeProviderActivity.java b/samples/ApiDemos/src/com/example/android/apis/accessibility/AccessibilityNodeProviderActivity.java
new file mode 100644
index 0000000..1ca036a
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/accessibility/AccessibilityNodeProviderActivity.java
@@ -0,0 +1,484 @@
+/*
+ * 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.apis.accessibility;
+
+import com.example.android.apis.R;
+
+import android.app.Activity;
+import android.app.Service;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.AccessibilityNodeInfo;
+import android.view.accessibility.AccessibilityNodeProvider;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * This sample demonstrates how a View can expose a virtual view sub-tree
+ * rooted at it. A virtual sub-tree is composed of imaginary Views
+ * that are reported as a part of the view hierarchy for accessibility
+ * purposes. This enables custom views that draw complex content to report
+ * them selves as a tree of virtual views, thus conveying their logical
+ * structure.
+ * <p>
+ * For example, a View may draw a monthly calendar as a grid of days while
+ * each such day may contains some events. From a perspective of the View
+ * hierarchy the calendar is composed of a single View but an accessibility
+ * service would benefit of traversing the logical structure of the calendar
+ * by examining each day and each event on that day.
+ * </p>
+ */
+public class AccessibilityNodeProviderActivity extends Activity {
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.accessibility_node_provider);
+    }
+
+   /**
+    * This class presents a View that is composed of three virtual children
+    * each of which is drawn with a different color and represents a region
+    * of the View that has different semantics compared to other such regions.
+    * While the virtual view tree exposed by this class is one level deep
+    * for simplicity, there is no bound on the complexity of that virtual
+    * sub-tree.
+    */
+    public static class VirtualSubtreeRootView extends View {
+
+        /** Paint object for drawing the virtual sub-tree */
+        private final Paint mPaint = new Paint();
+
+        /** Temporary rectangle to minimize object creation. */
+        private final Rect mTempRect = new Rect();
+
+        /** Handle to the system accessibility service. */
+        private final AccessibilityManager mAccessibilityManager;
+
+        /** The virtual children of this View. */
+        private final List<VirtualView> mChildren = new ArrayList<VirtualView>();
+
+        /** The instance of the node provider for the virtual tree - lazily instantiated. */
+        private AccessibilityNodeProvider mAccessibilityNodeProvider;
+
+        /** The last hovered child used for event dispatching. */
+        private VirtualView mLastHoveredChild;
+
+        public VirtualSubtreeRootView(Context context, AttributeSet attrs) {
+            super(context, attrs);
+            mAccessibilityManager = (AccessibilityManager) context.getSystemService(
+                    Service.ACCESSIBILITY_SERVICE);
+            createVirtualChildren();
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public AccessibilityNodeProvider getAccessibilityNodeProvider() {
+            // Instantiate the provide only when requested. Since the system
+            // will call this method multiple times it is a good practice to
+            // cache the provider instance.
+            if (mAccessibilityNodeProvider == null) {
+                mAccessibilityNodeProvider = new VirtualDescendantsProvider();
+            }
+            return mAccessibilityNodeProvider;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public boolean dispatchHoverEvent(MotionEvent event) {
+            // This implementation assumes that the virtual children
+            // cannot overlap and are always visible. Do NOT use this
+            // code as a reference of how to implement hover event
+            // dispatch. Instead, refer to ViewGroup#dispatchHoverEvent.
+            boolean handled = false;
+            List<VirtualView> children = mChildren;
+            final int childCount = children.size();
+            for (int i = 0; i < childCount; i++) {
+                VirtualView child = children.get(i);
+                Rect childBounds = child.mBounds;
+                final int childCoordsX = (int) event.getX() + getScrollX();
+                final int childCoordsY = (int) event.getY() + getScrollY();
+                if (!childBounds.contains(childCoordsX, childCoordsY)) {
+                    continue;
+                }
+                final int action = event.getAction();
+                switch (action) {
+                    case MotionEvent.ACTION_HOVER_ENTER: {
+                        mLastHoveredChild = child;
+                        handled |= onHoverVirtualView(child, event);
+                        event.setAction(action);
+                    } break;
+                    case MotionEvent.ACTION_HOVER_MOVE: {
+                        if (child == mLastHoveredChild) {
+                            handled |= onHoverVirtualView(child, event);
+                            event.setAction(action);
+                        } else {
+                            MotionEvent eventNoHistory = event.getHistorySize() > 0
+                                ? MotionEvent.obtainNoHistory(event) : event;
+                            eventNoHistory.setAction(MotionEvent.ACTION_HOVER_EXIT);
+                            onHoverVirtualView(mLastHoveredChild, eventNoHistory);
+                            eventNoHistory.setAction(MotionEvent.ACTION_HOVER_ENTER);
+                            onHoverVirtualView(child, eventNoHistory);
+                            mLastHoveredChild = child;
+                            eventNoHistory.setAction(MotionEvent.ACTION_HOVER_MOVE);
+                            handled |= onHoverVirtualView(child, eventNoHistory);
+                            if (eventNoHistory != event) {
+                                eventNoHistory.recycle();
+                            } else {
+                                event.setAction(action);
+                            }
+                        }
+                    } break;
+                    case MotionEvent.ACTION_HOVER_EXIT: {
+                        mLastHoveredChild = null;
+                        handled |= onHoverVirtualView(child, event);
+                        event.setAction(action);
+                    } break;
+                }
+            }
+            if (!handled) {
+                handled |= onHoverEvent(event);
+            }
+            return handled;
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+            // The virtual children are ordered horizontally next to
+            // each other and take the entire space of this View.
+            int offsetX = 0;
+            List<VirtualView> children = mChildren;
+            final int childCount = children.size();
+            for (int i = 0; i < childCount; i++) {
+                VirtualView child = children.get(i);
+                Rect childBounds = child.mBounds;
+                childBounds.set(offsetX, 0, offsetX + childBounds.width(), childBounds.height());
+                offsetX += childBounds.width();
+            }
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+            // The virtual children are ordered horizontally next to
+            // each other and take the entire space of this View.
+            int width = 0;
+            int height = 0;
+            List<VirtualView> children = mChildren;
+            final int childCount = children.size();
+            for (int i = 0; i < childCount; i++) {
+                VirtualView child = children.get(i);
+                width += child.mBounds.width();
+                height = Math.max(height, child.mBounds.height());
+            }
+            setMeasuredDimension(width, height);
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        protected void onDraw(Canvas canvas) {
+            // Draw the virtual children with the reusable Paint object
+            // and with the bounds and color which are child specific.
+            Rect drawingRect = mTempRect;
+            List<VirtualView> children = mChildren;
+            final int childCount = children.size();
+            for (int i = 0; i < childCount; i++) {
+                VirtualView child = children.get(i);
+                drawingRect.set(child.mBounds);
+                mPaint.setColor(child.mColor);
+                mPaint.setAlpha(child.mAlpha);
+                canvas.drawRect(drawingRect, mPaint);
+            }
+        }
+
+        /**
+         * Creates the virtual children of this View.
+         */
+        private void createVirtualChildren() {
+            // The virtual portion of the tree is one level deep. Note
+            // that implementations can use any way of representing and
+            // drawing virtual view.
+            VirtualView firstChild = new VirtualView(0, new Rect(0, 0, 150, 150), Color.RED,
+                    "Virtual view 1");
+            mChildren.add(firstChild);
+            VirtualView secondChild = new VirtualView(1, new Rect(0, 0, 150, 150), Color.GREEN,
+                    "Virtual view 2");
+            mChildren.add(secondChild);
+            VirtualView thirdChild = new VirtualView(2, new Rect(0, 0, 150, 150), Color.BLUE,
+                    "Virtual view 3");
+            mChildren.add(thirdChild);
+        }
+
+        /**
+         * Set the selected state of a virtual view.
+         *
+         * @param virtualView The virtual view whose selected state to set.
+         * @param selected Whether the virtual view is selected.
+         */
+        private void setVirtualViewSelected(VirtualView virtualView, boolean selected) {
+            virtualView.mAlpha = selected ? VirtualView.ALPHA_SELECTED : VirtualView.ALPHA_NOT_SELECTED;
+        }
+
+        /**
+         * Handle a hover over a virtual view.
+         *
+         * @param virtualView The virtual view over which is hovered.
+         * @param event The event to dispatch.
+         * @return Whether the event was handled.
+         */
+        private boolean onHoverVirtualView(VirtualView virtualView, MotionEvent event) {
+            // The implementation of hover event dispatch can be implemented
+            // in any way that is found suitable. However, each virtual View
+            // should fire a corresponding accessibility event whose source
+            // is that virtual view. Accessibility services get the event source
+            // as the entry point of the APIs for querying the window content.
+            final int action = event.getAction();
+            switch (action) {
+                case MotionEvent.ACTION_HOVER_ENTER: {
+                    sendAccessibilityEventForVirtualView(virtualView,
+                            AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);
+                } break;
+                case MotionEvent.ACTION_HOVER_EXIT: {
+                    sendAccessibilityEventForVirtualView(virtualView,
+                            AccessibilityEvent.TYPE_VIEW_HOVER_EXIT);
+                } break;
+            }
+            return true;
+        }
+
+        /**
+         * Sends a properly initialized accessibility event for a virtual view..
+         *
+         * @param virtualView The virtual view.
+         * @param eventType The type of the event to send.
+         */
+        private void sendAccessibilityEventForVirtualView(VirtualView virtualView, int eventType) {
+            // If touch exploration, i.e. the user gets feedback while touching
+            // the screen, is enabled we fire accessibility events.
+            if (mAccessibilityManager.isTouchExplorationEnabled()) {
+                AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
+                event.setPackageName(getContext().getPackageName());
+                event.setClassName(virtualView.getClass().getName());
+                event.setSource(VirtualSubtreeRootView.this, virtualView.mId);
+                event.getText().add(virtualView.mText);
+                getParent().requestSendAccessibilityEvent(VirtualSubtreeRootView.this, event);
+            }
+        }
+
+        /**
+         * Finds a virtual view given its id.
+         *
+         * @param id The virtual view id.
+         * @return The found virtual view.
+         */
+        private VirtualView findVirtualViewById(int id) {
+            List<VirtualView> children = mChildren;
+            final int childCount = children.size();
+            for (int i = 0; i < childCount; i++) {
+                VirtualView child = children.get(i);
+                if (child.mId == id) {
+                    return child;
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Represents a virtual View.
+         */
+        private class VirtualView {
+            public static final int ALPHA_SELECTED = 255;
+            public static final int ALPHA_NOT_SELECTED = 127;
+
+            public final int mId;
+            public final int mColor;
+            public final Rect mBounds;
+            public final String mText;
+            public int mAlpha;
+
+            public VirtualView(int id, Rect bounds, int color, String text) {
+                mId = id;
+                mColor = color;
+                mBounds = bounds;
+                mText = text;
+                mAlpha = ALPHA_NOT_SELECTED;
+            }
+        }
+
+        /**
+         * This is the provider that exposes the virtual View tree to accessibility
+         * services. From the perspective of an accessibility service the
+         * {@link AccessibilityNodeInfo}s it receives while exploring the sub-tree
+         * rooted at this View will be the same as the ones it received while
+         * exploring a View containing a sub-tree composed of real Views.
+         */
+        private class VirtualDescendantsProvider extends AccessibilityNodeProvider {
+
+            /**
+             * {@inheritDoc}
+             */
+            @Override
+            public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
+                AccessibilityNodeInfo info = null;
+                if (virtualViewId == View.NO_ID) {
+                    // We are requested to create an AccessibilityNodeInfo describing
+                    // this View, i.e. the root of the virtual sub-tree. Note that the
+                    // host View has an AccessibilityNodeProvider which means that this
+                    // provider is responsible for creating the node info for that root.
+                    info = AccessibilityNodeInfo.obtain(VirtualSubtreeRootView.this);
+                    onInitializeAccessibilityNodeInfo(info);
+                    // Add the virtual children of the root View.
+                    List<VirtualView> children = mChildren;
+                    final int childCount = children.size();
+                    for (int i = 0; i < childCount; i++) {
+                        VirtualView child = children.get(i);
+                        info.addChild(VirtualSubtreeRootView.this, child.mId);
+                    }
+                } else {
+                    // Find the view that corresponds to the given id.
+                    VirtualView virtualView = findVirtualViewById(virtualViewId);
+                    if (virtualView == null) {
+                        return null;
+                    }
+                    // Obtain and initialize an AccessibilityNodeInfo with
+                    // information about the virtual view.
+                    info = AccessibilityNodeInfo.obtain();
+                    info.addAction(AccessibilityNodeInfo.ACTION_SELECT);
+                    info.addAction(AccessibilityNodeInfo.ACTION_CLEAR_SELECTION);
+                    info.setPackageName(getContext().getPackageName());
+                    info.setClassName(virtualView.getClass().getName());
+                    info.setSource(VirtualSubtreeRootView.this, virtualViewId);
+                    info.setBoundsInParent(virtualView.mBounds);
+                    info.setParent(VirtualSubtreeRootView.this);
+                    info.setText(virtualView.mText);
+                }
+                return info;
+            }
+
+            /**
+             * {@inheritDoc}
+             */
+            @Override
+            public List<AccessibilityNodeInfo> findAccessibilityNodeInfosByText(String searched,
+                    int virtualViewId) {
+                if (TextUtils.isEmpty(searched)) {
+                    return Collections.emptyList();
+                }
+                String searchedLowerCase = searched.toLowerCase();
+                List<AccessibilityNodeInfo> result = null;
+                if (virtualViewId == View.NO_ID) {
+                    // If the search is from the root, i.e. this View, go over the virtual
+                    // children and look for ones that contain the searched string since
+                    // this View does not contain text itself.
+                    List<VirtualView> children = mChildren;
+                    final int childCount = children.size();
+                    for (int i = 0; i < childCount; i++) {
+                        VirtualView child = children.get(i);
+                        String textToLowerCase = child.mText.toLowerCase();
+                        if (textToLowerCase.contains(searchedLowerCase)) {
+                            if (result == null) {
+                                result = new ArrayList<AccessibilityNodeInfo>();
+                            }
+                            result.add(createAccessibilityNodeInfo(child.mId));
+                        }
+                    }
+                } else {
+                    // If the search is from a virtual view, find the view. Since the tree
+                    // is one level deep we add a node info for the child to the result if
+                    // the child contains the searched text.
+                    VirtualView virtualView = findVirtualViewById(virtualViewId);
+                    if (virtualView != null) {
+                        String textToLowerCase = virtualView.mText.toLowerCase();
+                        if (textToLowerCase.contains(searchedLowerCase)) {
+                            result = new ArrayList<AccessibilityNodeInfo>();
+                            result.add(createAccessibilityNodeInfo(virtualViewId));
+                        }
+                    }
+                }
+                if (result == null) {
+                    return Collections.emptyList();
+                }
+                return result;
+            }
+
+            /**
+             * {@inheritDoc}
+             */
+            @Override
+            public boolean performAction(int virtualViewId, int action, Bundle arguments) {
+                if (virtualViewId == View.NO_ID) {
+                    // Perform the action on the host View.
+                    switch (action) {
+                        case AccessibilityNodeInfo.ACTION_SELECT:
+                            if (!isSelected()) {
+                                setSelected(true);
+                                return isSelected();
+                            }
+                            break;
+                        case AccessibilityNodeInfo.ACTION_CLEAR_SELECTION:
+                            if (isSelected()) {
+                                setSelected(false);
+                                return !isSelected();
+                            }
+                            break;
+                    }
+                } else {
+                    // Find the view that corresponds to the given id.
+                    VirtualView child = findVirtualViewById(virtualViewId);
+                    if (child == null) {
+                        return false;
+                    }
+                    // Perform the action on a virtual view.
+                    switch (action) {
+                        case AccessibilityNodeInfo.ACTION_SELECT:
+                            setVirtualViewSelected(child, true);
+                            invalidate();
+                            return true;
+                        case AccessibilityNodeInfo.ACTION_CLEAR_SELECTION:
+                            setVirtualViewSelected(child, false);
+                            invalidate();
+                            return true;
+                    }
+                }
+                return false;
+            }
+        }
+    }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/accessibility/_index.html b/samples/ApiDemos/src/com/example/android/apis/accessibility/_index.html
index 713d913..df54e96 100644
--- a/samples/ApiDemos/src/com/example/android/apis/accessibility/_index.html
+++ b/samples/ApiDemos/src/com/example/android/apis/accessibility/_index.html
@@ -1,3 +1,4 @@
+<h3 id="Accessibility">Accessibility</h3>
 <dl>
   <dt><a href="ClockBackService.html">Accessibility Service</a></dt>
   <dd>
@@ -20,6 +21,12 @@
     xml files, and adding additional information to AccessibilityEvents using
     AccessibilityRecords.
   </dd>
+  <dt><a href="AccessibilityNodeProviderActivity.html">Accessibility Node Provider</a></dt>
+  <dd>Demonstrates how to develop an accessibility node provider which manages a virtual
+    View tree reported to accessibility services. The virtual subtree is rooted at a View
+    that draws complex content and reports itself as a tree of virtual views, thus conveying
+    its logical structure.
+  </dd>
 </dl>
 
 <dl>
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ActivityRecreate.java b/samples/ApiDemos/src/com/example/android/apis/app/ActivityRecreate.java
index 4c112b3..195835c 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ActivityRecreate.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ActivityRecreate.java
@@ -17,12 +17,9 @@
 package com.example.android.apis.app;
 
 import com.example.android.apis.R;
-import com.example.android.apis.app.LocalServiceActivities.Controller;
 
 import android.app.Activity;
-import android.content.Intent;
 import android.os.Bundle;
-import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.Button;
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/Animation.java b/samples/ApiDemos/src/com/example/android/apis/app/Animation.java
index bd2bd89..a4a05e6 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/Animation.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/Animation.java
@@ -19,10 +19,12 @@
 // Need the following import to get access to the app resources, since this
 // class is in a sub-package.
 import com.example.android.apis.R;
-import com.example.android.apis.view.Controls1;
 
 import android.app.Activity;
+import android.app.ActivityOptions;
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
 import android.os.Bundle;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -44,12 +46,27 @@
         button.setOnClickListener(mFadeListener);
         button = (Button)findViewById(R.id.zoom_animation);
         button.setOnClickListener(mZoomListener);
+        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
+            button = (Button)findViewById(R.id.modern_fade_animation);
+            button.setOnClickListener(mModernFadeListener);
+            button = (Button)findViewById(R.id.modern_zoom_animation);
+            button.setOnClickListener(mModernZoomListener);
+            button = (Button)findViewById(R.id.scale_up_animation);
+            button.setOnClickListener(mScaleUpListener);
+            button = (Button)findViewById(R.id.zoom_thumbnail_animation);
+            button.setOnClickListener(mZoomThumbnailListener);
+        } else {
+            findViewById(R.id.modern_fade_animation).setEnabled(false);
+            findViewById(R.id.modern_zoom_animation).setEnabled(false);
+            findViewById(R.id.scale_up_animation).setEnabled(false);
+            findViewById(R.id.zoom_thumbnail_animation).setEnabled(false);
+        }
     }
 
     private OnClickListener mFadeListener = new OnClickListener() {
         public void onClick(View v) {
             // Request the next activity transition (here starting a new one).
-            startActivity(new Intent(Animation.this, Controls1.class));
+            startActivity(new Intent(Animation.this, AlertDialogSamples.class));
             // Supply a custom animation.  This one will just fade the new
             // activity on top.  Note that we need to also supply an animation
             // (here just doing nothing for the same amount of time) for the
@@ -61,7 +78,7 @@
     private OnClickListener mZoomListener = new OnClickListener() {
         public void onClick(View v) {
             // Request the next activity transition (here starting a new one).
-            startActivity(new Intent(Animation.this, Controls1.class));
+            startActivity(new Intent(Animation.this, AlertDialogSamples.class));
             // This is a more complicated animation, involving transformations
             // on both this (exit) and the new (enter) activity.  Note how for
             // the duration of the animation we force the exiting activity
@@ -70,5 +87,64 @@
             overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
         }
     };
+
+    private OnClickListener mModernFadeListener = new OnClickListener() {
+        public void onClick(View v) {
+            // Create the desired custom animation, involving transformations
+            // on both this (exit) and the new (enter) activity.  Note how for
+            // the duration of the animation we force the exiting activity
+            // to be Z-ordered on top (even though it really isn't) to achieve
+            // the effect we want.
+            ActivityOptions opts = ActivityOptions.makeCustomAnimation(Animation.this,
+                    R.anim.fade, R.anim.hold);
+            // Request the activity be started, using the custom animation options.
+            startActivity(new Intent(Animation.this, AlertDialogSamples.class), opts.toBundle());
+        }
+    };
+
+    private OnClickListener mModernZoomListener = new OnClickListener() {
+        public void onClick(View v) {
+            // Create a more complicated animation, involving transformations
+            // on both this (exit) and the new (enter) activity.  Note how for
+            // the duration of the animation we force the exiting activity
+            // to be Z-ordered on top (even though it really isn't) to achieve
+            // the effect we want.
+            ActivityOptions opts = ActivityOptions.makeCustomAnimation(Animation.this,
+                    R.anim.zoom_enter, R.anim.zoom_enter);
+            // Request the activity be started, using the custom animation options.
+            startActivity(new Intent(Animation.this, AlertDialogSamples.class), opts.toBundle());
+        }
+    };
+
+    private OnClickListener mScaleUpListener = new OnClickListener() {
+        public void onClick(View v) {
+            // Create a scale-up animation that originates at the button
+            // being pressed.
+            ActivityOptions opts = ActivityOptions.makeScaleUpAnimation(
+                    v, 0, 0, v.getWidth(), v.getHeight());
+            // Request the activity be started, using the custom animation options.
+            startActivity(new Intent(Animation.this, AlertDialogSamples.class), opts.toBundle());
+        }
+    };
+
+    private OnClickListener mZoomThumbnailListener = new OnClickListener() {
+        public void onClick(View v) {
+            // Create a thumbnail animation.  We are going to build our thumbnail
+            // just from the view that was pressed.  We make sure the view is
+            // not selected, because by the time the animation starts we will
+            // have finished with the selection of the tap.
+            v.setDrawingCacheEnabled(true);
+            v.setPressed(false);
+            v.refreshDrawableState();
+            Bitmap bm = v.getDrawingCache();
+            Canvas c = new Canvas(bm);
+            //c.drawARGB(255, 255, 0, 0);
+            ActivityOptions opts = ActivityOptions.makeThumbnailScaleUpAnimation(
+                    v, bm, 0, 0);
+            // Request the activity be started, using the custom animation options.
+            startActivity(new Intent(Animation.this, AlertDialogSamples.class), opts.toBundle());
+            v.setDrawingCacheEnabled(false);
+        }
+    };
 }
 
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/FinishAffinity.java b/samples/ApiDemos/src/com/example/android/apis/app/FinishAffinity.java
new file mode 100644
index 0000000..7ae62b6
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/FinishAffinity.java
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+package com.example.android.apis.app;
+
+import com.example.android.apis.R;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+
+public class FinishAffinity extends Activity {
+    int mNesting;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.activity_finish_affinity);
+
+        mNesting = getIntent().getIntExtra("nesting", 1);
+        ((TextView)findViewById(R.id.seq)).setText("Current nesting: " + mNesting);
+
+        // Watch for button clicks.
+        Button button = (Button)findViewById(R.id.nest);
+        button.setOnClickListener(mNestListener);
+        button = (Button)findViewById(R.id.finish);
+        button.setOnClickListener(mFinishListener);
+    }
+
+    private OnClickListener mNestListener = new OnClickListener() {
+        public void onClick(View v) {
+            Intent intent = new Intent(FinishAffinity.this, FinishAffinity.class);
+            intent.putExtra("nesting", mNesting+1);
+            startActivity(intent);
+        }
+    };
+
+    private OnClickListener mFinishListener = new OnClickListener() {
+        public void onClick(View v) {
+            finishAffinity();
+        }
+    };
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/IsolatedService.java b/samples/ApiDemos/src/com/example/android/apis/app/IsolatedService.java
new file mode 100644
index 0000000..bf3c523
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/IsolatedService.java
@@ -0,0 +1,206 @@
+/*
+ * 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.
+ */
+
+package com.example.android.apis.app;
+
+import android.app.Activity;
+import android.app.Service;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.IBinder;
+import android.os.RemoteCallbackList;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.TextView;
+
+// Need the following import to get access to the app resources, since this
+// class is in a sub-package.
+import com.example.android.apis.R;
+
+/**
+ * This is an example if implementing a Service that uses android:isolatedProcess.
+ */
+public class IsolatedService extends Service {
+    /**
+     * This is a list of callbacks that have been registered with the
+     * service.  Note that this is package scoped (instead of private) so
+     * that it can be accessed more efficiently from inner classes.
+     */
+    final RemoteCallbackList<IRemoteServiceCallback> mCallbacks
+            = new RemoteCallbackList<IRemoteServiceCallback>();
+    
+    int mValue = 0;
+    
+    @Override
+    public void onCreate() {
+        Log.i("IsolatedService", "Creating IsolatedService: " + this);
+    }
+
+    @Override
+    public void onDestroy() {
+        Log.i("IsolatedService", "Destroying IsolatedService: " + this);
+        // Unregister all callbacks.
+        mCallbacks.kill();
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+
+    /**
+     * The IRemoteInterface is defined through IDL
+     */
+    private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
+        public void registerCallback(IRemoteServiceCallback cb) {
+            if (cb != null) mCallbacks.register(cb);
+        }
+        public void unregisterCallback(IRemoteServiceCallback cb) {
+            if (cb != null) mCallbacks.unregister(cb);
+        }
+    };
+    
+    @Override
+    public void onTaskRemoved(Intent rootIntent) {
+        Log.i("IsolatedService", "Task removed in " + this + ": " + rootIntent);
+        stopSelf();
+    }
+
+    private void broadcastValue(int value) {
+        // Broadcast to all clients the new value.
+        final int N = mCallbacks.beginBroadcast();
+        for (int i=0; i<N; i++) {
+            try {
+                mCallbacks.getBroadcastItem(i).valueChanged(value);
+            } catch (RemoteException e) {
+                // The RemoteCallbackList will take care of removing
+                // the dead object for us.
+            }
+        }
+        mCallbacks.finishBroadcast();
+    }
+    
+    // ----------------------------------------------------------------------
+    
+    public static class Controller extends Activity {
+        static class ServiceInfo {
+            final Activity mActivity;
+            final Class<?> mClz;
+            final TextView mStatus;
+            boolean mServiceBound;
+            IRemoteService mService;
+
+            ServiceInfo(Activity activity, Class<?> clz,
+                    int start, int stop, int bind, int status) {
+                mActivity = activity;
+                mClz = clz;
+                Button button = (Button)mActivity.findViewById(start);
+                button.setOnClickListener(mStartListener);
+                button = (Button)mActivity.findViewById(stop);
+                button.setOnClickListener(mStopListener);
+                CheckBox cb = (CheckBox)mActivity.findViewById(bind);
+                cb.setOnClickListener(mBindListener);
+                mStatus = (TextView)mActivity.findViewById(status);
+            }
+
+            void destroy() {
+                if (mServiceBound) {
+                    mActivity.unbindService(mConnection);
+                }
+            }
+
+            private OnClickListener mStartListener = new OnClickListener() {
+                public void onClick(View v) {
+                    mActivity.startService(new Intent(mActivity, mClz));
+                }
+            };
+
+            private OnClickListener mStopListener = new OnClickListener() {
+                public void onClick(View v) {
+                    mActivity.stopService(new Intent(mActivity, mClz));
+                }
+            };
+
+            private OnClickListener mBindListener = new OnClickListener() {
+                public void onClick(View v) {
+                    if (((CheckBox)v).isChecked()) {
+                        if (!mServiceBound) {
+                            if (mActivity.bindService(new Intent(mActivity, mClz),
+                                    mConnection, Context.BIND_AUTO_CREATE)) {
+                                mServiceBound = true;
+                                mStatus.setText("BOUND");
+                            }
+                        }
+                    } else {
+                        if (mServiceBound) {
+                            mActivity.unbindService(mConnection);
+                            mServiceBound = false;
+                            mStatus.setText("");
+                        }
+                    }
+                }
+            };
+
+            private ServiceConnection mConnection = new ServiceConnection() {
+                public void onServiceConnected(ComponentName className,
+                        IBinder service) {
+                    mService = IRemoteService.Stub.asInterface(service);
+                    if (mServiceBound) {
+                        mStatus.setText("CONNECTED");
+                    }
+                }
+
+                public void onServiceDisconnected(ComponentName className) {
+                    // This is called when the connection with the service has been
+                    // unexpectedly disconnected -- that is, its process crashed.
+                    mService = null;
+                    if (mServiceBound) {
+                        mStatus.setText("DISCONNECTED");
+                    }
+                }
+            };
+        }
+
+        ServiceInfo mService1;
+        ServiceInfo mService2;
+
+        @Override
+        protected void onCreate(Bundle savedInstanceState) {
+            super.onCreate(savedInstanceState);
+
+            setContentView(R.layout.isolated_service_controller);
+
+            mService1 = new ServiceInfo(this, IsolatedService.class, R.id.start1, R.id.stop1,
+                    R.id.bind1, R.id.status1);
+            mService2 = new ServiceInfo(this, IsolatedService2.class, R.id.start2, R.id.stop2,
+                    R.id.bind2, R.id.status2);
+        }
+
+        @Override
+        protected void onDestroy() {
+            super.onDestroy();
+            mService1.destroy();
+            mService2.destroy();
+        }
+    }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/IsolatedService2.java b/samples/ApiDemos/src/com/example/android/apis/app/IsolatedService2.java
new file mode 100644
index 0000000..d313a67
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/IsolatedService2.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+package com.example.android.apis.app;
+
+/**
+ * Stub to be able to have another instance of IsolatedService running.
+ */
+public class IsolatedService2 extends IsolatedService {
+
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java b/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java
index fd2fa68..f309191 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java
@@ -95,7 +95,8 @@
             // Place an action bar item for searching.
             MenuItem item = menu.add("Search");
             item.setIcon(android.R.drawable.ic_menu_search);
-            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
+                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
             SearchView sv = new SearchView(getActivity());
             sv.setOnQueryTextListener(this);
             item.setActionView(sv);
@@ -105,7 +106,16 @@
             // Called when the action bar search text has changed.  Update
             // the search filter, and restart the loader to do a new query
             // with this filter.
-            mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+            String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
+            // Don't do anything if the filter hasn't actually changed.
+            // Prevents restarting the loader when restoring state.
+            if (mCurFilter == null && newFilter == null) {
+                return true;
+            }
+            if (mCurFilter != null && mCurFilter.equals(newFilter)) {
+                return true;
+            }
+            mCurFilter = newFilter;
             getLoaderManager().restartLoader(0, null, this);
             return true;
         }
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java b/samples/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java
index e1e77a9..7c16fb3 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java
@@ -431,7 +431,8 @@
             // Place an action bar item for searching.
             MenuItem item = menu.add("Search");
             item.setIcon(android.R.drawable.ic_menu_search);
-            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
+                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
             SearchView sv = new SearchView(getActivity());
             sv.setOnQueryTextListener(this);
             item.setActionView(sv);
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/LoaderRetained.java b/samples/ApiDemos/src/com/example/android/apis/app/LoaderRetained.java
new file mode 100644
index 0000000..521f6e5
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/LoaderRetained.java
@@ -0,0 +1,190 @@
+/*
+ * 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.
+ */
+
+package com.example.android.apis.app;
+
+import android.app.Activity;
+import android.app.FragmentManager;
+import android.app.ListFragment;
+import android.app.LoaderManager;
+import android.content.CursorLoader;
+import android.content.Loader;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract.Contacts;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
+import android.widget.SearchView;
+import android.widget.SimpleCursorAdapter;
+import android.widget.SearchView.OnQueryTextListener;
+
+/**
+ * Demonstration of the use of a CursorLoader to load and display contacts
+ * data in a fragment.
+ */
+public class LoaderRetained extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        FragmentManager fm = getFragmentManager();
+
+        // Create the list fragment and add it as our sole content.
+        if (fm.findFragmentById(android.R.id.content) == null) {
+            CursorLoaderListFragment list = new CursorLoaderListFragment();
+            fm.beginTransaction().add(android.R.id.content, list).commit();
+        }
+    }
+
+//BEGIN_INCLUDE(fragment_cursor)
+    public static class CursorLoaderListFragment extends ListFragment
+            implements OnQueryTextListener, LoaderManager.LoaderCallbacks<Cursor> {
+
+        // This is the Adapter being used to display the list's data.
+        SimpleCursorAdapter mAdapter;
+
+        // If non-null, this is the current filter the user has provided.
+        String mCurFilter;
+
+        @Override public void onActivityCreated(Bundle savedInstanceState) {
+            super.onActivityCreated(savedInstanceState);
+
+            // In this sample we are going to use a retained fragment.
+            setRetainInstance(true);
+
+            // Give some text to display if there is no data.  In a real
+            // application this would come from a resource.
+            setEmptyText("No phone numbers");
+
+            // We have a menu item to show in action bar.
+            setHasOptionsMenu(true);
+
+            // Create an empty adapter we will use to display the loaded data.
+            mAdapter = new SimpleCursorAdapter(getActivity(),
+                    android.R.layout.simple_list_item_2, null,
+                    new String[] { Contacts.DISPLAY_NAME, Contacts.CONTACT_STATUS },
+                    new int[] { android.R.id.text1, android.R.id.text2 }, 0);
+            setListAdapter(mAdapter);
+
+            // Start out with a progress indicator.
+            setListShown(false);
+
+            // Prepare the loader.  Either re-connect with an existing one,
+            // or start a new one.
+            getLoaderManager().initLoader(0, null, this);
+        }
+
+        @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+            // Place an action bar item for searching.
+            MenuItem item = menu.add("Search");
+            item.setIcon(android.R.drawable.ic_menu_search);
+            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
+                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
+            SearchView sv = new SearchView(getActivity());
+            sv.setOnQueryTextListener(this);
+            item.setActionView(sv);
+        }
+
+        public boolean onQueryTextChange(String newText) {
+            // Called when the action bar search text has changed.  Update
+            // the search filter, and restart the loader to do a new query
+            // with this filter.
+            String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
+            // Don't do anything if the filter hasn't actually changed.
+            // Prevents restarting the loader when restoring state.
+            if (mCurFilter == null && newFilter == null) {
+                return true;
+            }
+            if (mCurFilter != null && mCurFilter.equals(newFilter)) {
+                return true;
+            }
+            mCurFilter = newFilter;
+            getLoaderManager().restartLoader(0, null, this);
+            return true;
+        }
+
+        @Override public boolean onQueryTextSubmit(String query) {
+            // Don't care about this.
+            return true;
+        }
+
+        @Override public void onListItemClick(ListView l, View v, int position, long id) {
+            // Insert desired behavior here.
+            Log.i("FragmentComplexList", "Item clicked: " + id);
+        }
+
+        // These are the Contacts rows that we will retrieve.
+        static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+            Contacts._ID,
+            Contacts.DISPLAY_NAME,
+            Contacts.CONTACT_STATUS,
+            Contacts.CONTACT_PRESENCE,
+            Contacts.PHOTO_ID,
+            Contacts.LOOKUP_KEY,
+        };
+
+        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+            // This is called when a new Loader needs to be created.  This
+            // sample only has one Loader, so we don't care about the ID.
+            // First, pick the base URI to use depending on whether we are
+            // currently filtering.
+            Uri baseUri;
+            if (mCurFilter != null) {
+                baseUri = Uri.withAppendedPath(Contacts.CONTENT_FILTER_URI,
+                        Uri.encode(mCurFilter));
+            } else {
+                baseUri = Contacts.CONTENT_URI;
+            }
+
+            // Now create and return a CursorLoader that will take care of
+            // creating a Cursor for the data being displayed.
+            String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND ("
+                    + Contacts.HAS_PHONE_NUMBER + "=1) AND ("
+                    + Contacts.DISPLAY_NAME + " != '' ))";
+            return new CursorLoader(getActivity(), baseUri,
+                    CONTACTS_SUMMARY_PROJECTION, select, null,
+                    Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
+        }
+
+        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+            // Swap the new cursor in.  (The framework will take care of closing the
+            // old cursor once we return.)
+            mAdapter.swapCursor(data);
+
+            // The list should now be shown.
+            if (isResumed()) {
+                setListShown(true);
+            } else {
+                setListShownNoAnimation(true);
+            }
+        }
+
+        public void onLoaderReset(Loader<Cursor> loader) {
+            // This is called when the last Cursor provided to onLoadFinished()
+            // above is about to be closed.  We need to make sure we are no
+            // longer using it.
+            mAdapter.swapCursor(null);
+        }
+    }
+//END_INCLUDE(fragment_cursor)
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java b/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java
index fc7b62a..877714f 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java
@@ -23,6 +23,8 @@
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.LinearLayout;
 import android.widget.Spinner;
@@ -86,6 +88,15 @@
         // so it will automatically save its instance state
         mSpinner.setId(R.id.spinner);
         mSpinner.setAdapter(adapter);
+        mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                invalidateOptionsMenu();
+            }
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+            }
+        });
         
         // Add the spinner
         layout.addView(mSpinner,
@@ -118,10 +129,6 @@
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(sMenuExampleResources[mSpinner.getSelectedItemPosition()], menu);
         
-        // Disable the spinner since we've already created the menu and the user
-        // can no longer pick a different menu XML.
-        mSpinner.setEnabled(false);
-        
         // Change instructions
         mInstructionsText.setText(getResources().getString(
                 R.string.menu_from_xml_instructions_go_back));
@@ -136,6 +143,7 @@
             //                   the XML
             case R.id.jump:
                 Toast.makeText(this, "Jump up in the air!", Toast.LENGTH_SHORT).show();
+                invalidateOptionsMenu();
                 return true;
 
             case R.id.dive:
diff --git a/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java b/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java
index e988902..cf7d027 100644
--- a/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java
+++ b/samples/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java
@@ -26,10 +26,10 @@
 import android.content.res.Resources;
 import android.net.Uri;
 import android.os.Bundle;
+import android.text.method.LinkMovementMethod;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
-import android.widget.EditText;
 import android.widget.Spinner;
 import android.widget.TextView;
 import android.widget.AdapterView.OnItemSelectedListener;
@@ -39,15 +39,17 @@
 
     Spinner mSpinner;
     TextView mMimeTypes;
-    EditText mEditText;
+    TextView mDataText;
 
     CharSequence mStyledText;
     String mPlainText;
+    String mHtmlText;
+    String mHtmlPlainText;
 
     ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener
             = new ClipboardManager.OnPrimaryClipChangedListener() {
         public void onPrimaryClipChanged() {
-            updateClipData();
+            updateClipData(true);
         }
     };
 
@@ -70,6 +72,11 @@
         tv = (TextView)findViewById(R.id.plain_text);
         tv.setText(mPlainText);
 
+        mHtmlText = "<b>Link:</b> <a href=\"http://www.android.com\">Android</a>";
+        mHtmlPlainText = "Link: http://www.android.com";
+        tv = (TextView)findViewById(R.id.html_text);
+        tv.setText(mHtmlText);
+
         mSpinner = (Spinner) findViewById(R.id.clip_type);
         ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                 this, R.array.clip_data_types, android.R.layout.simple_spinner_item);
@@ -79,16 +86,17 @@
                 new OnItemSelectedListener() {
                     public void onItemSelected(
                             AdapterView<?> parent, View view, int position, long id) {
+                        updateClipData(false);
                     }
                     public void onNothingSelected(AdapterView<?> parent) {
                     }
                 });
 
         mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);
-        mEditText = (EditText)findViewById(R.id.clip_text);
+        mDataText = (TextView)findViewById(R.id.clip_text);
 
         mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
-        updateClipData();
+        updateClipData(true);
     }
 
     @Override
@@ -105,6 +113,10 @@
         mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText));
     }
 
+    public void pasteHtmlText(View button) {
+        mClipboard.setPrimaryClip(ClipData.newHtmlText("HTML Text", mHtmlPlainText, mHtmlText));
+    }
+
     public void pasteIntent(View button) {
         Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));
         mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent));
@@ -114,31 +126,74 @@
         mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/")));
     }
 
-    void updateClipData() {
+    void updateClipData(boolean updateType) {
         ClipData clip = mClipboard.getPrimaryClip();
         String[] mimeTypes = clip != null ? clip.getDescription().filterMimeTypes("*/*") : null;
-        mMimeTypes.setText("");
         if (mimeTypes != null) {
+            mMimeTypes.setText("");
             for (int i=0; i<mimeTypes.length; i++) {
+                if (i > 0) {
+                    mMimeTypes.append("\n");
+                }
                 mMimeTypes.append(mimeTypes[i]);
-                mMimeTypes.append("\n");
+            }
+        } else {
+            mMimeTypes.setText("NULL");
+        }
+
+        if (updateType) {
+            if (clip != null) {
+                ClipData.Item item = clip.getItemAt(0);
+                if (item.getHtmlText() != null) {
+                    mSpinner.setSelection(2);
+                } else if (item.getText() != null) {
+                    mSpinner.setSelection(1);
+                } else if (item.getIntent() != null) {
+                    mSpinner.setSelection(3);
+                } else if (item.getUri() != null) {
+                    mSpinner.setSelection(4);
+                } else {
+                    mSpinner.setSelection(0);
+                }
+            } else {
+                mSpinner.setSelection(0);
             }
         }
-        if (clip == null) {
-            mSpinner.setSelection(0);
-            mEditText.setText("");
-        } else if (clip.getItemAt(0).getText() != null) {
-            mSpinner.setSelection(1);
-            mEditText.setText(clip.getItemAt(0).getText());
-        } else if (clip.getItemAt(0).getIntent() != null) {
-            mSpinner.setSelection(2);
-            mEditText.setText(clip.getItemAt(0).getIntent().toUri(0));
-        } else if (clip.getItemAt(0).getUri() != null) {
-            mSpinner.setSelection(3);
-            mEditText.setText(clip.getItemAt(0).getUri().toString());
+
+        if (clip != null) {
+            ClipData.Item item = clip.getItemAt(0);
+            switch (mSpinner.getSelectedItemPosition()) {
+                case 0:
+                    mDataText.setText("(No data)");
+                    break;
+                case 1:
+                    mDataText.setText(item.getText());
+                    break;
+                case 2:
+                    mDataText.setText(item.getHtmlText());
+                    break;
+                case 3:
+                    mDataText.setText(item.getIntent().toUri(0));
+                    break;
+                case 4:
+                    mDataText.setText(item.getUri().toString());
+                    break;
+                case 5:
+                    mDataText.setText(item.coerceToText(this));
+                    break;
+                case 6:
+                    mDataText.setText(item.coerceToStyledText(this));
+                    break;
+                case 7:
+                    mDataText.setText(item.coerceToHtmlText(this));
+                    break;
+                default:
+                    mDataText.setText("Unknown option: " + mSpinner.getSelectedItemPosition());
+                    break;
+            }
         } else {
-            mSpinner.setSelection(0);
-            mEditText.setText("Clip containing no data");
+            mDataText.setText("(NULL clip)");
         }
+        mDataText.setMovementMethod(LinkMovementMethod.getInstance());
     }
 }
diff --git a/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.java b/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.java
index fe478ed..08eb839 100644
--- a/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.java
+++ b/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.java
@@ -25,9 +25,6 @@
 import android.os.Bundle;
 import android.widget.TextView;
 
-import java.nio.charset.Charset;
-import java.util.Locale;
-
 /**
  * An example of how to use the NFC foreground NDEF push APIs.
  */
@@ -36,51 +33,23 @@
     private TextView mText;
     private NdefMessage mMessage;
 
-    public static NdefRecord newTextRecord(String text, Locale locale, boolean encodeInUtf8) {
-        byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII"));
-
-        Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16");
-        byte[] textBytes = text.getBytes(utfEncoding);
-
-        int utfBit = encodeInUtf8 ? 0 : (1 << 7);
-        char status = (char) (utfBit + langBytes.length);
-
-        byte[] data = new byte[1 + langBytes.length + textBytes.length]; 
-        data[0] = (byte) status;
-        System.arraycopy(langBytes, 0, data, 1, langBytes.length);
-        System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length);
-
-        return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data);
-    }
-
     @Override
     public void onCreate(Bundle savedState) {
         super.onCreate(savedState);
 
         mAdapter = NfcAdapter.getDefaultAdapter(this);
 
+        // Create an NDEF message a URL
+        mMessage = new NdefMessage(NdefRecord.createUri("http://www.android.com"));
+
         setContentView(R.layout.foreground_dispatch);
         mText = (TextView) findViewById(R.id.text);
+
         if (mAdapter != null) {
-            mText.setText("Tap another Android phone with NFC to push 'NDEF Push Sample'");
+            mAdapter.setNdefPushMessage(mMessage, this);
+            mText.setText("Tap another Android phone with NFC to push a URL");
         } else {
             mText.setText("This phone is not NFC enabled.");
         }
-
-        // Create an NDEF message with some sample text
-        mMessage = new NdefMessage(
-                new NdefRecord[] { newTextRecord("NDEF Push Sample", Locale.ENGLISH, true)});        
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        if (mAdapter != null) mAdapter.enableForegroundNdefPush(this, mMessage);
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        if (mAdapter != null) mAdapter.disableForegroundNdefPush(this);
     }
 }
diff --git a/samples/ApiDemos/src/com/example/android/apis/view/ContentBrowserActivity.java b/samples/ApiDemos/src/com/example/android/apis/view/ContentBrowserActivity.java
new file mode 100644
index 0000000..96be9a2
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/view/ContentBrowserActivity.java
@@ -0,0 +1,264 @@
+/*
+ * 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.apis.view;
+
+import android.app.ActionBar;
+import android.app.ActionBar.Tab;
+import android.app.Activity;
+import android.app.FragmentTransaction;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.widget.Button;
+import android.widget.ScrollView;
+import android.widget.SearchView;
+import android.widget.SeekBar;
+import android.widget.ShareActionProvider;
+import android.widget.TextView;
+import android.widget.Toast;
+import android.widget.SearchView.OnQueryTextListener;
+
+import com.example.android.apis.R;
+
+/**
+ * This activity demonstrates how to use system UI flags to implement
+ * a content browser style of UI (such as a book reader).
+ */
+public class ContentBrowserActivity extends Activity
+        implements OnQueryTextListener, ActionBar.TabListener {
+
+    /**
+     * Implementation of a view for displaying immersive content, using system UI
+     * flags to transition in and out of modes where the user is focused on that
+     * content.
+     */
+//BEGIN_INCLUDE(content)
+    public static class Content extends ScrollView
+            implements View.OnSystemUiVisibilityChangeListener, View.OnClickListener {
+        TextView mText;
+        TextView mTitleView;
+        SeekBar mSeekView;
+        boolean mNavVisible;
+        int mBaseSystemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                | SYSTEM_UI_FLAG_LAYOUT_STABLE;
+        int mLastSystemUiVis;
+
+        Runnable mNavHider = new Runnable() {
+            @Override public void run() {
+                setNavVisibility(false);
+            }
+        };
+
+        public Content(Context context, AttributeSet attrs) {
+            super(context, attrs);
+    
+            mText = new TextView(context);
+            mText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
+            mText.setText(context.getString(R.string.alert_dialog_two_buttons2ultra_msg));
+            mText.setClickable(false);
+            mText.setOnClickListener(this);
+            mText.setTextIsSelectable(true);
+            addView(mText, new ViewGroup.LayoutParams(
+                    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+
+            setOnSystemUiVisibilityChangeListener(this);
+        }
+
+        public void init(TextView title, SeekBar seek) {
+            // This called by the containing activity to supply the surrounding
+            // state of the content browser that it will interact with.
+            mTitleView = title;
+            mSeekView = seek;
+            setNavVisibility(true);
+        }
+
+        @Override public void onSystemUiVisibilityChange(int visibility) {
+            // Detect when we go out of low-profile mode, to also go out
+            // of full screen.  We only do this when the low profile mode
+            // is changing from its last state, and turning off.
+            int diff = mLastSystemUiVis ^ visibility;
+            mLastSystemUiVis = visibility;
+            if ((diff&SYSTEM_UI_FLAG_LOW_PROFILE) != 0
+                    && (visibility&SYSTEM_UI_FLAG_LOW_PROFILE) == 0) {
+                setNavVisibility(true);
+            }
+        }
+
+        @Override protected void onWindowVisibilityChanged(int visibility) {
+            super.onWindowVisibilityChanged(visibility);
+
+            // When we become visible, we show our navigation elements briefly
+            // before hiding them.
+            setNavVisibility(true);
+            getHandler().postDelayed(mNavHider, 2000);
+        }
+
+        @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+            super.onScrollChanged(l, t, oldl, oldt);
+
+            // When the user scrolls, we hide navigation elements.
+            setNavVisibility(false);
+        }
+
+        @Override public void onClick(View v) {
+            // When the user clicks, we toggle the visibility of navigation elements.
+            int curVis = getSystemUiVisibility();
+            setNavVisibility((curVis&SYSTEM_UI_FLAG_LOW_PROFILE) != 0);
+        }
+
+        void setBaseSystemUiVisibility(int visibility) {
+            mBaseSystemUiVisibility = visibility;
+        }
+
+        void setNavVisibility(boolean visible) {
+            int newVis = mBaseSystemUiVisibility;
+            if (!visible) {
+                newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN;
+            }
+            final boolean changed = newVis == getSystemUiVisibility();
+
+            // Unschedule any pending event to hide navigation if we are
+            // changing the visibility, or making the UI visible.
+            if (changed || visible) {
+                Handler h = getHandler();
+                if (h != null) {
+                    h.removeCallbacks(mNavHider);
+                }
+            }
+
+            // Set the new desired visibility.
+            setSystemUiVisibility(newVis);
+            mTitleView.setVisibility(visible ? VISIBLE : INVISIBLE);
+            mSeekView.setVisibility(visible ? VISIBLE : INVISIBLE);
+        }
+    }
+//END_INCLUDE(content)
+
+    Content mContent;
+
+    public ContentBrowserActivity() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
+
+        setContentView(R.layout.content_browser);
+        mContent = (Content)findViewById(R.id.content);
+        mContent.init((TextView)findViewById(R.id.title),
+                (SeekBar)findViewById(R.id.seekbar));
+
+        ActionBar bar = getActionBar();
+        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));
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.content_actions, menu);
+        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
+        searchView.setOnQueryTextListener(this);
+
+        // Set file with share history to the provider and set the share intent.
+        MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
+        ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
+        actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
+        // Note that you can set/change the intent any time,
+        // say when the user has selected an image.
+        Intent shareIntent = new Intent(Intent.ACTION_SEND);
+        shareIntent.setType("image/*");
+        Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
+        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
+        actionProvider.setShareIntent(shareIntent);
+        return true;
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    /**
+     * This method is declared in the menu.
+     */
+    public void onSort(MenuItem item) {
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.show_tabs:
+                getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+                item.setChecked(true);
+                return true;
+            case R.id.hide_tabs:
+                getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+                item.setChecked(true);
+                return true;
+            case R.id.stable_layout:
+                item.setChecked(!item.isChecked());
+                mContent.setBaseSystemUiVisibility(item.isChecked()
+                        ? View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                        : View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
+                return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean onQueryTextChange(String newText) {
+        return true;
+    }
+
+    @Override
+    public boolean onQueryTextSubmit(String query) {
+        Toast.makeText(this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
+        return true;
+    }
+
+    @Override
+    public void onTabSelected(Tab tab, FragmentTransaction ft) {
+    }
+
+    @Override
+    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
+    }
+
+    @Override
+    public void onTabReselected(Tab tab, FragmentTransaction ft) {
+    }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java b/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java
index fdc30e2..ce7c749 100644
--- a/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java
+++ b/samples/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java
@@ -21,13 +21,12 @@
 import android.app.Activity;
 import android.content.Context;
 import android.content.res.Resources;
+import android.hardware.input.InputManager;
 import android.os.Bundle;
-import android.util.AttributeSet;
 import android.util.Log;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.view.InputDevice;
-import android.view.InputEvent;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -42,11 +41,11 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicLong;
 
 
 /**
  * Demonstrates how to process input events received from game controllers.
+ * It also shows how to detect when input devices are added, removed or reconfigured.
  *
  * This activity displays button states and joystick positions.
  * Also writes detailed information about relevant input events to the log.
@@ -54,9 +53,11 @@
  * The game controller is also uses to control a very simple game.  See {@link GameView}
  * for the game itself.
  */
-public class GameControllerInput extends Activity {
+public class GameControllerInput extends Activity
+        implements InputManager.InputDeviceListener {
     private static final String TAG = "GameControllerInput";
 
+    private InputManager mInputManager;
     private SparseArray<InputDeviceState> mInputDeviceStates;
     private GameView mGame;
     private ListView mSummaryList;
@@ -66,6 +67,8 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
+        mInputManager = (InputManager)getSystemService(Context.INPUT_SERVICE);
+
         mInputDeviceStates = new SparseArray<InputDeviceState>();
         mSummaryAdapter = new SummaryAdapter(this, getResources());
 
@@ -84,6 +87,30 @@
     }
 
     @Override
+    protected void onResume() {
+        super.onResume();
+
+        // Register an input device listener to watch when input devices are
+        // added, removed or reconfigured.
+        mInputManager.registerInputDeviceListener(this, null);
+
+        // Query all input devices.
+        // We do this so that we can see them in the log as they are enumerated.
+        int[] ids = mInputManager.getInputDeviceIds();
+        for (int i = 0; i < ids.length; i++) {
+            getInputDeviceState(ids[i]);
+        }
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+
+        // Remove the input device listener when the activity is paused.
+        mInputManager.unregisterInputDeviceListener(this);
+    }
+
+    @Override
     public void onWindowFocusChanged(boolean hasFocus) {
         super.onWindowFocusChanged(hasFocus);
 
@@ -93,7 +120,7 @@
     @Override
     public boolean dispatchKeyEvent(KeyEvent event) {
         // Update device state for visualization and logging.
-        InputDeviceState state = getInputDeviceState(event);
+        InputDeviceState state = getInputDeviceState(event.getDeviceId());
         if (state != null) {
             switch (event.getAction()) {
                 case KeyEvent.ACTION_DOWN:
@@ -115,10 +142,10 @@
     public boolean dispatchGenericMotionEvent(MotionEvent event) {
         // Check that the event came from a joystick since a generic motion event
         // could be almost anything.
-        if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0
+        if (isJoystick(event.getSource())
                 && event.getAction() == MotionEvent.ACTION_MOVE) {
             // Update device state for visualization and logging.
-            InputDeviceState state = getInputDeviceState(event);
+            InputDeviceState state = getInputDeviceState(event.getDeviceId());
             if (state != null && state.onJoystickMotion(event)) {
                 mSummaryAdapter.show(state);
             }
@@ -126,22 +153,52 @@
         return super.dispatchGenericMotionEvent(event);
     }
 
-    private InputDeviceState getInputDeviceState(InputEvent event) {
-        final int deviceId = event.getDeviceId();
+    private InputDeviceState getInputDeviceState(int deviceId) {
         InputDeviceState state = mInputDeviceStates.get(deviceId);
         if (state == null) {
-            final InputDevice device = event.getDevice();
+            final InputDevice device = mInputManager.getInputDevice(deviceId);
             if (device == null) {
                 return null;
             }
             state = new InputDeviceState(device);
             mInputDeviceStates.put(deviceId, state);
-
-            Log.i(TAG, device.toString());
+            Log.i(TAG, "Device enumerated: " + state.mDevice);
         }
         return state;
     }
 
+    // Implementation of InputManager.InputDeviceListener.onInputDeviceAdded()
+    @Override
+    public void onInputDeviceAdded(int deviceId) {
+        InputDeviceState state = getInputDeviceState(deviceId);
+        Log.i(TAG, "Device added: " + state.mDevice);
+    }
+
+    // Implementation of InputManager.InputDeviceListener.onInputDeviceChanged()
+    @Override
+    public void onInputDeviceChanged(int deviceId) {
+        InputDeviceState state = mInputDeviceStates.get(deviceId);
+        if (state != null) {
+            mInputDeviceStates.remove(deviceId);
+            state = getInputDeviceState(deviceId);
+            Log.i(TAG, "Device changed: " + state.mDevice);
+        }
+    }
+
+    // Implementation of InputManager.InputDeviceListener.onInputDeviceRemoved()
+    @Override
+    public void onInputDeviceRemoved(int deviceId) {
+        InputDeviceState state = mInputDeviceStates.get(deviceId);
+        if (state != null) {
+            Log.i(TAG, "Device removed: " + state.mDevice);
+            mInputDeviceStates.remove(deviceId);
+        }
+    }
+
+    private static boolean isJoystick(int source) {
+        return (source & InputDevice.SOURCE_CLASS_JOYSTICK) != 0;
+    }
+
     /**
      * Tracks the state of joystick axes and game controller buttons for a particular
      * input device for diagnostic purposes.
diff --git a/samples/ApiDemos/src/com/example/android/apis/view/GameView.java b/samples/ApiDemos/src/com/example/android/apis/view/GameView.java
index 9fe236c..2904147 100644
--- a/samples/ApiDemos/src/com/example/android/apis/view/GameView.java
+++ b/samples/ApiDemos/src/com/example/android/apis/view/GameView.java
@@ -23,6 +23,7 @@
 import android.graphics.Paint.Style;
 import android.os.Handler;
 import android.os.SystemClock;
+import android.os.Vibrator;
 import android.util.AttributeSet;
 import android.view.InputDevice;
 import android.view.KeyEvent;
@@ -36,6 +37,10 @@
 /**
  * A trivial joystick based physics game to demonstrate joystick handling.
  *
+ * If the game controller has a vibrator, then it is used to provide feedback
+ * when a bullet is fired or the ship crashes into an obstacle.  Otherwise, the
+ * system vibrator is used for that purpose.
+ *
  * @see GameControllerInput
  */
 public class GameView extends View {
@@ -307,6 +312,8 @@
             bullet.setVelocity(mShip.getBulletVelocityX(mBulletSpeed),
                     mShip.getBulletVelocityY(mBulletSpeed));
             mBullets.add(bullet);
+
+            getVibrator().vibrate(20);
         }
     }
 
@@ -316,12 +323,26 @@
         }
     }
 
+    private void crash() {
+        getVibrator().vibrate(new long[] { 0, 20, 20, 40, 40, 80, 40, 300 }, -1);
+    }
+
     private void reset() {
         mShip = new Ship();
         mBullets.clear();
         mObstacles.clear();
     }
 
+    private Vibrator getVibrator() {
+        if (mLastInputDevice != null) {
+            Vibrator vibrator = mLastInputDevice.getVibrator();
+            if (vibrator.hasVibrator()) {
+                return vibrator;
+            }
+        }
+        return (Vibrator)getContext().getSystemService(Context.VIBRATOR_SERVICE);
+    }
+
     void animateFrame() {
         long currentStepTime = SystemClock.uptimeMillis();
         step(currentStepTime);
@@ -680,6 +701,12 @@
         public float getDestroyAnimDuration() {
             return 1.0f;
         }
+
+        @Override
+        public void destroy() {
+            super.destroy();
+            crash();
+        }
     }
 
     private class Bullet extends Sprite {
diff --git a/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.java b/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.java
index 464b601..3097992 100644
--- a/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.java
+++ b/samples/ApiDemos/src/com/example/android/apis/view/OverscanActivity.java
@@ -16,20 +16,33 @@
 
 package com.example.android.apis.view;
 
+import android.app.ActionBar;
 import android.app.Activity;
+import android.app.FragmentTransaction;
+import android.app.ActionBar.Tab;
 import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
+import android.view.ActionMode;
 import android.view.KeyEvent;
 import android.view.Menu;
+import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
 import android.widget.ImageView;
+import android.widget.SearchView;
+import android.widget.ShareActionProvider;
 import android.widget.TextView;
+import android.widget.Toast;
+import android.widget.SearchView.OnQueryTextListener;
 
 import com.example.android.apis.R;
 
@@ -38,9 +51,11 @@
  * the system decor, in order to better focus the user's attention or use available screen real
  * estate on the task at hand.
  */
-public class OverscanActivity extends Activity {
-    public static class IV extends ImageView {
+public class OverscanActivity extends Activity
+        implements OnQueryTextListener, ActionBar.TabListener {
+    public static class IV extends ImageView implements View.OnSystemUiVisibilityChangeListener {
         private OverscanActivity mActivity;
+        private ActionMode mActionMode;
         public IV(Context context) {
             super(context);
         }
@@ -48,64 +63,54 @@
             super(context, attrs);
         }
         public void setActivity(OverscanActivity act) {
+            setOnSystemUiVisibilityChangeListener(this);
             mActivity = act;
         }
+        @Override
         public void onSizeChanged(int w, int h, int oldw, int oldh) {
             mActivity.refreshSizes();
         }
-        public void onSystemUiVisibilityChanged(int visibility) {
-            mActivity.getState().onSystemUiVisibilityChanged(visibility);
+        @Override
+        public void onSystemUiVisibilityChange(int visibility) {
+            mActivity.updateCheckControls();
+            mActivity.refreshSizes();
         }
-    }
 
-    private interface State {
-        void apply();
-        State next();
-        void onSystemUiVisibilityChanged(int visibility);
-    }
-    private class NormalState implements State {
-        public void apply() {
-            display("Normal");
-            setFullscreen(false);
-            mImage.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
+        private class MyActionModeCallback implements ActionMode.Callback {
+            @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+                mode.setTitle("My Action Mode!");
+                mode.setSubtitle(null);
+                mode.setTitleOptionalHint(false);
+                menu.add("Sort By Size").setIcon(android.R.drawable.ic_menu_sort_by_size);
+                menu.add("Sort By Alpha").setIcon(android.R.drawable.ic_menu_sort_alphabetically);
+                return true;
+            }
+
+            @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+                return true;
+            }
+
+            @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+                return true;
+            }
+
+            @Override public void onDestroyActionMode(ActionMode mode) {
+                mActionMode = null;
+                mActivity.clearActionMode();
+            }
         }
-        public State next() {
-            return new FullscreenState();
+
+        public void startActionMode() {
+            if (mActionMode == null) {
+                ActionMode.Callback cb = new MyActionModeCallback();
+                mActionMode = startActionMode(cb);
+            }
         }
-        public void onSystemUiVisibilityChanged(int visibility) {
-        }
-    }
-    private class FullscreenState implements State {
-        public void apply() {
-            display("FULLSCREEN");
-            setFullscreen(true);
-        }
-        public State next() {
-            return new FullscreenLightsOutState();
-        }
-        public void onSystemUiVisibilityChanged(int visibility) {
-        }
-    }
-    private class FullscreenLightsOutState implements State {
-        public void apply() {
-            display("FULLSCREEN + LOW_PROFILE");
-            mImage.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
-        }
-        public State next() {
-            return new OverscanState();
-        }
-        public void onSystemUiVisibilityChanged(int visibility) {
-        }
-    }
-    private class OverscanState implements State {
-        public void apply() {
-            display("FULLSCREEN + HIDE_NAVIGATION");
-            mImage.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
-        }
-        public State next() {
-            return new NormalState();
-        }
-        public void onSystemUiVisibilityChanged(int visibility) {
+
+        public void stopActionMode() {
+            if (mActionMode != null) {
+                mActionMode.finish();
+            }
         }
     }
 
@@ -131,20 +136,18 @@
                 mImage.getRight(), mImage.getBottom());
     }
     void refreshSizes() {
-        mText2.setText(getDisplaySize() + " " + getViewSize());
-    }
-    private void display(String text) {
-        mText1.setText(text);
-        refreshSizes();
-    }
-    State getState() {
-        return mState;
+        mMetricsText.setText(getDisplaySize() + " " + getViewSize());
     }
 
     static int TOAST_LENGTH = 500;
     IV mImage;
-    TextView mText1, mText2;
-    State mState;
+    CheckBox[] mCheckControls = new CheckBox[6];
+    int[] mCheckFlags = new int[] { View.SYSTEM_UI_FLAG_LOW_PROFILE,
+            View.SYSTEM_UI_FLAG_FULLSCREEN, View.SYSTEM_UI_FLAG_HIDE_NAVIGATION,
+            View.SYSTEM_UI_FLAG_LAYOUT_STABLE, View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,
+            View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+    };
+    TextView mMetricsText;
 
     public OverscanActivity() {
     }
@@ -153,23 +156,86 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        // we need to ask for LAYOUT_IN_SCREEN before the window decor appears
-        Window win = getWindow();
-        WindowManager.LayoutParams winParams = win.getAttributes();
-        winParams.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
-        win.setAttributes(winParams);
+        getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
 
         setContentView(R.layout.overscan);
         mImage = (IV) findViewById(R.id.image);
         mImage.setActivity(this);
-        mText1 = (TextView) findViewById(R.id.text1);
-        mText2 = (TextView) findViewById(R.id.text2);
+
+        CompoundButton.OnCheckedChangeListener checkChangeListener
+                = new CompoundButton.OnCheckedChangeListener() {
+            @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                updateSystemUi();
+            }
+        };
+        mCheckControls[0] = (CheckBox) findViewById(R.id.modeLowProfile);
+        mCheckControls[1] = (CheckBox) findViewById(R.id.modeFullscreen);
+        mCheckControls[2] = (CheckBox) findViewById(R.id.modeHideNavigation);
+        mCheckControls[3] = (CheckBox) findViewById(R.id.layoutStable);
+        mCheckControls[4] = (CheckBox) findViewById(R.id.layoutFullscreen);
+        mCheckControls[5] = (CheckBox) findViewById(R.id.layoutHideNavigation);
+        for (int i=0; i<mCheckControls.length; i++) {
+            mCheckControls[i].setOnCheckedChangeListener(checkChangeListener);
+        }
+        ((CheckBox) findViewById(R.id.windowFullscreen)).setOnCheckedChangeListener(
+                new CompoundButton.OnCheckedChangeListener() {
+                    @Override
+                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                        setFullscreen(isChecked);
+                    }
+                }
+        );
+        ((CheckBox) findViewById(R.id.windowHideActionBar)).setOnCheckedChangeListener(
+                new CompoundButton.OnCheckedChangeListener() {
+                    @Override
+                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                        if (isChecked) {
+                            getActionBar().hide();
+                        } else {
+                            getActionBar().show();
+                        }
+                    }
+                }
+        );
+        ((CheckBox) findViewById(R.id.windowActionMode)).setOnCheckedChangeListener(
+                new CompoundButton.OnCheckedChangeListener() {
+                    @Override
+                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                        if (isChecked) {
+                            mImage.startActionMode();
+                        } else {
+                            mImage.stopActionMode();
+                        }
+                    }
+                }
+        );
+        mMetricsText = (TextView) findViewById(R.id.metricsText);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.content_actions, menu);
+        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
+        searchView.setOnQueryTextListener(this);
+
+        // Set file with share history to the provider and set the share intent.
+        MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
+        ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
+        actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
+        // Note that you can set/change the intent any time,
+        // say when the user has selected an image.
+        Intent shareIntent = new Intent(Intent.ACTION_SEND);
+        shareIntent.setType("image/*");
+        Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
+        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
+        actionProvider.setShareIntent(shareIntent);
+        return true;
     }
 
     @Override
     public void onAttachedToWindow() {
-        mState = new NormalState();
-        mState.apply();
+        updateCheckControls();
     }
 
     @Override
@@ -177,8 +243,65 @@
         super.onResume();
     }
 
-    public void clicked(View v) {
-        mState = mState.next();
-        mState.apply();
+    public void onSort(MenuItem item) {
+    }
+
+    @Override
+    public boolean onQueryTextChange(String newText) {
+        return true;
+    }
+
+    @Override
+    public boolean onQueryTextSubmit(String query) {
+        Toast.makeText(this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.show_tabs:
+                getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+                item.setChecked(true);
+                return true;
+            case R.id.hide_tabs:
+                getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+                item.setChecked(true);
+                return true;
+        }
+        return false;
+    }
+
+    @Override
+    public void onTabSelected(Tab tab, FragmentTransaction ft) {
+    }
+
+    @Override
+    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
+    }
+
+    @Override
+    public void onTabReselected(Tab tab, FragmentTransaction ft) {
+    }
+
+    public void updateCheckControls() {
+        int visibility = mImage.getSystemUiVisibility();
+        for (int i=0; i<mCheckControls.length; i++) {
+            mCheckControls[i].setChecked((visibility&mCheckFlags[i]) != 0);
+        }
+    }
+
+    public void updateSystemUi() {
+        int visibility = 0;
+        for (int i=0; i<mCheckControls.length; i++) {
+            if (mCheckControls[i].isChecked()) {
+                visibility |= mCheckFlags[i];
+            }
+        }
+        mImage.setSystemUiVisibility(visibility);
+    }
+
+    public void clearActionMode() {
+        ((CheckBox) findViewById(R.id.windowActionMode)).setChecked(false);
     }
 }
diff --git a/samples/ApiDemos/src/com/example/android/apis/view/VideoPlayerActivity.java b/samples/ApiDemos/src/com/example/android/apis/view/VideoPlayerActivity.java
new file mode 100644
index 0000000..e5333d7
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/view/VideoPlayerActivity.java
@@ -0,0 +1,281 @@
+/*
+ * 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.apis.view;
+
+import android.app.ActionBar;
+import android.app.ActionBar.Tab;
+import android.app.Activity;
+import android.app.FragmentTransaction;
+import android.content.Context;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.Window;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.SearchView;
+import android.widget.SeekBar;
+import android.widget.ShareActionProvider;
+import android.widget.TextView;
+import android.widget.Toast;
+import android.widget.SearchView.OnQueryTextListener;
+
+import com.example.android.apis.R;
+
+/**
+ * This activity demonstrates how to use system UI flags to implement
+ * a video player style of UI (where the navigation bar should be hidden
+ * when the user isn't interacting with the screen to achieve full screen
+ * video playback).
+ */
+public class VideoPlayerActivity extends Activity
+        implements OnQueryTextListener, ActionBar.TabListener {
+
+    /**
+     * Implementation of a view for displaying full-screen video playback,
+     * using system UI flags to transition in and out of modes where the entire
+     * screen can be filled with content (at the expense of no user interaction).
+     */
+//BEGIN_INCLUDE(content)
+    public static class Content extends ImageView implements
+            View.OnSystemUiVisibilityChangeListener, View.OnClickListener,
+            ActionBar.OnMenuVisibilityListener {
+        Activity mActivity;
+        TextView mTitleView;
+        Button mPlayButton;
+        SeekBar mSeekView;
+        boolean mAddedMenuListener;
+        boolean mMenusOpen;
+        boolean mPaused;
+        boolean mNavVisible;
+        int mLastSystemUiVis;
+
+        Runnable mNavHider = new Runnable() {
+            @Override public void run() {
+                setNavVisibility(false);
+            }
+        };
+
+        public Content(Context context, AttributeSet attrs) {
+            super(context, attrs);
+            setOnSystemUiVisibilityChangeListener(this);
+            setOnClickListener(this);
+        }
+
+        public void init(Activity activity, TextView title, Button playButton,
+                SeekBar seek) {
+            // This called by the containing activity to supply the surrounding
+            // state of the video player that it will interact with.
+            mActivity = activity;
+            mTitleView = title;
+            mPlayButton = playButton;
+            mSeekView = seek;
+            mPlayButton.setOnClickListener(this);
+            setPlayPaused(true);
+        }
+
+        @Override protected void onAttachedToWindow() {
+            super.onAttachedToWindow();
+            if (mActivity != null) {
+                mAddedMenuListener = true;
+                mActivity.getActionBar().addOnMenuVisibilityListener(this);
+            }
+        }
+
+        @Override protected void onDetachedFromWindow() {
+            super.onDetachedFromWindow();
+            if (mAddedMenuListener) {
+                mActivity.getActionBar().removeOnMenuVisibilityListener(this);
+            }
+        }
+
+        @Override public void onSystemUiVisibilityChange(int visibility) {
+            // Detect when we go out of nav-hidden mode, to clear our state
+            // back to having the full UI chrome up.  Only do this when
+            // the state is changing and nav is no longer hidden.
+            int diff = mLastSystemUiVis ^ visibility;
+            mLastSystemUiVis = visibility;
+            if ((diff&SYSTEM_UI_FLAG_HIDE_NAVIGATION) != 0
+                    && (visibility&SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
+                setNavVisibility(true);
+            }
+        }
+
+        @Override protected void onWindowVisibilityChanged(int visibility) {
+            super.onWindowVisibilityChanged(visibility);
+
+            // When we become visible or invisible, play is paused.
+            setPlayPaused(true);
+        }
+
+        @Override public void onClick(View v) {
+            if (v == mPlayButton) {
+                // Clicking on the play/pause button toggles its state.
+                setPlayPaused(!mPaused);
+            } else {
+                // Clicking elsewhere makes the navigation visible.
+                setNavVisibility(true);
+            }
+        }
+
+        @Override public void onMenuVisibilityChanged(boolean isVisible) {
+            mMenusOpen = isVisible;
+            setNavVisibility(true);
+        }
+
+        void setPlayPaused(boolean paused) {
+            mPaused = paused;
+            mPlayButton.setText(paused ? R.string.play : R.string.pause);
+            setKeepScreenOn(!paused);
+            setNavVisibility(true);
+        }
+
+        void setNavVisibility(boolean visible) {
+            int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                    | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
+                    | SYSTEM_UI_FLAG_LAYOUT_STABLE;
+            if (!visible) {
+                newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN
+                        | SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+            }
+
+            // If we are now visible, schedule a timer for us to go invisible.
+            if (visible) {
+                Handler h = getHandler();
+                if (h != null) {
+                    h.removeCallbacks(mNavHider);
+                    if (!mMenusOpen && !mPaused) {
+                        // If the menus are open or play is paused, we will not auto-hide.
+                        h.postDelayed(mNavHider, 1500);
+                    }
+                }
+            }
+
+            // Set the new desired visibility.
+            setSystemUiVisibility(newVis);
+            mTitleView.setVisibility(visible ? VISIBLE : INVISIBLE);
+            mPlayButton.setVisibility(visible ? VISIBLE : INVISIBLE);
+            mSeekView.setVisibility(visible ? VISIBLE : INVISIBLE);
+        }
+    }
+//END_INCLUDE(content)
+
+    Content mContent;
+
+    public VideoPlayerActivity() {
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
+
+        setContentView(R.layout.video_player);
+        mContent = (Content)findViewById(R.id.content);
+        mContent.init(this, (TextView)findViewById(R.id.title),
+                (Button)findViewById(R.id.play),
+                (SeekBar)findViewById(R.id.seekbar));
+
+        ActionBar bar = getActionBar();
+        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));
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.content_actions, menu);
+        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
+        searchView.setOnQueryTextListener(this);
+
+        // Set file with share history to the provider and set the share intent.
+        MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
+        ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
+        actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
+        // Note that you can set/change the intent any time,
+        // say when the user has selected an image.
+        Intent shareIntent = new Intent(Intent.ACTION_SEND);
+        shareIntent.setType("image/*");
+        Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
+        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
+        actionProvider.setShareIntent(shareIntent);
+        return true;
+    }
+
+    @Override
+    public void onAttachedToWindow() {
+        super.onAttachedToWindow();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+    }
+
+    /**
+     * This method is declared in the menu.
+     */
+    public void onSort(MenuItem item) {
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.show_tabs:
+                getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+                item.setChecked(true);
+                return true;
+            case R.id.hide_tabs:
+                getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
+                item.setChecked(true);
+                return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean onQueryTextChange(String newText) {
+        return true;
+    }
+
+    @Override
+    public boolean onQueryTextSubmit(String query) {
+        Toast.makeText(this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
+        return true;
+    }
+
+    @Override
+    public void onTabSelected(Tab tab, FragmentTransaction ft) {
+    }
+
+    @Override
+    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
+    }
+
+    @Override
+    public void onTabReselected(Tab tab, FragmentTransaction ft) {
+    }
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/view/WebView1.java b/samples/ApiDemos/src/com/example/android/apis/view/WebView1.java
index d6a4efe..1426b65 100644
--- a/samples/ApiDemos/src/com/example/android/apis/view/WebView1.java
+++ b/samples/ApiDemos/src/com/example/android/apis/view/WebView1.java
@@ -24,7 +24,7 @@
 
 
 /**
- * Sample creating 10 webviews.
+ * Sample creating 1 webviews.
  */
 public class WebView1 extends Activity {
     
@@ -40,32 +40,5 @@
         
         wv = (WebView) findViewById(R.id.wv1);
         wv.loadData("<a href='x'>Hello World! - 1</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv2);
-        wv.loadData("<a href='x'>Hello World! - 2</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv3);
-        wv.loadData("<a href='x'>Hello World! - 3</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv4);
-        wv.loadData("<a href='x'>Hello World! - 4</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv5);
-        wv.loadData("<a href='x'>Hello World! - 5</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv6);
-        wv.loadData("<a href='x'>Hello World! - 6</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv7);
-        wv.loadData("<a href='x'>Hello World! - 7</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv8);
-        wv.loadData("<a href='x'>Hello World! - 8</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv9);
-        wv.loadData("<a href='x'>Hello World! - 9</a>", mimeType, null);
-        
-        wv = (WebView) findViewById(R.id.wv10);
-        wv.loadData("<a href='x'>Hello World! - 10</a>", mimeType, null);
     }
 }
diff --git a/samples/AppNavigation/Android.mk b/samples/AppNavigation/Android.mk
index 758201e..cdc0717 100644
--- a/samples/AppNavigation/Android.mk
+++ b/samples/AppNavigation/Android.mk
@@ -7,8 +7,6 @@
 
 LOCAL_PACKAGE_NAME := AppNavigation
 
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
-
 LOCAL_SDK_VERSION := current
 
 include $(BUILD_PACKAGE)
diff --git a/samples/AppNavigation/AndroidManifest.xml b/samples/AppNavigation/AndroidManifest.xml
index 135016e..6a600c4 100644
--- a/samples/AppNavigation/AndroidManifest.xml
+++ b/samples/AppNavigation/AndroidManifest.xml
@@ -19,8 +19,6 @@
         xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.example.android.appnavigation">
 
-    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
-
     <application android:label="@string/app_name">
         <activity android:name=".app.AppNavHomeActivity"
                 android:label="@string/app_nav_home_label">
@@ -31,7 +29,8 @@
         </activity>
 
         <activity android:name=".app.SimpleUpActivity"
-                  android:label="@string/simple_up_label">
+                  android:label="@string/simple_up_label"
+                  android:parentActivityName=".app.AppNavHomeActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
@@ -41,7 +40,8 @@
         </activity>
 
         <activity android:name=".app.PeerActivity"
-                  android:label="@string/peer_label">
+                  android:label="@string/peer_label"
+                  android:parentActivityName=".app.AppNavHomeActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
@@ -51,7 +51,8 @@
         </activity>
 
         <activity android:name=".app.ViewFromOtherTaskActivity"
-                  android:label="@string/view_from_other_task_label">
+                  android:label="@string/view_from_other_task_label"
+                  android:parentActivityName=".app.AppNavHomeActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
@@ -71,7 +72,8 @@
         </activity>
 
         <activity android:name=".app.ContentViewActivity"
-                  android:label="@string/content_view_label">
+                  android:label="@string/content_view_label"
+                  android:parentActivityName=".app.ContentCategoryActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.VIEW" />
@@ -83,7 +85,8 @@
         </activity>
 
         <activity android:name=".app.ContentCategoryActivity"
-                  android:label="@string/content_category_label">
+                  android:label="@string/content_category_label"
+                  android:parentActivityName=".app.AppNavHomeActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
@@ -93,7 +96,8 @@
         </activity>
 
         <activity android:name=".app.NotificationsActivity"
-                  android:label="@string/notifications_label">
+                  android:label="@string/notifications_label"
+                  android:parentActivityName=".app.AppNavHomeActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java
index 534f391..ad41e9d 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java
@@ -21,8 +21,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.NavUtils;
-import android.view.MenuItem;
 import android.view.View;
 
 public class ContentCategoryActivity extends Activity {
@@ -30,17 +28,6 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.content_category);
-
-        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            NavUtils.navigateUpFromSameTask(this);
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
     }
 
     public void onViewContent(View v) {
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java
index 5283230..ffbbef3 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java
@@ -21,11 +21,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.NavUtils;
-import android.support.v4.app.ShareCompat;
-import android.support.v4.app.TaskStackBuilder;
-import android.text.TextUtils;
-import android.view.MenuItem;
 import android.widget.TextView;
 
 public class ContentViewActivity extends Activity {
@@ -36,8 +31,6 @@
         super.onCreate(savedInstanceState);
         setContentView(R.layout.content_view);
 
-        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
-
         Intent intent = getIntent();
         if (Intent.ACTION_VIEW.equals(intent.getAction())) {
             TextView tv = (TextView) findViewById(R.id.status_text);
@@ -47,21 +40,4 @@
             tv.setText(intent.getStringExtra(EXTRA_TEXT));
         }
     }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            Intent upIntent = NavUtils.getParentActivityIntent(this);
-            if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
-                TaskStackBuilder.from(this)
-                        .addParentStack(this)
-                        .startActivities();
-                finish();
-            } else {
-                NavUtils.navigateUpTo(this, upIntent);
-            }
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
 }
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java
index 1d0154d..e7aee90 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java
@@ -19,9 +19,9 @@
 import com.example.android.appnavigation.R;
 
 import android.app.Activity;
+import android.app.TaskStackBuilder;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.TaskStackBuilder;
 import android.view.View;
 
 public class InterstitialMessageActivity extends Activity {
@@ -32,7 +32,7 @@
     }
 
     public void onViewContent(View v) {
-        TaskStackBuilder.from(this)
+        TaskStackBuilder.create(this)
                 .addParentStack(ContentViewActivity.class)
                 .addNextIntent(new Intent(this, ContentViewActivity.class)
                         .putExtra(ContentViewActivity.EXTRA_TEXT, "From Interstitial Notification"))
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java
index f14dbc6..cfb3b42 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java
@@ -19,14 +19,12 @@
 import com.example.android.appnavigation.R;
 
 import android.app.Activity;
+import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
+import android.app.TaskStackBuilder;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.NavUtils;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.TaskStackBuilder;
-import android.view.MenuItem;
 import android.view.View;
 
 public class NotificationsActivity extends Activity {
@@ -34,27 +32,16 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.notifications);
-
-        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            NavUtils.navigateUpFromSameTask(this);
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
     }
 
     public void onPostDirect(View v) {
-        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+        Notification.Builder builder = new Notification.Builder(this)
                 .setTicker("Direct Notification")
                 .setSmallIcon(android.R.drawable.stat_notify_chat)
                 .setContentTitle("Direct Notification")
                 .setContentText("This will open the content viewer")
                 .setAutoCancel(true)
-                .setContentIntent(TaskStackBuilder.from(this)
+                .setContentIntent(TaskStackBuilder.create(this)
                         .addParentStack(ContentViewActivity.class)
                         .addNextIntent(new Intent(this, ContentViewActivity.class)
                                 .putExtra(ContentViewActivity.EXTRA_TEXT, "From Notification"))
@@ -64,7 +51,7 @@
     }
 
     public void onPostInterstitial(View v) {
-        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+        Notification.Builder builder = new Notification.Builder(this)
                 .setTicker("Interstitial Notification")
                 .setSmallIcon(android.R.drawable.stat_notify_chat)
                 .setContentTitle("Interstitial Notification")
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java
index 45083fd..de08108 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java
@@ -18,12 +18,9 @@
 
 import com.example.android.appnavigation.R;
 
-import android.app.ActionBar;
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.NavUtils;
-import android.view.MenuItem;
 import android.view.View;
 import android.widget.TextView;
 
@@ -38,22 +35,11 @@
         super.onCreate(savedInstanceState);
         setContentView(R.layout.peer);
 
-        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
-
         mPeerCount = getIntent().getIntExtra(EXTRA_PEER_COUNT, 0) + 1;
         TextView tv = (TextView) findViewById(R.id.peer_counter);
         tv.setText(getResources().getText(R.string.peer_count).toString() + mPeerCount);
     }
 
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            NavUtils.navigateUpFromSameTask(this);
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
     public void onLaunchPeer(View v) {
         Intent target = new Intent(this, PeerActivity.class);
         target.putExtra(EXTRA_PEER_COUNT, mPeerCount);
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java
index 4141951..9366678 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java
@@ -18,27 +18,13 @@
 
 import com.example.android.appnavigation.R;
 
-import android.app.ActionBar;
 import android.app.Activity;
 import android.os.Bundle;
-import android.support.v4.app.NavUtils;
-import android.view.MenuItem;
 
 public class SimpleUpActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.simple_up);
-
-        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            NavUtils.navigateUpFromSameTask(this);
-            return true;
-        }
-        return super.onOptionsItemSelected(item);
     }
 }
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java
index 06e1699..f183554 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java
@@ -21,8 +21,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.NavUtils;
-import android.view.MenuItem;
 import android.view.View;
 
 public class ViewFromOtherTaskActivity extends Activity {
@@ -30,17 +28,6 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.view_from_other_task);
-
-        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            NavUtils.navigateUpFromSameTask(this);
-            return true;
-        }
-        return false;
     }
 
     public void onLaunchOtherTask(View v) {
diff --git a/samples/BrowserPlugin/jni/RenderingThread.cpp b/samples/BrowserPlugin/jni/RenderingThread.cpp
index 1307e90..5e27f28 100644
--- a/samples/BrowserPlugin/jni/RenderingThread.cpp
+++ b/samples/BrowserPlugin/jni/RenderingThread.cpp
@@ -26,6 +26,8 @@
 
 #include "ANPNativeWindow_npapi.h"
 
+#include <android/native_window.h>
+
 extern ANPLogInterfaceV0           gLogI;
 extern ANPNativeWindowInterfaceV0  gNativeWindowI;
 
diff --git a/samples/GlobalTime/Android.mk b/samples/GlobalTime/Android.mk
deleted file mode 100644
index a390faa..0000000
--- a/samples/GlobalTime/Android.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_PACKAGE_NAME := GlobalTime
-
-# TODO: build fails with this set
-# LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/samples/GlobalTime/AndroidManifest.xml b/samples/GlobalTime/AndroidManifest.xml
deleted file mode 100644
index 7aee91b..0000000
--- a/samples/GlobalTime/AndroidManifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.globaltime">
-    <application android:icon="@drawable/app_global_time"
-            android:label="Global Time">
-        <activity android:name="GlobalTime"
-                android:theme="@style/Theme">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.DEFAULT" />
-                <category android:name="android.intent.category.LAUNCHER" />                                            
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
diff --git a/samples/GlobalTime/MODULE_LICENSE_APACHE2 b/samples/GlobalTime/MODULE_LICENSE_APACHE2
deleted file mode 100644
index e69de29..0000000
--- a/samples/GlobalTime/MODULE_LICENSE_APACHE2
+++ /dev/null
diff --git a/samples/GlobalTime/NOTICE b/samples/GlobalTime/NOTICE
deleted file mode 100644
index c5b1efa..0000000
--- a/samples/GlobalTime/NOTICE
+++ /dev/null
@@ -1,190 +0,0 @@
-
-   Copyright (c) 2005-2008, 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.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache 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
-
diff --git a/samples/GlobalTime/assets/cities_en.dat b/samples/GlobalTime/assets/cities_en.dat
deleted file mode 100644
index c982ef4..0000000
--- a/samples/GlobalTime/assets/cities_en.dat
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/assets/earth.raw b/samples/GlobalTime/assets/earth.raw
deleted file mode 100644
index f884e75..0000000
--- a/samples/GlobalTime/assets/earth.raw
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/assets/lights.dat b/samples/GlobalTime/assets/lights.dat
deleted file mode 100644
index 14d4f36..0000000
--- a/samples/GlobalTime/assets/lights.dat
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/assets/tz512.raw b/samples/GlobalTime/assets/tz512.raw
deleted file mode 100644
index 3ce1d5c..0000000
--- a/samples/GlobalTime/assets/tz512.raw
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/assets/world.gles b/samples/GlobalTime/assets/world.gles
deleted file mode 100644
index 815db1e..0000000
--- a/samples/GlobalTime/assets/world.gles
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/res/drawable-hdpi/app_global_time.png b/samples/GlobalTime/res/drawable-hdpi/app_global_time.png
deleted file mode 100755
index 46c658e..0000000
--- a/samples/GlobalTime/res/drawable-hdpi/app_global_time.png
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/res/drawable-mdpi/app_global_time.png b/samples/GlobalTime/res/drawable-mdpi/app_global_time.png
deleted file mode 100644
index 914977d..0000000
--- a/samples/GlobalTime/res/drawable-mdpi/app_global_time.png
+++ /dev/null
Binary files differ
diff --git a/samples/GlobalTime/res/layout/global_time.xml b/samples/GlobalTime/res/layout/global_time.xml
deleted file mode 100644
index 6bb3c79..0000000
--- a/samples/GlobalTime/res/layout/global_time.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<EditText xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text"
-    android:layout_width="match_parent" android:layout_height="match_parent"
-    android:textSize="18sp"
-    android:text="@string/global_time_text_text" />
-
-
diff --git a/samples/GlobalTime/res/values/strings.xml b/samples/GlobalTime/res/values/strings.xml
deleted file mode 100644
index d35c059..0000000
--- a/samples/GlobalTime/res/values/strings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-* Copyright (C) 2007 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="global_time_text_text">Global Time</string>
-
-</resources>
diff --git a/samples/GlobalTime/res/values/styles.xml b/samples/GlobalTime/res/values/styles.xml
deleted file mode 100644
index 6051f0f..0000000
--- a/samples/GlobalTime/res/values/styles.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/* //device/apps/Calendar/assets/res/any/styles.xml
-**
-** Copyright 2006, 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>
-    <style name="Theme" parent="android:Theme.Black">
-        <item name="android:windowNoTitle">true</item>
-        <item name="android:windowBackground">@null</item>
-        <!-- <item name="android:windowFrame">@null</item> -->
-    </style>
-</resources>
diff --git a/samples/GlobalTime/src/com/android/globaltime/Annulus.java b/samples/GlobalTime/src/com/android/globaltime/Annulus.java
deleted file mode 100644
index b811d88..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/Annulus.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * A class that draws a ring with a given center and inner and outer radii.
- * The inner and outer rings each have a color and the remaining pixels are
- * colored by interpolation.  GlobalTime uses this class to simulate an
- * "atmosphere" around the earth.
- */
-public class Annulus extends Shape {
-
-    /**
-     * Constructs an annulus.
-     * 
-     * @param centerX the X coordinate of the center point
-     * @param centerY the Y coordinate of the center point
-     * @param Z the fixed Z for the entire ring
-     * @param innerRadius the inner radius
-     * @param outerRadius the outer radius
-     * @param rInner the red channel of the color of the inner ring
-     * @param gInner the green channel of the color of the inner ring
-     * @param bInner the blue channel of the color of the inner ring
-     * @param aInner the alpha channel of the color of the inner ring
-     * @param rOuter the red channel of the color of the outer ring
-     * @param gOuter the green channel of the color of the outer ring
-     * @param bOuter the blue channel of the color of the outer ring
-     * @param aOuter the alpha channel of the color of the outer ring
-     * @param sectors the number of sectors used to approximate curvature
-     */
-    public Annulus(float centerX, float centerY, float Z,
-        float innerRadius, float outerRadius,
-        float rInner, float gInner, float bInner, float aInner,
-        float rOuter, float gOuter, float bOuter, float aOuter,
-        int sectors) {
-        super(GL10.GL_TRIANGLES, GL10.GL_UNSIGNED_SHORT,
-              false, false, true);
-
-        int radii = sectors + 1;
-
-        int[] vertices = new int[2 * 3 * radii];
-        int[] colors = new int[2 * 4 * radii];
-        short[] indices = new short[2 * 3 * radii];
-
-        int vidx = 0;
-        int cidx = 0;
-        int iidx = 0;
-
-        for (int i = 0; i < radii; i++) {
-            float theta = (i * TWO_PI) / (radii - 1);
-            float cosTheta = (float) Math.cos(theta);
-            float sinTheta = (float) Math.sin(theta);
-
-            vertices[vidx++] = toFixed(centerX + innerRadius * cosTheta);
-            vertices[vidx++] = toFixed(centerY + innerRadius * sinTheta);
-            vertices[vidx++] = toFixed(Z);
-
-            vertices[vidx++] = toFixed(centerX + outerRadius * cosTheta);
-            vertices[vidx++] = toFixed(centerY + outerRadius * sinTheta);
-            vertices[vidx++] = toFixed(Z);
-        
-            colors[cidx++] = toFixed(rInner);
-            colors[cidx++] = toFixed(gInner);
-            colors[cidx++] = toFixed(bInner);
-            colors[cidx++] = toFixed(aInner);
-
-            colors[cidx++] = toFixed(rOuter);
-            colors[cidx++] = toFixed(gOuter);
-            colors[cidx++] = toFixed(bOuter);
-            colors[cidx++] = toFixed(aOuter);
-        }
-
-        for (int i = 0; i < sectors; i++) {
-            indices[iidx++] = (short) (2 * i);
-            indices[iidx++] = (short) (2 * i + 1);
-            indices[iidx++] = (short) (2 * i + 2);
-
-            indices[iidx++] = (short) (2 * i + 1);
-            indices[iidx++] = (short) (2 * i + 3);
-            indices[iidx++] = (short) (2 * i + 2);
-        }
-        
-        allocateBuffers(vertices, null, null, colors, indices);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/City.java b/samples/GlobalTime/src/com/android/globaltime/City.java
deleted file mode 100644
index 0b4cb84..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/City.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.TimeZone;
-
-/**
- * A class representing a city, with an associated position, time zone name,
- * and raw offset from UTC.
- */
-public  class City implements Comparable<City> {
-
-    private static Map<String,City> cities = new HashMap<String,City>();
-    private static City[] citiesByRawOffset;
-
-    private String name;
-    private String timeZoneID;
-    private TimeZone timeZone = null;
-    private int rawOffset;
-    private float latitude, longitude;
-    private float x, y, z;
-    
-    /**
-     * Loads the city database.  The cities must be stored in order by raw
-     * offset from UTC.
-     */
-    public static void loadCities(InputStream is) throws IOException {
-        DataInputStream dis = new DataInputStream(is);
-        int numCities = dis.readInt();
-        citiesByRawOffset = new City[numCities];
-
-        byte[] buf = new byte[24];
-        for (int i = 0; i < numCities; i++) {
-            String name = dis.readUTF();
-            String tzid = dis.readUTF();
-            dis.read(buf);
-  
-//          The code below is a faster version of:            
-//          int rawOffset = dis.readInt();
-//          float latitude = dis.readFloat();
-//          float longitude = dis.readFloat();
-//          float cx = dis.readFloat();
-//          float cy = dis.readFloat();
-//          float cz = dis.readFloat();
-
-            int rawOffset =
-                       (buf[ 0] << 24) |       ((buf[ 1] & 0xff) << 16) |
-                      ((buf[ 2] & 0xff) << 8) | (buf[ 3] & 0xff);
-            int ilat = (buf[ 4] << 24) |       ((buf[ 5] & 0xff) << 16) |
-                      ((buf[ 6] & 0xff) << 8) | (buf[ 7] & 0xff);
-            int ilon = (buf[ 8] << 24) |       ((buf[ 9] & 0xff) << 16) |
-                      ((buf[10] & 0xff) << 8) | (buf[11] & 0xff);
-            int icx =  (buf[12] << 24) |       ((buf[13] & 0xff) << 16) |
-                      ((buf[14] & 0xff) << 8) | (buf[15] & 0xff);
-            int icy =  (buf[16] << 24) |       ((buf[17] & 0xff) << 16) |
-                      ((buf[18] & 0xff) << 8) | (buf[19] & 0xff);
-            int icz =  (buf[20] << 24) |       ((buf[21] & 0xff) << 16) |
-                      ((buf[22] & 0xff) << 8) | (buf[23] & 0xff);
-            float latitude = Float.intBitsToFloat(ilat);
-            float longitude = Float.intBitsToFloat(ilon);
-            float cx = Float.intBitsToFloat(icx);
-            float cy = Float.intBitsToFloat(icy);
-            float cz = Float.intBitsToFloat(icz);
-
-            City city = new City(name, tzid, rawOffset,
-                                 latitude, longitude, cx, cy, cz);
-
-            cities.put(name, city);
-            citiesByRawOffset[i] = city;
-        }
-    }
-    
-    /**
-     * Returns the cities, ordered by name.
-     */
-    public static City[] getCitiesByName() {
-        City[] ocities = new City[cities.size()];
-        Iterator<City> iter = cities.values().iterator();
-        int idx = 0;
-        while (iter.hasNext()) {
-            ocities[idx++] = iter.next();
-        }
-        Arrays.sort(ocities);
-        return ocities;
-    }
-    
-    /**
-     * Returns the cities, ordered by offset, accounting for summer/daylight
-     * savings time.  This requires reading the entire time zone database
-     * behind the scenes.
-     */
-    public static City[] getCitiesByOffset() {
-        City[] ocities = new City[cities.size()];
-        Iterator<City> iter = cities.values().iterator();
-        int idx = 0;
-        while (iter.hasNext()) {
-            ocities[idx++] = iter.next();
-        }
-        Arrays.sort(ocities, new Comparator() {
-                public int compare(Object o1, Object o2) {
-                    long now = System.currentTimeMillis();
-                    City c1 = (City)o1;
-                    City c2 = (City)o2;
-                    TimeZone tz1 = c1.getTimeZone();
-                    TimeZone tz2 = c2.getTimeZone();
-                    int off1 = tz1.getOffset(now);
-                    int off2 = tz2.getOffset(now);
-                    if (off1 == off2) {
-                        float dlat = c2.getLatitude() - c1.getLatitude();
-                        if (dlat < 0.0f) return -1;
-                        if (dlat > 0.0f) return 1;
-                        return 0;
-                    }
-                    return off1 - off2;
-                }
-            });
-        return ocities;
-    }
-    
-    
-    /**
-     * Returns the cities, ordered by offset, accounting for summer/daylight
-     * savings time.  This does not require reading the time zone database
-     * since the cities are pre-sorted.
-     */
-    public static City[] getCitiesByRawOffset() {
-        return citiesByRawOffset;
-    }
-    
-    /**
-     * Returns an Iterator over all cities, in raw offset order.
-     */
-    public static Iterator<City> iterator() {
-        return cities.values().iterator();
-    }
-    
-    /**
-     * Returns the total number of cities.
-     */
-    public static int numCities() {
-        return cities.size();
-    }
-    
-    /**
-     * Constructs a city with the given name, time zone name, raw offset,
-     * latitude, longitude, and 3D (X, Y, Z) coordinate.
-     */
-    public City(String name, String timeZoneID,
-                int rawOffset,
-                float latitude, float longitude,
-                float x, float y, float z) {
-        this.name = name;
-        this.timeZoneID = timeZoneID;
-        this.rawOffset = rawOffset;
-        this.latitude = latitude;
-        this.longitude = longitude;
-        this.x = x;
-        this.y = y;
-        this.z = z;
-    }
-    
-    public String getName() {
-        return name;
-    }
-    
-    public TimeZone getTimeZone() {
-        if (timeZone == null) {
-            timeZone = TimeZone.getTimeZone(timeZoneID);
-        }
-        return timeZone;
-    }
-    
-    public float getLongitude() {
-        return longitude;
-    }
-    
-    public float getLatitude() {
-        return latitude;
-    }
-    
-    public float getX() {
-        return x;
-    }
-    
-    public float getY() {
-        return y;
-    }
-    
-    public float getZ() {
-        return z;
-    }
-    
-    public float getRawOffset() {
-        return rawOffset / 3600000.0f;
-    }
-
-    public int getRawOffsetMillis() {
-        return rawOffset;
-    }
-    
-    /**
-     * Returns this city's offset from UTC, taking summer/daylight savigns
-     * time into account.
-     */
-    public float getOffset() {
-        long now = System.currentTimeMillis();
-        if (timeZone == null) {
-            timeZone = TimeZone.getTimeZone(timeZoneID);
-        }
-        return timeZone.getOffset(now) / 3600000.0f;
-    }
-    
-    /**
-     * Compares this city to another by name.
-     */
-    public int compareTo(City o) {
-        return name.compareTo(o.name);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/Clock.java b/samples/GlobalTime/src/com/android/globaltime/Clock.java
deleted file mode 100644
index 9aad71a..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/Clock.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
-
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Path;
-import android.graphics.RectF;
-import android.text.format.DateUtils;
-import android.view.animation.AccelerateDecelerateInterpolator;
-import android.view.animation.Interpolator;
-
-/**
- * A class that draws an analog clock face with information about the current
- * time in a given city.
- */
-public class Clock {
-
-    static final int MILLISECONDS_PER_MINUTE = 60 * 1000;
-    static final int MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
-
-    private City mCity = null;
-    private long mCitySwitchTime;
-    private long mTime;
-
-    private float mColorRed = 1.0f;
-    private float mColorGreen = 1.0f;
-    private float mColorBlue = 1.0f;
-
-    private long mOldOffset;
-
-    private Interpolator mClockHandInterpolator =
-        new AccelerateDecelerateInterpolator();
-
-    public Clock() {
-        // Empty constructor
-    }
-
-    /**
-     * Adds a line to the given Path.  The line extends from
-     * radius r0 to radius r1 about the center point (cx, cy),
-     * at an angle given by pos.
-     * 
-     * @param path the Path to draw to
-     * @param radius the radius of the outer rim of the clock
-     * @param pos the angle, with 0 and 1 at 12:00
-     * @param cx the X coordinate of the clock center
-     * @param cy the Y coordinate of the clock center
-     * @param r0 the starting radius for the line
-     * @param r1 the ending radius for the line
-     */
-    private static void drawLine(Path path,
-        float radius, float pos, float cx, float cy, float r0, float r1) {
-        float theta = pos * Shape.TWO_PI - Shape.PI_OVER_TWO;
-        float dx = (float) Math.cos(theta);
-        float dy = (float) Math.sin(theta);
-        float p0x = cx + dx * r0;
-        float p0y = cy + dy * r0;
-        float p1x = cx + dx * r1;
-        float p1y = cy + dy * r1;
-
-        float ox =  (p1y - p0y);
-        float oy = -(p1x - p0x);
-
-        float norm = (radius / 2.0f) / (float) Math.sqrt(ox * ox + oy * oy);
-        ox *= norm;
-        oy *= norm;
-
-        path.moveTo(p0x - ox, p0y - oy);
-        path.lineTo(p1x - ox, p1y - oy);
-        path.lineTo(p1x + ox, p1y + oy);
-        path.lineTo(p0x + ox, p0y + oy);
-        path.close();
-    }
-
-    /**
-     * Adds a vertical arrow to the given Path.
-     * 
-     * @param path the Path to draw to
-     */
-    private static void drawVArrow(Path path,
-        float cx, float cy, float width, float height) {
-        path.moveTo(cx - width / 2.0f, cy);
-        path.lineTo(cx, cy + height);
-        path.lineTo(cx + width / 2.0f, cy);
-        path.close();
-    }
-
-    /**
-     * Adds a horizontal arrow to the given Path.
-     * 
-     * @param path the Path to draw to
-     */
-    private static void drawHArrow(Path path,
-        float cx, float cy, float width, float height) {
-        path.moveTo(cx, cy - height / 2.0f);
-        path.lineTo(cx + width, cy);
-        path.lineTo(cx, cy + height / 2.0f);
-        path.close();
-    }
-
-    /**
-     * Returns an offset in milliseconds to be subtracted from the current time
-     * in order to obtain an smooth interpolation between the previously
-     * displayed time and the current time.
-     */
-    private long getOffset(float lerp) {
-        long doffset = (long) (mCity.getOffset() *
-            (float) MILLISECONDS_PER_HOUR - mOldOffset);
-        int sign;
-        if (doffset < 0) {
-            doffset = -doffset;
-            sign = -1;
-        } else {
-            sign = 1;
-        }
-
-        while (doffset > 12L * MILLISECONDS_PER_HOUR) {
-            doffset -= 12L * MILLISECONDS_PER_HOUR;
-        }
-        if (doffset > 6L * MILLISECONDS_PER_HOUR) {
-            doffset = 12L * MILLISECONDS_PER_HOUR - doffset;
-            sign = -sign;
-        }
-
-        // Interpolate doffset towards 0
-        doffset = (long)((1.0f - lerp)*doffset);
-
-        // Keep the same seconds count
-        long dh = doffset / (MILLISECONDS_PER_HOUR);
-        doffset -= dh * MILLISECONDS_PER_HOUR;
-        long dm = doffset / MILLISECONDS_PER_MINUTE;
-        doffset = sign * (60 * dh + dm) * MILLISECONDS_PER_MINUTE;
-    
-        return doffset;
-    }
-
-    /**
-     * Set the city to be displayed.  setCity(null) resets things so the clock
-     * hand animation won't occur next time.
-     */
-    public void setCity(City city) {
-        if (mCity != city) {
-            if (mCity != null) {
-                mOldOffset =
-                    (long) (mCity.getOffset() * (float) MILLISECONDS_PER_HOUR);
-            } else if (city != null) {
-                mOldOffset =
-                    (long) (city.getOffset() * (float) MILLISECONDS_PER_HOUR);
-            } else {
-                mOldOffset = 0L; // this will never be used
-            }
-            this.mCitySwitchTime = System.currentTimeMillis();
-            this.mCity = city;
-        }
-    }
-
-    public void setTime(long time) {
-        this.mTime = time;
-    }
-
-    /**
-     * Draws the clock face.
-     * 
-     * @param canvas the Canvas to draw to
-     * @param cx the X coordinate of the clock center
-     * @param cy the Y coordinate of the clock center
-     * @param radius the radius of the clock face
-     * @param alpha the translucency of the clock face
-     * @param textAlpha the translucency of the text
-     * @param showCityName if true, display the city name
-     * @param showTime if true, display the time digitally
-     * @param showUpArrow if true, display an up arrow
-     * @param showDownArrow if true, display a down arrow
-     * @param showLeftRightArrows if true, display left and right arrows
-     * @param prefixChars number of characters of the city name to draw in bold
-     */
-    public void drawClock(Canvas canvas,
-        float cx, float cy, float radius, float alpha, float textAlpha,
-        boolean showCityName, boolean showTime,
-        boolean showUpArrow,  boolean showDownArrow, boolean showLeftRightArrows,
-        int prefixChars) {
-        Paint paint = new Paint();
-        paint.setAntiAlias(true);
-
-        int iradius = (int)radius;
-
-        TimeZone tz = mCity.getTimeZone();
-
-        // Compute an interpolated time to animate between the previously
-        // displayed time and the current time
-        float lerp = Math.min(1.0f,
-            (System.currentTimeMillis() - mCitySwitchTime) / 500.0f);
-        lerp = mClockHandInterpolator.getInterpolation(lerp);
-        long doffset = lerp < 1.0f ? getOffset(lerp) : 0L;
-    
-        // Determine the interpolated time for the given time zone
-        Calendar cal = Calendar.getInstance(tz);
-        cal.setTimeInMillis(mTime - doffset);
-        int hour = cal.get(Calendar.HOUR_OF_DAY);
-        int minute = cal.get(Calendar.MINUTE);
-        int second = cal.get(Calendar.SECOND);
-        int milli = cal.get(Calendar.MILLISECOND);
-
-        float offset = tz.getRawOffset() / (float) MILLISECONDS_PER_HOUR;
-        float daylightOffset = tz.inDaylightTime(new Date(mTime)) ?
-            tz.getDSTSavings() / (float) MILLISECONDS_PER_HOUR : 0.0f;
-
-        float absOffset = offset < 0 ? -offset : offset;
-        int offsetH = (int) absOffset;
-        int offsetM = (int) (60.0f * (absOffset - offsetH));
-        hour %= 12;
-
-        // Get the city name and digital time strings
-        String cityName = mCity.getName();
-        cal.setTimeInMillis(mTime);
-        String time = DateUtils.timeString(cal.getTimeInMillis()) + " "  +
-            DateUtils.getDayOfWeekString(cal.get(Calendar.DAY_OF_WEEK),
-                    DateUtils.LENGTH_SHORT) + " " +
-            " (UTC" +
-            (offset >= 0 ? "+" : "-") +
-            offsetH +
-            (offsetM == 0 ? "" : ":" + offsetM) +
-            (daylightOffset == 0 ? "" : "+" + daylightOffset) +
-            ")";
-
-        float th = paint.getTextSize();
-        float tw;
-
-        // Set the text color
-        paint.setARGB((int) (textAlpha * 255.0f),
-                      (int) (mColorRed * 255.0f),
-                      (int) (mColorGreen * 255.0f),
-                      (int) (mColorBlue * 255.0f));
-
-        tw = paint.measureText(cityName);
-        if (showCityName) {
-            // Increment prefixChars to include any spaces
-            for (int i = 0; i < prefixChars; i++) {
-                if (cityName.charAt(i) == ' ') {
-                    ++prefixChars;
-                }
-            }
-
-            // Draw the city name
-            canvas.drawText(cityName, cx - tw / 2, cy - radius - th, paint);
-            // Overstrike the first 'prefixChars' characters
-            canvas.drawText(cityName.substring(0, prefixChars),
-                            cx - tw / 2 + 1, cy - radius - th, paint);
-        }
-        tw = paint.measureText(time);
-        if (showTime) {
-            canvas.drawText(time, cx - tw / 2, cy + radius + th + 5, paint);
-        }
-
-        paint.setARGB((int)(alpha * 255.0f),
-                      (int)(mColorRed * 255.0f),
-                      (int)(mColorGreen * 255.0f),
-                      (int)(mColorBlue * 255.0f));
-
-        paint.setStyle(Paint.Style.FILL);
-        canvas.drawOval(new RectF(cx - 2, cy - 2, cx + 2, cy + 2), paint);
-
-        paint.setStyle(Paint.Style.STROKE);
-        paint.setStrokeWidth(radius * 0.12f);
-
-        canvas.drawOval(new RectF(cx - iradius, cy - iradius,
-                                  cx + iradius, cy + iradius),
-                        paint);
-
-        float r0 = radius * 0.1f;
-        float r1 = radius * 0.4f;
-        float r2 = radius * 0.6f;
-        float r3 = radius * 0.65f;
-        float r4 = radius * 0.7f;
-        float r5 = radius * 0.9f;
-
-        Path path = new Path();
-
-        float ss = second + milli / 1000.0f;
-        float mm = minute + ss / 60.0f;
-        float hh = hour + mm / 60.0f;
-
-        // Tics for the hours
-        for (int i = 0; i < 12; i++) {
-            drawLine(path, radius * 0.12f, i / 12.0f, cx, cy, r4, r5);
-        }
-
-        // Hour hand
-        drawLine(path, radius * 0.12f, hh / 12.0f, cx, cy, r0, r1); 
-        // Minute hand
-        drawLine(path, radius * 0.12f, mm / 60.0f, cx, cy, r0, r2); 
-        // Second hand
-        drawLine(path, radius * 0.036f, ss / 60.0f, cx, cy, r0, r3); 
-
-        if (showUpArrow) {
-            drawVArrow(path, cx + radius * 1.13f, cy - radius,
-                radius * 0.15f, -radius * 0.1f);
-        }
-        if (showDownArrow) {
-            drawVArrow(path, cx + radius * 1.13f, cy + radius,
-                radius * 0.15f, radius * 0.1f);
-        }
-        if (showLeftRightArrows) {
-            drawHArrow(path, cx - radius * 1.3f, cy, -radius * 0.1f,
-                radius * 0.15f);
-            drawHArrow(path, cx + radius * 1.3f, cy,  radius * 0.1f,
-                radius * 0.15f);
-        }
-
-        paint.setStyle(Paint.Style.FILL);
-        canvas.drawPath(path, paint);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/GLView.java b/samples/GlobalTime/src/com/android/globaltime/GLView.java
deleted file mode 100644
index 4253717..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/GLView.java
+++ /dev/null
@@ -1,927 +0,0 @@
-/*
- * Copyright (C) 2006 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.android.globaltime;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
-import javax.microedition.khronos.opengles.GL10;
-
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.view.KeyEvent;
-
-class Message {
-
-    private String mText;
-    private long mExpirationTime;
-
-    public Message(String text, long expirationTime) {
-        this.mText = text;
-        this.mExpirationTime = expirationTime;
-    }
-
-    public String getText() {
-        return mText;
-    }
-
-    public long getExpirationTime() {
-        return mExpirationTime;
-    }
-}
-
-/**
- * A helper class to simplify writing an Activity that renders using
- * OpenGL ES.
- *
- * <p> A GLView object stores common elements of GL state and allows
- * them to be modified interactively.  This is particularly useful for
- * determining the proper settings of parameters such as the view
- * frustum and light intensities during application development.
- *
- * <p> A GLView is not an actual View; instead, it is meant to be
- * called from within a View to perform event processing on behalf of the
- * actual View.
- *
- * <p> By passing key events to the GLView object from the View,
- * the application can automatically allow certain parameters to
- * be user-controlled from the keyboard.  Key events may be passed as
- * shown below:
- *
- * <pre>
- * GLView mGlView = new GLView();
- *
- * public boolean onKeyDown(int keyCode, KeyEvent event) {
- *     // Hand the key to the GLView object first
- *     if (mGlView.processKey(keyCode)) {
- *         return;
- *     }
- *  
- *     switch (keyCode) {
- *     case KeyEvent.KEY_CODE_X:
- *         // perform app processing
- *         break;
- *     
- *     default:
- *         super.onKeyDown(keyCode, event);
- *         break;
- *     }
- * }
- * </pre>
- *
- * <p> During drawing of a frame, the GLView object should be given the
- * opportunity to manage GL parameters as shown below:
- * 
- * OpenGLContext mGLContext; // initialization not shown
- * int mNumTrianglesDrawn = 0;
- * 
- * protected void onDraw(Canvas canvas) {
- *     int w = getWidth();
- *     int h = getHeight();
- *         
- *     float ratio = (float) w / h;
- *     mGLView.setAspectRatio(ratio);
- *
- *     GL10 gl = (GL10) mGLContext.getGL();
- *     mGLContext.waitNative(canvas, this);
- *     
- *     // Enable a light for the GLView to manipulate
- *     gl.glEnable(GL10.GL_LIGHTING);
- *     gl.glEnable(GL10.GL_LIGHT0);
- *         
- *     // Allow the GLView to set GL parameters
- *     mGLView.setTextureParameters(gl);
- *     mGLView.setProjection(gl);
- *     mGLView.setView(gl);
- *     mGLView.setLights(gl, GL10.GL_LIGHT0);
- *         
- *     // Draw some stuff (not shown)
- *     mNumTrianglesDrawn += <num triangles just drawn>;
- *     
- *     // Wait for GL drawing to complete
- *     mGLContext.waitGL();
- *     
- *     // Inform the GLView of what was drawn, and ask it to display statistics
- *     mGLView.setNumTriangles(mNumTrianglesDrawn);
- *     mGLView.showMessages(canvas);
- *     mGLView.showStatistics(canvas, w);
- * }      
- * </pre>
- *
- * <p> At the end of each frame, following the call to
- * GLContext.waitGL, the showStatistics and showMessages methods
- * will cause additional information to be displayed.
- *
- * <p> To enter the interactive command mode, the 'tab' key must be
- * pressed twice in succession.  A subsequent press of the 'tab' key
- * exits the interactive command mode.  Entering a multi-letter code
- * sets the parameter to be modified. The 'newline' key erases the
- * current code, and the 'del' key deletes the last letter of
- * the code. The parameter value may be modified by pressing the
- * keypad left or up to decrement the value and right or down to
- * increment the value.  The current value will be displayed as an
- * overlay above the GL rendered content.
- * 
- * <p> The supported keyboard commands are as follows:
- *
- * <ul>
- * <li>     h - display a list of commands
- * <li>    fn - near frustum 
- * <li>    ff - far frustum 
- * <li>    tx - translate x
- * <li>    ty - translate y
- * <li>    tz - translate z
- * <li>     z - zoom (frustum size)
- * <li>    la - ambient light (all RGB channels)
- * <li>   lar - ambient light red channel
- * <li>   lag - ambient light green channel
- * <li>   lab - ambient light blue channel
- * <li>    ld - diffuse light (all RGB channels)
- * <li>   ldr - diffuse light red channel
- * <li>   ldg - diffuse light green channel
- * <li>   ldb - diffuse light blue channel
- * <li>    ls - specular light (all RGB channels)
- * <li>   lsr - specular light red channel
- * <li>   lsg - specular light green channel
- * <li>   lsb - specular light blue channel
- * <li>   lma - light model ambient (all RGB channels)
- * <li>  lmar - light model ambient light red channel
- * <li>  lmag - light model ambient green channel
- * <li>  lmab - light model ambient blue channel
- * <li>  tmin - texture min filter
- * <li>  tmag - texture mag filter
- * <li>  tper - texture perspective correction
- * </ul>
- * 
- * {@hide}
- */
-public class GLView {
-
-    private static final int DEFAULT_DURATION_MILLIS = 1000;
-    private static final int STATE_KEY = KeyEvent.KEYCODE_TAB;
-    private static final int HAVE_NONE = 0;
-    private static final int HAVE_ONE = 1;
-    private static final int HAVE_TWO = 2;
-
-    private static final float MESSAGE_Y_SPACING = 12.0f;
-
-    private int mState = HAVE_NONE;
-
-    private static final int NEAR_FRUSTUM  = 0;
-    private static final int FAR_FRUSTUM   = 1;
-    private static final int TRANSLATE_X   = 2;
-    private static final int TRANSLATE_Y   = 3;
-    private static final int TRANSLATE_Z   = 4;
-    private static final int ZOOM_EXPONENT = 5;
-
-    private static final int AMBIENT_INTENSITY = 6;
-    private static final int AMBIENT_RED = 7;
-    private static final int AMBIENT_GREEN = 8;
-    private static final int AMBIENT_BLUE = 9;
-
-    private static final int DIFFUSE_INTENSITY = 10;
-    private static final int DIFFUSE_RED = 11;
-    private static final int DIFFUSE_GREEN = 12;
-    private static final int DIFFUSE_BLUE = 13;
-
-    private static final int SPECULAR_INTENSITY = 14;
-    private static final int SPECULAR_RED = 15;
-    private static final int SPECULAR_GREEN = 16;
-    private static final int SPECULAR_BLUE = 17;
-
-    private static final int LIGHT_MODEL_AMBIENT_INTENSITY = 18;
-    private static final int LIGHT_MODEL_AMBIENT_RED = 19;
-    private static final int LIGHT_MODEL_AMBIENT_GREEN = 20;
-    private static final int LIGHT_MODEL_AMBIENT_BLUE = 21;
-
-    private static final int TEXTURE_MIN_FILTER = 22;
-    private static final int TEXTURE_MAG_FILTER = 23;
-    private static final int TEXTURE_PERSPECTIVE_CORRECTION = 24;
-
-    private static final String[] commands = { 
-        "fn",
-        "ff",
-        "tx",
-        "ty",
-        "tz",
-        "z",
-        "la", "lar", "lag", "lab",
-        "ld", "ldr", "ldg", "ldb",
-        "ls", "lsr", "lsg", "lsb",
-        "lma", "lmar", "lmag", "lmab",
-        "tmin", "tmag", "tper"
-   };
-
-    private static final String[] labels = {
-        "Near Frustum",
-        "Far Frustum",
-        "Translate X",
-        "Translate Y",
-        "Translate Z",
-        "Zoom",
-        "Ambient Intensity",
-        "Ambient Red",
-        "Ambient Green",
-        "Ambient Blue",
-        "Diffuse Intensity",
-        "Diffuse Red",
-        "Diffuse Green",
-        "Diffuse Blue",
-        "Specular Intenstity",
-        "Specular Red",
-        "Specular Green",
-        "Specular Blue",
-        "Light Model Ambient Intensity",
-        "Light Model Ambient Red",
-        "Light Model Ambient Green",
-        "Light Model Ambient Blue",
-        "Texture Min Filter",
-        "Texture Mag Filter",
-        "Texture Perspective Correction",
-    };
-
-    private static final float[] defaults = {
-        5.0f, 100.0f,
-        0.0f, 0.0f, -50.0f,
-        0,
-        0.125f,	1.0f, 1.0f, 1.0f,
-        0.125f,	1.0f, 1.0f, 1.0f,
-        0.125f,	1.0f, 1.0f, 1.0f,
-        0.125f,	1.0f, 1.0f, 1.0f,
-        GL10.GL_NEAREST, GL10.GL_NEAREST,
-        GL10.GL_FASTEST
-    };
-
-    private static final float[] increments = {
-        0.01f, 0.5f,
-        0.125f, 0.125f, 0.125f,
-        1.0f,
-        0.03125f, 0.1f, 0.1f, 0.1f,
-        0.03125f, 0.1f, 0.1f, 0.1f,
-        0.03125f, 0.1f, 0.1f, 0.1f,
-        0.03125f, 0.1f, 0.1f, 0.1f,
-        0, 0, 0
-    };
-
-    private float[] params = new float[commands.length];
-
-    private static final float mZoomScale = 0.109f;
-    private static final float mZoomBase  = 1.01f;
-
-    private int             mParam = -1;
-    private float           mIncr = 0;
-
-    private Paint           mPaint = new Paint();
-
-    private float           mAspectRatio = 1.0f;
-
-    private float           mZoom;
-
-    // private boolean         mPerspectiveCorrection = false;
-    // private int             mTextureMinFilter = GL10.GL_NEAREST;
-    // private int             mTextureMagFilter = GL10.GL_NEAREST;
-
-    // Counters for FPS calculation
-    private boolean         mDisplayFPS = false;
-    private boolean         mDisplayCounts = false;
-    private int             mFramesFPS = 10;
-    private long[]          mTimes = new long[mFramesFPS];
-    private int             mTimesIdx = 0;
-
-    private Map<String,Message> mMessages = new HashMap<String,Message>();
-
-    /**
-     * Constructs a new GLView.
-     */
-    public GLView() {
-        mPaint.setColor(0xffffffff);
-        reset();
-    }
-
-    /**
-     * Sets the aspect ratio (width/height) of the screen.
-     *
-     * @param aspectRatio the screen width divided by the screen height
-     */
-    public void setAspectRatio(float aspectRatio) {
-        this.mAspectRatio = aspectRatio;
-    }
-    
-    /**
-     * Sets the overall ambient light intensity.  This intensity will
-     * be used to modify the ambient light value for each of the red,
-     * green, and blue channels passed to glLightfv(...GL_AMBIENT...).
-     * The default value is 0.125f.
-     *
-     * @param intensity a floating-point value controlling the overall
-     * ambient light intensity.
-     */
-    public void setAmbientIntensity(float intensity) {
-        params[AMBIENT_INTENSITY] = intensity;
-    }
-
-    /**
-     * Sets the light model ambient intensity.  This intensity will be
-     * used to modify the ambient light value for each of the red,
-     * green, and blue channels passed to
-     * glLightModelfv(GL_LIGHT_MODEL_AMBIENT...).  The default value
-     * is 0.125f.
-     *
-     * @param intensity a floating-point value controlling the overall
-     * light model ambient intensity.
-     */
-    public void setLightModelAmbientIntensity(float intensity) {
-        params[LIGHT_MODEL_AMBIENT_INTENSITY] = intensity;
-    }
-
-    /**
-     * Sets the ambient color for the red, green, and blue channels
-     * that will be multiplied by the value of setAmbientIntensity and
-     * passed to glLightfv(...GL_AMBIENT...).  The default values are
-     * {1, 1, 1}.
-     *
-     * @param ambient an arry of three floats containing ambient
-     * red, green, and blue intensity values.
-     */
-    public void setAmbientColor(float[] ambient) {
-        params[AMBIENT_RED]   = ambient[0];
-        params[AMBIENT_GREEN] = ambient[1];
-        params[AMBIENT_BLUE]  = ambient[2];
-    }
-
-    /**
-     * Sets the overall diffuse light intensity.  This intensity will
-     * be used to modify the diffuse light value for each of the red,
-     * green, and blue channels passed to glLightfv(...GL_DIFFUSE...).
-     * The default value is 0.125f.
-     *
-     * @param intensity a floating-point value controlling the overall
-     * ambient light intensity.
-     */
-    public void setDiffuseIntensity(float intensity) {
-        params[DIFFUSE_INTENSITY] = intensity;
-    }
-
-    /**
-     * Sets the diffuse color for the red, green, and blue channels
-     * that will be multiplied by the value of setDiffuseIntensity and
-     * passed to glLightfv(...GL_DIFFUSE...).  The default values are
-     * {1, 1, 1}.
-     *
-     * @param diffuse an array of three floats containing diffuse
-     * red, green, and blue intensity values.
-     */
-    public void setDiffuseColor(float[] diffuse) {
-        params[DIFFUSE_RED]   = diffuse[0];
-        params[DIFFUSE_GREEN] = diffuse[1];
-        params[DIFFUSE_BLUE]  = diffuse[2];
-    }
-
-    /**
-     * Sets the overall specular light intensity.  This intensity will
-     * be used to modify the diffuse light value for each of the red,
-     * green, and blue channels passed to glLightfv(...GL_SPECULAR...).
-     * The default value is 0.125f.
-     *
-     * @param intensity a floating-point value controlling the overall
-     * ambient light intensity.
-     */
-    public void setSpecularIntensity(float intensity) {
-        params[SPECULAR_INTENSITY] = intensity;
-    }
-
-    /**
-     * Sets the specular color for the red, green, and blue channels
-     * that will be multiplied by the value of setSpecularIntensity and
-     * passed to glLightfv(...GL_SPECULAR...).  The default values are
-     * {1, 1, 1}.
-     *
-     * @param specular an array of three floats containing specular
-     * red, green, and blue intensity values.
-     */
-    public void setSpecularColor(float[] specular) {
-        params[SPECULAR_RED]   = specular[0];
-        params[SPECULAR_GREEN] = specular[1];
-        params[SPECULAR_BLUE]  = specular[2];
-    }
-
-    /**
-     * Returns the current X translation of the modelview
-     * transformation as passed to glTranslatef.  The default value is
-     * 0.0f.
-     *
-     * @return the X modelview translation as a float.
-     */
-    public float getTranslateX() {
-        return params[TRANSLATE_X];
-    }
-
-    /**
-     * Returns the current Y translation of the modelview
-     * transformation as passed to glTranslatef.  The default value is
-     * 0.0f.
-     *
-     * @return the Y modelview translation as a float.
-     */
-    public float getTranslateY() {
-        return params[TRANSLATE_Y];
-    }
-
-    /**
-     * Returns the current Z translation of the modelview
-     * transformation as passed to glTranslatef.  The default value is
-     * -50.0f.
-     *
-     * @return the Z modelview translation as a float.
-     */
-    public float getTranslateZ() {
-        return params[TRANSLATE_Z];
-    }
-
-    /**
-     * Sets the position of the near frustum clipping plane as passed
-     * to glFrustumf.  The default value is 5.0f;
-     *
-     * @param nearFrustum the near frustum clipping plane distance as
-     * a float.
-     */
-    public void setNearFrustum(float nearFrustum) {
-        params[NEAR_FRUSTUM] = nearFrustum;
-    }
-
-    /**
-     * Sets the position of the far frustum clipping plane as passed
-     * to glFrustumf.  The default value is 100.0f;
-     *
-     * @param farFrustum the far frustum clipping plane distance as a
-     * float.
-     */
-    public void setFarFrustum(float farFrustum) {
-        params[FAR_FRUSTUM] = farFrustum;
-    }
-
-    private void computeZoom() {
-        mZoom = mZoomScale*(float)Math.pow(mZoomBase, -params[ZOOM_EXPONENT]);
-    }
-
-    /**
-     * Resets all parameters to their default values.
-     */
-    public void reset() {
-        for (int i = 0; i < params.length; i++) {
-            params[i] = defaults[i];
-        }
-        computeZoom();
-    }
-
-    private void removeExpiredMessages() {
-        long now = System.currentTimeMillis();
-
-        List<String> toBeRemoved = new ArrayList<String>();
-
-        Iterator<String> keyIter = mMessages.keySet().iterator();
-        while (keyIter.hasNext()) {
-            String key = keyIter.next();
-            Message msg = mMessages.get(key);
-            if (msg.getExpirationTime() < now) {
-                toBeRemoved.add(key);
-            }
-        }
-
-        Iterator<String> tbrIter = toBeRemoved.iterator();
-        while (tbrIter.hasNext()) {
-            String key = tbrIter.next();
-            mMessages.remove(key);
-        }
-    }
-    
-    /**
-     * Displays the message overlay on the given Canvas.  The
-     * GLContext.waitGL method should be called prior to calling this
-     * method.  The interactive command display is drawn by this
-     * method.
-     *
-     * @param canvas the Canvas on which messages are to appear.
-     */
-    public void showMessages(Canvas canvas) {
-        removeExpiredMessages();
-
-        float y = 10.0f;
-
-        List<String> l = new ArrayList<String>();
-        l.addAll(mMessages.keySet());
-        Collections.sort(l);
-
-        Iterator<String> iter = l.iterator();
-        while (iter.hasNext()) {
-            String key = iter.next();
-            String text = mMessages.get(key).getText();
-            canvas.drawText(text, 10.0f, y, mPaint);
-            y += MESSAGE_Y_SPACING;
-        }
-    }
-
-    private int mTriangles;
-
-    /**
-     * Sets the number of triangles drawn in the previous frame for
-     * display by the showStatistics method.  The number of triangles
-     * is not computed by GLView but must be supplied by the
-     * calling Activity.
-     *
-     * @param triangles an Activity-supplied estimate of the number of 
-     * triangles drawn in the previous frame.
-     */
-    public void setNumTriangles(int triangles) {
-        this.mTriangles = triangles;
-    }
-
-    /**
-     * Displays statistics on frames and triangles per second. The
-     * GLContext.waitGL method should be called prior to calling this
-     * method.
-     *
-     * @param canvas the Canvas on which statistics are to appear.
-     * @param width the width of the Canvas.
-     */
-    public void showStatistics(Canvas canvas, int width) {	
-        long endTime = mTimes[mTimesIdx] = System.currentTimeMillis();
-        mTimesIdx = (mTimesIdx + 1) % mFramesFPS;
-
-        float th = mPaint.getTextSize();
-
-        if (mDisplayFPS) {
-            // Use end time from mFramesFPS frames ago
-            long startTime = mTimes[mTimesIdx];
-            String fps = "" + (1000.0f*mFramesFPS/(endTime - startTime));
-
-            // Normalize fps to XX.XX format
-            if (fps.indexOf(".") == 1) {
-                fps = " " + fps;
-            }
-            int len = fps.length();
-            if (len == 2) {
-                fps += ".00";
-            } else if (len == 4) {
-                fps += "0";
-            } else if (len > 5) {
-                fps = fps.substring(0, 5);
-            }
-
-            canvas.drawText(fps + " fps", width - 60.0f, 10.0f, mPaint);
-        }
-
-        if (mDisplayCounts) {
-            canvas.drawText(mTriangles + " triangles",
-                            width - 100.0f, 10.0f + th + 5, mPaint);
-        }
-    }
-
-    private void addMessage(String key, String text, int durationMillis) {
-        long expirationTime = System.currentTimeMillis() + durationMillis;
-
-        mMessages.put(key, new Message(text, expirationTime));
-    }
-
-    private void addMessage(String key, String text) {
-        addMessage(key, text, DEFAULT_DURATION_MILLIS);
-    }
-
-    private void addMessage(String text) {
-        addMessage(text, text, DEFAULT_DURATION_MILLIS);
-    }
-
-    private void clearMessages() {
-        mMessages.clear();
-    }
-
-    String command = "";
-
-    private void toggleFilter() {
-        if (params[mParam] == GL10.GL_NEAREST) {
-            params[mParam] = GL10.GL_LINEAR;
-        } else {
-            params[mParam] = GL10.GL_NEAREST;
-        }
-        addMessage(commands[mParam],
-                   "Texture " + 
-                   (mParam == TEXTURE_MIN_FILTER ? "min" : "mag") +
-                   " filter = " +
-                   (params[mParam] == GL10.GL_NEAREST ?
-                    "nearest" : "linear"));
-    }
-
-    private void togglePerspectiveCorrection() {
-        if (params[mParam] == GL10.GL_NICEST) {
-            params[mParam] = GL10.GL_FASTEST;
-        } else {
-            params[mParam] = GL10.GL_NICEST;
-        }
-        addMessage(commands[mParam],
-                   "Texture perspective correction = " +
-                   (params[mParam] == GL10.GL_FASTEST ?
-                    "fastest" : "nicest"));
-    }
-
-    private String valueString() {
-        if (mParam == TEXTURE_MIN_FILTER ||
-            mParam == TEXTURE_MAG_FILTER) {
-            if (params[mParam] == GL10.GL_NEAREST) {
-                return "nearest";
-            }
-            if (params[mParam] == GL10.GL_LINEAR) {
-                return "linear";
-            }
-        }
-        if (mParam == TEXTURE_PERSPECTIVE_CORRECTION) {
-            if (params[mParam] == GL10.GL_FASTEST) {
-                return "fastest";
-            }
-            if (params[mParam] == GL10.GL_NICEST) {
-                return "nicest";
-            }
-        }
-        return "" + params[mParam];
-    }
-
-    /**
-     * 
-     * @return true if the view 
-     */
-    public boolean hasMessages() {
-        return mState == HAVE_TWO || mDisplayFPS || mDisplayCounts;
-    }
-    
-    /**
-     * Process a key stroke.  The calling Activity should pass all
-     * keys from its onKeyDown method to this method.  If the key is
-     * part of a GLView command, true is returned and the calling
-     * Activity should ignore the key event.  Otherwise, false is
-     * returned and the calling Activity may process the key event
-     * normally.
-     *
-     * @param keyCode the key code as passed to Activity.onKeyDown.
-     *
-     * @return true if the key is part of a GLView command sequence,
-     * false otherwise.
-     */
-    public boolean processKey(int keyCode) {
-        // Pressing the state key twice enters the UI
-        // Pressing it again exits the UI
-        if ((keyCode == STATE_KEY) || 
-            (keyCode == KeyEvent.KEYCODE_SLASH) || 
-            (keyCode == KeyEvent.KEYCODE_PERIOD))
-        {
-            mState = (mState + 1) % 3;
-            if (mState == HAVE_NONE) {
-                clearMessages();
-            }
-            if (mState == HAVE_TWO) {
-                clearMessages();
-                addMessage("aaaa", "GL", Integer.MAX_VALUE);
-                addMessage("aaab", "", Integer.MAX_VALUE);
-                command = "";
-            }
-            return true;
-        } else {
-            if (mState == HAVE_ONE) {
-                mState = HAVE_NONE;
-                return false;
-            }
-        }
-
-        // If we're not in the UI, exit without handling the key
-        if (mState != HAVE_TWO) {
-            return false;
-        }
-
-        if (keyCode == KeyEvent.KEYCODE_ENTER) {
-            command = "";
-        } else if (keyCode == KeyEvent.KEYCODE_DEL) {
-            if (command.length() > 0) {
-                command = command.substring(0, command.length() - 1);
-            }
-
-        } else if (keyCode >= KeyEvent.KEYCODE_A &&
-                   keyCode <= KeyEvent.KEYCODE_Z) {
-            command += "" + (char)(keyCode - KeyEvent.KEYCODE_A + 'a');
-        }
-
-        addMessage("aaaa", "GL " + command, Integer.MAX_VALUE);
-
-        if (command.equals("h")) {
-            addMessage("aaaa", "GL", Integer.MAX_VALUE);
-            addMessage("h - help");
-            addMessage("fn/ff - frustum near/far clip Z");
-            addMessage("la/lar/lag/lab - abmient intensity/r/g/b");
-            addMessage("ld/ldr/ldg/ldb - diffuse intensity/r/g/b");
-            addMessage("ls/lsr/lsg/lsb - specular intensity/r/g/b");
-            addMessage("s - toggle statistics display");
-            addMessage("tmin/tmag - texture min/mag filter");
-            addMessage("tpersp - texture perspective correction");
-            addMessage("tx/ty/tz - view translate x/y/z");
-            addMessage("z - zoom");
-            command = "";
-            return true;
-        } else if (command.equals("s")) {
-            mDisplayCounts = !mDisplayCounts;
-            mDisplayFPS = !mDisplayFPS;
-            command = "";
-            return true;
-        }
-
-        mParam = -1;
-        for (int i = 0; i < commands.length; i++) {
-            if (command.equals(commands[i])) {
-                mParam = i;
-                mIncr = increments[i];
-            }
-        }
-        if (mParam == -1) {
-            return true;
-        }
-
-        boolean addMessage = true;
-
-        // Increment or decrement
-        if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT ||
-            keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
-            if (mParam == ZOOM_EXPONENT) {
-                params[mParam] += mIncr;
-                computeZoom();
-            } else if ((mParam == TEXTURE_MIN_FILTER) ||
-                       (mParam == TEXTURE_MAG_FILTER)) {
-                toggleFilter();
-            } else if (mParam == TEXTURE_PERSPECTIVE_CORRECTION) {
-                togglePerspectiveCorrection();
-            } else {
-                params[mParam] += mIncr;
-            }
-        } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP ||
-                   keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
-            if (mParam == ZOOM_EXPONENT) {
-                params[mParam] -= mIncr;
-                computeZoom();
-            } else if ((mParam == TEXTURE_MIN_FILTER) ||
-                       (mParam == TEXTURE_MAG_FILTER)) {
-                toggleFilter();
-            } else if (mParam == TEXTURE_PERSPECTIVE_CORRECTION) {
-                togglePerspectiveCorrection();
-            } else {
-                params[mParam] -= mIncr;
-            }
-        }
-	
-        if (addMessage) {
-            addMessage(commands[mParam],
-                       labels[mParam] + ": " + valueString());
-        }
-
-        return true;
-    }
-
-    /**
-     * Zoom in by a given number of steps.  A negative value of steps
-     * zooms out.  Each step zooms in by 1%.
-     *
-     * @param steps the number of steps to zoom by.
-     */
-    public void zoom(int steps) {
-        params[ZOOM_EXPONENT] += steps;
-        computeZoom();
-    }
-		
-    /**
-     * Set the projection matrix using glFrustumf.  The left and right
-     * clipping planes are set at -+(aspectRatio*zoom), the bottom and
-     * top clipping planes are set at -+zoom, and the near and far
-     * clipping planes are set to the values set by setNearFrustum and
-     * setFarFrustum or interactively.
-     *
-     * <p> GL side effects:
-     * <ul>
-     *    <li>overwrites the matrix mode</li>
-     *    <li>overwrites the projection matrix</li>
-     * </ul>
-     *
-     * @param gl a GL10 instance whose projection matrix is to be modified.
-     */
-    public void setProjection(GL10 gl) {
-        gl.glMatrixMode(GL10.GL_PROJECTION);
-        gl.glLoadIdentity();
-
-        if (mAspectRatio >= 1.0f) {
-            gl.glFrustumf(-mAspectRatio*mZoom, mAspectRatio*mZoom,
-                          -mZoom, mZoom,
-                          params[NEAR_FRUSTUM], params[FAR_FRUSTUM]);
-        } else {
-            gl.glFrustumf(-mZoom, mZoom,
-                          -mZoom / mAspectRatio, mZoom / mAspectRatio,
-                          params[NEAR_FRUSTUM], params[FAR_FRUSTUM]);
-        }
-    }
-
-    /**
-     * Set the modelview matrix using glLoadIdentity and glTranslatef.
-     * The translation values are set interactively.
-     *
-     * <p> GL side effects:
-     * <ul>
-     * <li>overwrites the matrix mode</li>
-     * <li>overwrites the modelview matrix</li>
-     * </ul>
-     *
-     * @param gl a GL10 instance whose modelview matrix is to be modified.
-     */
-    public void setView(GL10 gl) {
-        gl.glMatrixMode(GL10.GL_MODELVIEW);
-        gl.glLoadIdentity();
-
-        // Move the viewpoint backwards
-        gl.glTranslatef(params[TRANSLATE_X],
-                        params[TRANSLATE_Y],
-                        params[TRANSLATE_Z]);
-    }
-
-    /**
-     * Sets texture parameters.
-     *
-     * <p> GL side effects:
-     * <ul>
-     * <li>sets the GL_PERSPECTIVE_CORRECTION_HINT</li>
-     * <li>sets the GL_TEXTURE_MIN_FILTER texture parameter</li>
-     * <li>sets the GL_TEXTURE_MAX_FILTER texture parameter</li>
-     * </ul>
-     *
-     * @param gl a GL10 instance whose texture parameters are to be modified.
-     */
-    public void setTextureParameters(GL10 gl) {
-        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
-                  (int)params[TEXTURE_PERSPECTIVE_CORRECTION]);
-        gl.glTexParameterf(GL10.GL_TEXTURE_2D,
-                           GL10.GL_TEXTURE_MIN_FILTER,
-                           params[TEXTURE_MIN_FILTER]);
-        gl.glTexParameterf(GL10.GL_TEXTURE_2D,
-                           GL10.GL_TEXTURE_MAG_FILTER,
-                           params[TEXTURE_MAG_FILTER]);
-    }
-
-    /**
-     * Sets the lighting parameters for the given light.
-     *
-     * <p> GL side effects:
-     * <ul>
-     * <li>sets the GL_LIGHT_MODEL_AMBIENT intensities
-     * <li>sets the GL_AMBIENT intensities for the given light</li>
-     * <li>sets the GL_DIFFUSE intensities for the given light</li>
-     * <li>sets the GL_SPECULAR intensities for the given light</li>
-     * </ul>
-     *
-     * @param gl a GL10 instance whose texture parameters are to be modified.
-     */
-    public void setLights(GL10 gl, int lightNum) {
-        float[] light = new float[4];
-        light[3] = 1.0f;
-
-        float lmi = params[LIGHT_MODEL_AMBIENT_INTENSITY];
-        light[0] = params[LIGHT_MODEL_AMBIENT_RED]*lmi;
-        light[1] = params[LIGHT_MODEL_AMBIENT_GREEN]*lmi;
-        light[2] = params[LIGHT_MODEL_AMBIENT_BLUE]*lmi;
-        gl.glLightModelfv(GL10.GL_LIGHT_MODEL_AMBIENT, light, 0);
-	
-        float ai = params[AMBIENT_INTENSITY];
-        light[0] = params[AMBIENT_RED]*ai;
-        light[1] = params[AMBIENT_GREEN]*ai;
-        light[2] = params[AMBIENT_BLUE]*ai;
-        gl.glLightfv(lightNum, GL10.GL_AMBIENT, light, 0);
-
-        float di = params[DIFFUSE_INTENSITY];
-        light[0] = params[DIFFUSE_RED]*di;
-        light[1] = params[DIFFUSE_GREEN]*di;
-        light[2] = params[DIFFUSE_BLUE]*di;
-        gl.glLightfv(lightNum, GL10.GL_DIFFUSE, light, 0);
-
-        float si = params[SPECULAR_INTENSITY];
-        light[0] = params[SPECULAR_RED]*si;
-        light[1] = params[SPECULAR_GREEN]*si;
-        light[2] = params[SPECULAR_BLUE]*si;
-        gl.glLightfv(lightNum, GL10.GL_SPECULAR, light, 0);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/GlobalTime.java b/samples/GlobalTime/src/com/android/globaltime/GlobalTime.java
deleted file mode 100644
index e27ee56..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/GlobalTime.java
+++ /dev/null
@@ -1,1488 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import java.io.ByteArrayInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Locale;
-import java.util.TimeZone;
-
-import javax.microedition.khronos.egl.*;
-import javax.microedition.khronos.opengles.*;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.res.AssetManager;
-import android.graphics.Canvas;
-import android.opengl.Object3D;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.os.MessageQueue;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.animation.AccelerateDecelerateInterpolator;
-import android.view.animation.DecelerateInterpolator;
-import android.view.animation.Interpolator;
-
-/**
- * The main View of the GlobalTime Activity.
- */
-class GTView extends SurfaceView implements SurfaceHolder.Callback {
-
-    /**
-     * A TimeZone object used to compute the current UTC time.
-     */
-    private static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone("utc");
-
-    /**
-     * The Sun's color is close to that of a 5780K blackbody.
-     */
-    private static final float[] SUNLIGHT_COLOR = {
-        1.0f, 0.9375f, 0.91015625f, 1.0f
-    };
-
-    /**
-     * The inclination of the earth relative to the plane of the ecliptic
-     * is 23.45 degrees.
-     */
-    private static final float EARTH_INCLINATION = 23.45f * Shape.PI / 180.0f;
-
-    /** Seconds in a day */
-    private static final int SECONDS_PER_DAY = 24 * 60 * 60;
-
-    /** Flag for the depth test */
-    private static final boolean PERFORM_DEPTH_TEST= false;
-
-    /** Use raw time zone offsets, disregarding "summer time."  If false,
-     * current offsets will be used, which requires a much longer startup time
-     * in order to sort the city database.
-     */
-    private static final boolean USE_RAW_OFFSETS = true;
-
-    /**
-     * The earth's atmosphere.
-     */
-    private static final Annulus ATMOSPHERE =
-        new Annulus(0.0f, 0.0f, 1.75f, 0.9f, 1.08f, 0.4f, 0.4f, 0.8f, 0.0f,
-            0.0f, 0.0f, 0.0f, 1.0f, 50);
-
-    /**
-     * The tesselation of the earth by latitude.
-     */
-    private static final int SPHERE_LATITUDES = 25;
-
-    /**
-     * The tesselation of the earth by longitude.
-     */
-    private static int SPHERE_LONGITUDES = 25;
-
-    /**
-     * A flattened version of the earth.  The normals are computed identically
-     * to those of the round earth, allowing the day/night lighting to be
-     * applied to the flattened surface.
-     */
-    private static Sphere worldFlat = new LatLongSphere(0.0f, 0.0f, 0.0f, 1.0f,
-        SPHERE_LATITUDES, SPHERE_LONGITUDES,
-        0.0f, 360.0f, true, true, false, true);
-
-    /**
-     * The earth.
-     */
-    private Object3D mWorld;
-
-    /**
-     * Geometry of the city lights
-     */
-    private PointCloud mLights;
-
-    /**
-     * True if the activiy has been initialized.
-     */
-    boolean mInitialized = false;
-
-    /**
-     * True if we're in alphabetic entry mode.
-     */
-    private boolean mAlphaKeySet = false;
-
-    private EGLContext mEGLContext;
-    private EGLSurface mEGLSurface;
-    private EGLDisplay mEGLDisplay;
-    private EGLConfig  mEGLConfig;
-    GLView  mGLView;
-
-    // Rotation and tilt of the Earth
-    private float mRotAngle = 0.0f;
-    private float mTiltAngle = 0.0f;
-
-    // Rotational velocity of the orbiting viewer
-    private float mRotVelocity = 1.0f;
-
-    // Rotation of the flat view
-    private float mWrapX =  0.0f;
-    private float  mWrapVelocity =  0.0f;
-    private float mWrapVelocityFactor =  0.01f;
-
-    // Toggle switches
-    private boolean mDisplayAtmosphere = true;
-    private boolean mDisplayClock = false;
-    private boolean mClockShowing = false;
-    private boolean mDisplayLights = false;
-    private boolean mDisplayWorld = true;
-    private boolean mDisplayWorldFlat = false;
-    private boolean mSmoothShading = true;
-
-    // City search string
-    private String mCityName = "";
-
-    // List of all cities
-    private List<City> mClockCities;
-
-    // List of cities matching a user-supplied prefix
-    private List<City> mCityNameMatches = new ArrayList<City>();
-
-    private List<City> mCities;
-
-    // Start time for clock fade animation
-    private long mClockFadeTime;
-
-    // Interpolator for clock fade animation
-    private Interpolator mClockSizeInterpolator =
-        new DecelerateInterpolator(1.0f);
-
-    // Index of current clock
-    private int mCityIndex;
-
-    // Current clock
-    private Clock mClock;
-
-    // City-to-city flight animation parameters
-    private boolean mFlyToCity = false;
-    private long mCityFlyStartTime;
-    private float mCityFlightTime;
-    private float mRotAngleStart, mRotAngleDest;
-    private float mTiltAngleStart, mTiltAngleDest;
-
-    // Interpolator for flight motion animation
-    private Interpolator mFlyToCityInterpolator =
-        new AccelerateDecelerateInterpolator();
-
-    private static int sNumLights;
-    private static int[] sLightCoords;
-
-    //     static Map<Float,int[]> cityCoords = new HashMap<Float,int[]>();
-
-    // Arrays for GL calls
-    private float[] mClipPlaneEquation = new float[4];
-    private float[] mLightDir = new float[4];
-
-    // Calendar for computing the Sun's position
-    Calendar mSunCal = Calendar.getInstance(UTC_TIME_ZONE);
-
-    // Triangles drawn per frame
-    private int mNumTriangles;
-
-    private long startTime;
-
-    private static final int MOTION_NONE = 0;
-    private static final int MOTION_X = 1;
-    private static final int MOTION_Y = 2;
-
-    private static final int MIN_MANHATTAN_DISTANCE = 20;
-    private static final float ROTATION_FACTOR = 1.0f / 30.0f;
-    private static final float TILT_FACTOR = 0.35f;
-
-    // Touchscreen support
-    private float mMotionStartX;
-    private float mMotionStartY;
-    private float mMotionStartRotVelocity;
-    private float mMotionStartTiltAngle;
-    private int mMotionDirection;
-    
-    private boolean mPaused = true;
-    private boolean mHaveSurface = false;
-    private boolean mStartAnimating = false;
-    
-    public void surfaceCreated(SurfaceHolder holder) {
-        mHaveSurface = true;
-        startEGL();
-    }
-
-    public void surfaceDestroyed(SurfaceHolder holder) {
-        mHaveSurface = false;
-        stopEGL();
-    }
-
-    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
-        // nothing to do
-    }
-
-    /**
-     * Set up the view.
-     *
-     * @param context the Context
-     * @param am an AssetManager to retrieve the city database from
-     */
-    public GTView(Context context) {
-        super(context);
-
-        getHolder().addCallback(this);
-        getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU);
-
-        startTime = System.currentTimeMillis();
-
-        mClock = new Clock();
-
-        startEGL();
-        
-        setFocusable(true);
-        setFocusableInTouchMode(true);
-        requestFocus();
-    }
-
-    /**
-     * Creates an egl context. If the state of the activity is right, also
-     * creates the egl surface. Otherwise the surface will be created in a
-     * future call to createEGLSurface().
-     */
-    private void startEGL() {
-        EGL10 egl = (EGL10)EGLContext.getEGL();
-
-        if (mEGLContext == null) {
-            EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
-            int[] version = new int[2];
-            egl.eglInitialize(dpy, version);
-            int[] configSpec = {
-                    EGL10.EGL_DEPTH_SIZE,   16,
-                    EGL10.EGL_NONE
-            };
-            EGLConfig[] configs = new EGLConfig[1];
-            int[] num_config = new int[1];
-            egl.eglChooseConfig(dpy, configSpec, configs, 1, num_config);
-            mEGLConfig = configs[0];
-
-            mEGLContext = egl.eglCreateContext(dpy, mEGLConfig, 
-                    EGL10.EGL_NO_CONTEXT, null);
-            mEGLDisplay = dpy;
-            
-            AssetManager am = mContext.getAssets();
-            try {
-                loadAssets(am);
-            } catch (IOException ioe) {
-                ioe.printStackTrace();
-                throw new RuntimeException(ioe);
-            } catch (ArrayIndexOutOfBoundsException aioobe) {
-                aioobe.printStackTrace();
-                throw new RuntimeException(aioobe);
-            }
-        }
-        
-        if (mEGLSurface == null && !mPaused && mHaveSurface) {
-            mEGLSurface = egl.eglCreateWindowSurface(mEGLDisplay, mEGLConfig, 
-                    this, null);
-            egl.eglMakeCurrent(mEGLDisplay, mEGLSurface, mEGLSurface, 
-                    mEGLContext);
-            mInitialized = false;
-            if (mStartAnimating) {
-                startAnimating();
-                mStartAnimating = false;
-            }
-        }
-    }
-    
-    /**
-     * Destroys the egl context. If an egl surface has been created, it is
-     * destroyed as well.
-     */
-    private void stopEGL() {
-        EGL10 egl = (EGL10)EGLContext.getEGL();
-        if (mEGLSurface != null) {
-            egl.eglMakeCurrent(mEGLDisplay, 
-                    egl.EGL_NO_SURFACE, egl.EGL_NO_SURFACE, egl.EGL_NO_CONTEXT);
-            egl.eglDestroySurface(mEGLDisplay, mEGLSurface);
-            mEGLSurface = null;
-        }
-
-        if (mEGLContext != null) {
-            egl.eglDestroyContext(mEGLDisplay, mEGLContext);
-            egl.eglTerminate(mEGLDisplay);
-            mEGLContext = null;
-            mEGLDisplay = null;
-            mEGLConfig = null;
-        }
-    }
-    
-    public void onPause() {
-        mPaused = true;
-        stopAnimating();
-        stopEGL();
-    }
-    
-    public void onResume() {
-        mPaused = false;
-        startEGL();
-    }
-    
-    public void destroy() {
-        stopAnimating();
-        stopEGL();
-    }
-
-    /**
-     * Begin animation.
-     */
-    public void startAnimating() {
-        if (mEGLSurface == null) {
-            mStartAnimating = true; // will start when egl surface is created
-        } else {
-            mHandler.sendEmptyMessage(INVALIDATE);
-        }
-    }
-
-    /**
-     * Quit animation.
-     */
-    public void stopAnimating() {
-        mHandler.removeMessages(INVALIDATE);
-    }
-
-    /**
-     * Read a two-byte integer from the input stream.
-     */
-    private int readInt16(InputStream is) throws IOException {
-        int lo = is.read();
-        int hi = is.read();
-        return (hi << 8) | lo;
-    }
-
-    /**
-     * Returns the offset from UTC for the given city.  If USE_RAW_OFFSETS
-     * is true, summer/daylight savings is ignored.
-     */
-    private static float getOffset(City c) {
-        return USE_RAW_OFFSETS ? c.getRawOffset() : c.getOffset();
-    }
-
-    private InputStream cache(InputStream is) throws IOException {
-        int nbytes = is.available();
-        byte[] data = new byte[nbytes];
-        int nread = 0;
-        while (nread < nbytes) {
-            nread += is.read(data, nread, nbytes - nread);
-        }
-        return new ByteArrayInputStream(data);
-    }
-
-    /**
-     * Load the city and lights databases.
-     *
-     * @param am the AssetManager to load from.
-     */
-    private void loadAssets(final AssetManager am) throws IOException {
-        Locale locale = Locale.getDefault();
-        String language = locale.getLanguage();
-        String country = locale.getCountry();
-
-        InputStream cis = null;
-        try {
-            // Look for (e.g.) cities_fr_FR.dat or cities_fr_CA.dat
-            cis = am.open("cities_" + language + "_" + country + ".dat");
-        } catch (FileNotFoundException e1) {
-            try {
-                // Look for (e.g.) cities_fr.dat or cities_fr.dat
-                cis = am.open("cities_" + language + ".dat");
-            } catch (FileNotFoundException e2) {
-                try {
-                    // Use English city names by default
-                    cis = am.open("cities_en.dat");
-                } catch (FileNotFoundException e3) {
-                    throw e3;
-                }
-            }
-        }
-
-        cis = cache(cis);
-        City.loadCities(cis);
-        City[] cities;
-        if (USE_RAW_OFFSETS) {
-            cities = City.getCitiesByRawOffset();
-        } else {
-            cities = City.getCitiesByOffset();
-        }
-
-        mClockCities = new ArrayList<City>(cities.length);
-        for (int i = 0; i < cities.length; i++) {
-            mClockCities.add(cities[i]);
-        }
-        mCities = mClockCities;
-        mCityIndex = 0;
-
-        this.mWorld = new Object3D() {
-                @Override
-                public InputStream readFile(String filename)
-                    throws IOException {
-                    return cache(am.open(filename));
-                }
-            };
-
-        mWorld.load("world.gles");
-
-        // lights.dat has the following format.  All integers
-        // are 16 bits, low byte first.
-        //
-        // width
-        // height
-        // N [# of lights]
-        // light 0 X [in the range 0 to (width - 1)]
-        // light 0 Y ]in the range 0 to (height - 1)]
-        // light 1 X [in the range 0 to (width - 1)]
-        // light 1 Y ]in the range 0 to (height - 1)]
-        // ...
-        // light (N - 1) X [in the range 0 to (width - 1)]
-        // light (N - 1) Y ]in the range 0 to (height - 1)]
-        //
-        // For a larger number of lights, it could make more
-        // sense to store the light positions in a bitmap
-        // and extract them manually
-        InputStream lis = am.open("lights.dat");
-        lis = cache(lis);
-
-        int lightWidth = readInt16(lis);
-        int lightHeight = readInt16(lis);
-        sNumLights = readInt16(lis);
-        sLightCoords = new int[3 * sNumLights];
-
-        int lidx = 0;
-        float lightRadius = 1.009f;
-        float lightScale = 65536.0f * lightRadius;
-
-        float[] cosTheta = new float[lightWidth];
-        float[] sinTheta = new float[lightWidth];
-        float twoPi = (float) (2.0 * Math.PI);
-        float scaleW = twoPi / lightWidth;
-        for (int i = 0; i < lightWidth; i++) {
-            float theta = twoPi - i * scaleW;
-            cosTheta[i] = (float)Math.cos(theta);
-            sinTheta[i] = (float)Math.sin(theta);
-        }
-
-        float[] cosPhi = new float[lightHeight];
-        float[] sinPhi = new float[lightHeight];
-        float scaleH = (float) (Math.PI / lightHeight);
-        for (int j = 0; j < lightHeight; j++) {
-            float phi = j * scaleH;
-            cosPhi[j] = (float)Math.cos(phi);
-            sinPhi[j] = (float)Math.sin(phi);
-        }
-
-        int nbytes = 4 * sNumLights;
-        byte[] ilights = new byte[nbytes];
-        int nread = 0;
-        while (nread < nbytes) {
-            nread += lis.read(ilights, nread, nbytes - nread);
-        }
-
-        int idx = 0;
-        for (int i = 0; i < sNumLights; i++) {
-            int lx = (((ilights[idx + 1] & 0xff) << 8) |
-                       (ilights[idx    ] & 0xff));
-            int ly = (((ilights[idx + 3] & 0xff) << 8) |
-                       (ilights[idx + 2] & 0xff));
-            idx += 4;
-
-            float sin = sinPhi[ly];
-            float x = cosTheta[lx]*sin;
-            float y = cosPhi[ly];
-            float z = sinTheta[lx]*sin;
-
-            sLightCoords[lidx++] = (int) (x * lightScale);
-            sLightCoords[lidx++] = (int) (y * lightScale);
-            sLightCoords[lidx++] = (int) (z * lightScale);
-        }
-        mLights = new PointCloud(sLightCoords);
-    }
-
-    /**
-     * Returns true if two time zone offsets are equal.  We assume distinct
-     * time zone offsets will differ by at least a few minutes.
-     */
-    private boolean tzEqual(float o1, float o2) {
-        return Math.abs(o1 - o2) < 0.001;
-    }
-
-    /**
-     * Move to a different time zone.
-     *
-     * @param incr The increment between the current and future time zones.
-     */
-    private void shiftTimeZone(int incr) {
-        // If only 1 city in the current set, there's nowhere to go
-        if (mCities.size() <= 1) {
-            return;
-        }
-
-        float offset = getOffset(mCities.get(mCityIndex));
-        do {
-            mCityIndex = (mCityIndex + mCities.size() + incr) % mCities.size();
-        } while (tzEqual(getOffset(mCities.get(mCityIndex)), offset));
-
-        offset = getOffset(mCities.get(mCityIndex));
-        locateCity(true, offset);
-        goToCity();
-    }
-
-    /**
-     * Returns true if there is another city within the current time zone
-     * that is the given increment away from the current city.
-     *
-     * @param incr the increment, +1 or -1
-     * @return
-     */
-    private boolean atEndOfTimeZone(int incr) {
-        if (mCities.size() <= 1) {
-            return true;
-        }
-
-        float offset = getOffset(mCities.get(mCityIndex));
-        int nindex = (mCityIndex + mCities.size() + incr) % mCities.size();
-        if (tzEqual(getOffset(mCities.get(nindex)), offset)) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Shifts cities within the current time zone.
-     *
-     * @param incr the increment, +1 or -1
-     */
-    private void shiftWithinTimeZone(int incr) {
-        float offset = getOffset(mCities.get(mCityIndex));
-        int nindex = (mCityIndex + mCities.size() + incr) % mCities.size();
-        if (tzEqual(getOffset(mCities.get(nindex)), offset)) {
-            mCityIndex = nindex;
-            goToCity();
-        }
-    }
-
-    /**
-     * Returns true if the city name matches the given prefix, ignoring spaces.
-     */
-    private boolean nameMatches(City city, String prefix) {
-        String cityName = city.getName().replaceAll("[ ]", "");
-        return prefix.regionMatches(true, 0,
-                                    cityName, 0,
-                                    prefix.length());
-    }
-
-    /**
-     * Returns true if there are cities matching the given name prefix.
-     */
-    private boolean hasMatches(String prefix) {
-        for (int i = 0; i < mClockCities.size(); i++) {
-            City city = mClockCities.get(i);
-            if (nameMatches(city, prefix)) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Shifts to the nearest city that matches the new prefix.
-     */
-    private void shiftByName() {
-        // Attempt to keep current city if it matches
-        City finalCity = null;
-        City currCity = mCities.get(mCityIndex);
-        if (nameMatches(currCity, mCityName)) {
-            finalCity = currCity;
-        }
-
-        mCityNameMatches.clear();
-        for (int i = 0; i < mClockCities.size(); i++) {
-            City city = mClockCities.get(i);
-            if (nameMatches(city, mCityName)) {
-                mCityNameMatches.add(city);
-            }
-        }
-
-        mCities = mCityNameMatches;
-
-        if (finalCity != null) {
-            for (int i = 0; i < mCityNameMatches.size(); i++) {
-                if (mCityNameMatches.get(i) == finalCity) {
-                    mCityIndex = i;
-                    break;
-                }
-            }
-        } else {
-            // Find the closest matching city
-            locateCity(false, 0.0f);
-        }
-        goToCity();
-    }
-
-    /**
-     * Increases or decreases the rotational speed of the earth.
-     */
-    private void incrementRotationalVelocity(float incr) {
-        if (mDisplayWorldFlat) {
-            mWrapVelocity -= incr;
-        } else {
-            mRotVelocity -= incr;
-        }
-    }
-
-    /**
-     * Clears the current matching prefix, while keeping the focus on
-     * the current city.
-     */
-    private void clearCityMatches() {
-        // Determine the global city index that matches the current city
-        if (mCityNameMatches.size() > 0) {
-            City city = mCityNameMatches.get(mCityIndex);
-            for (int i = 0; i < mClockCities.size(); i++) {
-                City ncity = mClockCities.get(i);
-                if (city.equals(ncity)) {
-                    mCityIndex = i;
-                    break;
-                }
-            }
-        }
-
-        mCityName = "";
-        mCityNameMatches.clear();
-        mCities = mClockCities;
-        goToCity();
-    }
-
-    /**
-     * Fade the clock in or out.
-     */
-    private void enableClock(boolean enabled) {
-        mClockFadeTime = System.currentTimeMillis();
-        mDisplayClock = enabled;
-        mClockShowing = true;
-        mAlphaKeySet = enabled;
-        if (enabled) {
-            // Find the closest matching city
-            locateCity(false, 0.0f);
-        }
-        clearCityMatches();
-    }
-
-    /**
-     * Use the touchscreen to alter the rotational velocity or the
-     * tilt of the earth.
-     */
-    @Override public boolean onTouchEvent(MotionEvent event) {
-        switch (event.getAction()) {
-            case MotionEvent.ACTION_DOWN:
-                mMotionStartX = event.getX();
-                mMotionStartY = event.getY();
-                mMotionStartRotVelocity = mDisplayWorldFlat ?
-                    mWrapVelocity : mRotVelocity;
-                mMotionStartTiltAngle = mTiltAngle;
-
-                // Stop the rotation
-                if (mDisplayWorldFlat) {
-                    mWrapVelocity = 0.0f;
-                } else {
-                    mRotVelocity = 0.0f;
-                }
-                mMotionDirection = MOTION_NONE;
-                break;
-
-            case MotionEvent.ACTION_MOVE:
-                // Disregard motion events when the clock is displayed
-                float dx = event.getX() - mMotionStartX;
-                float dy = event.getY() - mMotionStartY;
-                float delx = Math.abs(dx);
-                float dely = Math.abs(dy);
-
-                // Determine the direction of motion (major axis)
-                // Once if has been determined, it's locked in until
-                // we receive ACTION_UP or ACTION_CANCEL
-                if ((mMotionDirection == MOTION_NONE) &&
-                    (delx + dely > MIN_MANHATTAN_DISTANCE)) {
-                    if (delx > dely) {
-                        mMotionDirection = MOTION_X;
-                    } else {
-                        mMotionDirection = MOTION_Y;
-                    }
-                }
-
-                // If the clock is displayed, don't actually rotate or tilt;
-                // just use mMotionDirection to record whether motion occurred
-                if (!mDisplayClock) {
-                    if (mMotionDirection == MOTION_X) {
-                        if (mDisplayWorldFlat) {
-                            mWrapVelocity = mMotionStartRotVelocity +
-                                dx * ROTATION_FACTOR;
-                        } else {
-                            mRotVelocity = mMotionStartRotVelocity +
-                                dx * ROTATION_FACTOR;
-                        }
-                        mClock.setCity(null);
-                    } else if (mMotionDirection == MOTION_Y &&
-                        !mDisplayWorldFlat) {
-                        mTiltAngle = mMotionStartTiltAngle + dy * TILT_FACTOR;
-                        if (mTiltAngle < -90.0f) {
-                            mTiltAngle = -90.0f;
-                        }
-                        if (mTiltAngle > 90.0f) {
-                            mTiltAngle = 90.0f;
-                        }
-                        mClock.setCity(null);
-                    }
-                }
-                break;
-
-            case MotionEvent.ACTION_UP:
-                mMotionDirection = MOTION_NONE;
-                break;
-
-            case MotionEvent.ACTION_CANCEL:
-                mTiltAngle = mMotionStartTiltAngle;
-                if (mDisplayWorldFlat) {
-                    mWrapVelocity = mMotionStartRotVelocity;
-                } else {
-                    mRotVelocity = mMotionStartRotVelocity;
-                }
-                mMotionDirection = MOTION_NONE;
-                break;
-        }
-        return true;
-    }
-
-    @Override public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (mInitialized && mGLView.processKey(keyCode)) {
-            boolean drawing = (mClockShowing || mGLView.hasMessages());
-            this.setWillNotDraw(!drawing);
-            return true;
-        }
-
-        boolean handled = false;
-
-        // If we're not in alphabetical entry mode, convert letters
-        // to their digit equivalents
-        if (!mAlphaKeySet) {
-            char numChar = event.getNumber();
-            if (numChar >= '0' && numChar <= '9') {
-                keyCode = KeyEvent.KEYCODE_0 + (numChar - '0');
-            }
-        }
-
-        switch (keyCode) {
-        // The 'space' key toggles the clock
-        case KeyEvent.KEYCODE_SPACE:
-            mAlphaKeySet = !mAlphaKeySet;
-            enableClock(mAlphaKeySet);
-            handled = true;
-            break;
-
-        // The 'left' and 'right' buttons shift time zones if the clock is
-        // displayed, otherwise they alters the rotational speed of the earthh
-        case KeyEvent.KEYCODE_DPAD_LEFT:
-            if (mDisplayClock) {
-                shiftTimeZone(-1);
-            } else {
-                mClock.setCity(null);
-                incrementRotationalVelocity(1.0f);
-            }
-            handled = true;
-            break;
-
-        case KeyEvent.KEYCODE_DPAD_RIGHT:
-            if (mDisplayClock) {
-                shiftTimeZone(1);
-            } else {
-                mClock.setCity(null);
-                incrementRotationalVelocity(-1.0f);
-            }
-            handled = true;
-            break;
-
-        // The 'up' and 'down' buttons shift cities within a time zone if the
-        // clock is displayed, otherwise they tilt the earth
-        case KeyEvent.KEYCODE_DPAD_UP:
-            if (mDisplayClock) {
-                shiftWithinTimeZone(-1);
-            } else {
-                mClock.setCity(null);
-                if (!mDisplayWorldFlat) {
-                    mTiltAngle += 360.0f / 48.0f;
-                }
-            }
-            handled = true;
-            break;
-
-        case KeyEvent.KEYCODE_DPAD_DOWN:
-            if (mDisplayClock) {
-                shiftWithinTimeZone(1);
-            } else {
-                mClock.setCity(null);
-                if (!mDisplayWorldFlat) {
-                    mTiltAngle -= 360.0f / 48.0f;
-                }
-            }
-            handled = true;
-            break;
-
-        // The center key stops the earth's rotation, then toggles between the
-        // round and flat views of the earth
-        case KeyEvent.KEYCODE_DPAD_CENTER:
-            if ((!mDisplayWorldFlat && mRotVelocity == 0.0f) ||
-                (mDisplayWorldFlat && mWrapVelocity == 0.0f)) {
-                mDisplayWorldFlat = !mDisplayWorldFlat;
-            } else {
-                if (mDisplayWorldFlat) {
-                    mWrapVelocity = 0.0f;
-                } else {
-                    mRotVelocity = 0.0f;
-                }
-            }
-            handled = true;
-            break;
-
-        // The 'L' key toggles the city lights
-        case KeyEvent.KEYCODE_L:
-            if (!mAlphaKeySet && !mDisplayWorldFlat) {
-                mDisplayLights = !mDisplayLights;
-                handled = true;
-            }
-            break;
-
-
-        // The 'W' key toggles the earth (just for fun)
-        case KeyEvent.KEYCODE_W:
-            if (!mAlphaKeySet && !mDisplayWorldFlat) {
-                mDisplayWorld = !mDisplayWorld;
-                handled = true;
-            }
-            break;
-
-        // The 'A' key toggles the atmosphere
-        case KeyEvent.KEYCODE_A:
-            if (!mAlphaKeySet && !mDisplayWorldFlat) {
-                mDisplayAtmosphere = !mDisplayAtmosphere;
-                handled = true;
-            }
-            break;
-
-        // The '2' key zooms out
-        case KeyEvent.KEYCODE_2:
-            if (!mAlphaKeySet && !mDisplayWorldFlat && mInitialized) {
-                mGLView.zoom(-2);
-                handled = true;
-            }
-            break;
-
-        // The '8' key zooms in
-        case KeyEvent.KEYCODE_8:
-            if (!mAlphaKeySet && !mDisplayWorldFlat && mInitialized) {
-                mGLView.zoom(2);
-                handled = true;
-            }
-            break;
-        }
-
-        // Handle letters in city names
-        if (!handled && mAlphaKeySet) {
-            switch (keyCode) {
-            // Add a letter to the city name prefix
-            case KeyEvent.KEYCODE_A:
-            case KeyEvent.KEYCODE_B:
-            case KeyEvent.KEYCODE_C:
-            case KeyEvent.KEYCODE_D:
-            case KeyEvent.KEYCODE_E:
-            case KeyEvent.KEYCODE_F:
-            case KeyEvent.KEYCODE_G:
-            case KeyEvent.KEYCODE_H:
-            case KeyEvent.KEYCODE_I:
-            case KeyEvent.KEYCODE_J:
-            case KeyEvent.KEYCODE_K:
-            case KeyEvent.KEYCODE_L:
-            case KeyEvent.KEYCODE_M:
-            case KeyEvent.KEYCODE_N:
-            case KeyEvent.KEYCODE_O:
-            case KeyEvent.KEYCODE_P:
-            case KeyEvent.KEYCODE_Q:
-            case KeyEvent.KEYCODE_R:
-            case KeyEvent.KEYCODE_S:
-            case KeyEvent.KEYCODE_T:
-            case KeyEvent.KEYCODE_U:
-            case KeyEvent.KEYCODE_V:
-            case KeyEvent.KEYCODE_W:
-            case KeyEvent.KEYCODE_X:
-            case KeyEvent.KEYCODE_Y:
-            case KeyEvent.KEYCODE_Z:
-                char c = (char)(keyCode - KeyEvent.KEYCODE_A + 'A');
-                if (hasMatches(mCityName + c)) {
-                    mCityName += c;
-                    shiftByName();
-                }
-                handled = true;
-                break;
-
-            // Remove a letter from the city name prefix
-            case KeyEvent.KEYCODE_DEL:
-                if (mCityName.length() > 0) {
-                    mCityName = mCityName.substring(0, mCityName.length() - 1);
-                    shiftByName();
-                } else {
-                    clearCityMatches();
-                }
-                handled = true;
-                break;
-
-            // Clear the city name prefix
-            case KeyEvent.KEYCODE_ENTER:
-                clearCityMatches();
-                handled = true;
-                break;
-            }
-        }
-
-        boolean drawing = (mClockShowing ||
-            ((mGLView != null) && (mGLView.hasMessages())));
-        this.setWillNotDraw(!drawing);
-
-        // Let the system handle other keypresses
-        if (!handled) {
-            return super.onKeyDown(keyCode, event);
-        }
-        return true;
-    }
-
-    /**
-     * Initialize OpenGL ES drawing.
-     */
-    private synchronized void init(GL10 gl) {
-        mGLView = new GLView();
-        mGLView.setNearFrustum(5.0f);
-        mGLView.setFarFrustum(50.0f);
-        mGLView.setLightModelAmbientIntensity(0.225f);
-        mGLView.setAmbientIntensity(0.0f);
-        mGLView.setDiffuseIntensity(1.5f);
-        mGLView.setDiffuseColor(SUNLIGHT_COLOR);
-        mGLView.setSpecularIntensity(0.0f);
-        mGLView.setSpecularColor(SUNLIGHT_COLOR);
-
-        if (PERFORM_DEPTH_TEST) {
-            gl.glEnable(GL10.GL_DEPTH_TEST);
-        }
-        gl.glDisable(GL10.GL_SCISSOR_TEST);
-        gl.glClearColor(0, 0, 0, 1);
-        gl.glHint(GL10.GL_POINT_SMOOTH_HINT, GL10.GL_NICEST);
-
-        mInitialized = true;
-    }
-
-    /**
-     * Computes the vector from the center of the earth to the sun for a
-     * particular moment in time.
-     */
-    private void computeSunDirection() {
-        mSunCal.setTimeInMillis(System.currentTimeMillis());
-        int day = mSunCal.get(Calendar.DAY_OF_YEAR);
-        int seconds = 3600 * mSunCal.get(Calendar.HOUR_OF_DAY) +
-            60 * mSunCal.get(Calendar.MINUTE) + mSunCal.get(Calendar.SECOND);
-        day += (float) seconds / SECONDS_PER_DAY;
-
-        // Approximate declination of the sun, changes sinusoidally
-        // during the year.  The winter solstice occurs 10 days before
-        // the start of the year.
-        float decl = (float) (EARTH_INCLINATION *
-            Math.cos(Shape.TWO_PI * (day + 10) / 365.0));
-
-        // Subsolar latitude, convert from (-PI/2, PI/2) -> (0, PI) form
-        float phi = decl + Shape.PI_OVER_TWO;
-        // Subsolar longitude
-        float theta = Shape.TWO_PI * seconds / SECONDS_PER_DAY;
-
-        float sinPhi = (float) Math.sin(phi);
-        float cosPhi = (float) Math.cos(phi);
-        float sinTheta = (float) Math.sin(theta);
-        float cosTheta = (float) Math.cos(theta);
-
-        // Convert from polar to rectangular coordinates
-        float x = cosTheta * sinPhi;
-        float y = cosPhi;
-        float z = sinTheta * sinPhi;
-
-        // Directional light -> w == 0
-        mLightDir[0] = x;
-        mLightDir[1] = y;
-        mLightDir[2] = z;
-        mLightDir[3] = 0.0f;
-    }
-
-    /**
-     * Computes the approximate spherical distance between two
-     * (latitude, longitude) coordinates.
-     */
-    private float distance(float lat1, float lon1,
-                           float lat2, float lon2) {
-        lat1 *= Shape.DEGREES_TO_RADIANS;
-        lat2 *= Shape.DEGREES_TO_RADIANS;
-        lon1 *= Shape.DEGREES_TO_RADIANS;
-        lon2 *= Shape.DEGREES_TO_RADIANS;
-
-        float r = 6371.0f; // Earth's radius in km
-        float dlat = lat2 - lat1;
-        float dlon = lon2 - lon1;
-        double sinlat2 = Math.sin(dlat / 2.0f);
-        sinlat2 *= sinlat2;
-        double sinlon2 = Math.sin(dlon / 2.0f);
-        sinlon2 *= sinlon2;
-
-        double a = sinlat2 + Math.cos(lat1) * Math.cos(lat2) * sinlon2;
-        double c = 2.0 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
-        return (float) (r * c);
-    }
-
-    /**
-     * Locates the closest city to the currently displayed center point,
-     * optionally restricting the search to cities within a given time zone.
-     */
-    private void locateCity(boolean useOffset, float offset) {
-        float mindist = Float.MAX_VALUE;
-        int minidx = -1;
-        for (int i = 0; i < mCities.size(); i++) {
-            City city = mCities.get(i);
-            if (useOffset && !tzEqual(getOffset(city), offset)) {
-                continue;
-            }
-            float dist = distance(city.getLatitude(), city.getLongitude(),
-                mTiltAngle, mRotAngle - 90.0f);
-            if (dist < mindist) {
-                mindist = dist;
-                minidx = i;
-            }
-        }
-
-        mCityIndex = minidx;
-    }
-
-    /**
-     * Animates the earth to be centered at the current city.
-     */
-    private void goToCity() {
-        City city = mCities.get(mCityIndex);
-        float dist = distance(city.getLatitude(), city.getLongitude(),
-            mTiltAngle, mRotAngle - 90.0f);
-
-        mFlyToCity = true;
-        mCityFlyStartTime = System.currentTimeMillis();
-        mCityFlightTime = dist / 5.0f; // 5000 km/sec
-        mRotAngleStart = mRotAngle;
-        mRotAngleDest = city.getLongitude() + 90;
-
-        if (mRotAngleDest - mRotAngleStart > 180.0f) {
-            mRotAngleDest -= 360.0f;
-        } else if (mRotAngleStart - mRotAngleDest > 180.0f) {
-            mRotAngleDest += 360.0f;
-        }
-
-        mTiltAngleStart = mTiltAngle;
-        mTiltAngleDest = city.getLatitude();
-        mRotVelocity = 0.0f;
-    }
-
-    /**
-     * Returns a linearly interpolated value between two values.
-     */
-    private float lerp(float a, float b, float lerp) {
-        return a + (b - a)*lerp;
-    }
-
-    /**
-     * Draws the city lights, using a clip plane to restrict the lights
-     * to the night side of the earth.
-     */
-    private void drawCityLights(GL10 gl, float brightness) {
-        gl.glEnable(GL10.GL_POINT_SMOOTH);
-        gl.glDisable(GL10.GL_DEPTH_TEST);
-        gl.glDisable(GL10.GL_LIGHTING);
-        gl.glDisable(GL10.GL_DITHER);
-        gl.glShadeModel(GL10.GL_FLAT);
-        gl.glEnable(GL10.GL_BLEND);
-        gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
-        gl.glPointSize(1.0f);
-
-        float ls = lerp(0.8f, 0.3f, brightness);
-        gl.glColor4f(ls * 1.0f, ls * 1.0f, ls * 0.8f, 1.0f);
-
-        if (mDisplayWorld) {
-            mClipPlaneEquation[0] = -mLightDir[0];
-            mClipPlaneEquation[1] = -mLightDir[1];
-            mClipPlaneEquation[2] = -mLightDir[2];
-            mClipPlaneEquation[3] = 0.0f;
-            // Assume we have glClipPlanef() from OpenGL ES 1.1
-            ((GL11) gl).glClipPlanef(GL11.GL_CLIP_PLANE0,
-                mClipPlaneEquation, 0);
-            gl.glEnable(GL11.GL_CLIP_PLANE0);
-        }
-        mLights.draw(gl);
-        if (mDisplayWorld) {
-            gl.glDisable(GL11.GL_CLIP_PLANE0);
-        }
-
-        mNumTriangles += mLights.getNumTriangles()*2;
-    }
-
-    /**
-     * Draws the atmosphere.
-     */
-    private void drawAtmosphere(GL10 gl) {
-        gl.glDisable(GL10.GL_LIGHTING);
-        gl.glDisable(GL10.GL_CULL_FACE);
-        gl.glDisable(GL10.GL_DITHER);
-        gl.glDisable(GL10.GL_DEPTH_TEST);
-        gl.glShadeModel(mSmoothShading ? GL10.GL_SMOOTH : GL10.GL_FLAT);
-
-        // Draw the atmospheric layer
-        float tx = mGLView.getTranslateX();
-        float ty = mGLView.getTranslateY();
-        float tz = mGLView.getTranslateZ();
-
-        gl.glMatrixMode(GL10.GL_MODELVIEW);
-        gl.glLoadIdentity();
-        gl.glTranslatef(tx, ty, tz);
-
-        // Blend in the atmosphere a bit
-        gl.glEnable(GL10.GL_BLEND);
-        gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
-        ATMOSPHERE.draw(gl);
-
-        mNumTriangles += ATMOSPHERE.getNumTriangles();
-    }
-
-    /**
-     * Draws the world in a 2D map view.
-     */
-    private void drawWorldFlat(GL10 gl) {
-        gl.glDisable(GL10.GL_BLEND);
-        gl.glEnable(GL10.GL_DITHER);
-        gl.glShadeModel(mSmoothShading ? GL10.GL_SMOOTH : GL10.GL_FLAT);
-
-        gl.glTranslatef(mWrapX - 2, 0.0f, 0.0f);
-        worldFlat.draw(gl);
-        gl.glTranslatef(2.0f, 0.0f, 0.0f);
-        worldFlat.draw(gl);
-        mNumTriangles += worldFlat.getNumTriangles() * 2;
-
-        mWrapX += mWrapVelocity * mWrapVelocityFactor;
-        while (mWrapX < 0.0f) {
-            mWrapX += 2.0f;
-        }
-        while (mWrapX > 2.0f) {
-            mWrapX -= 2.0f;
-        }
-    }
-
-    /**
-     * Draws the world in a 2D round view.
-     */
-    private void drawWorldRound(GL10 gl) {
-        gl.glDisable(GL10.GL_BLEND);
-        gl.glEnable(GL10.GL_DITHER);
-        gl.glShadeModel(mSmoothShading ? GL10.GL_SMOOTH : GL10.GL_FLAT);
-
-        mWorld.draw(gl);
-        mNumTriangles += mWorld.getNumTriangles();
-    }
-
-    /**
-     * Draws the clock.
-     *
-     * @param canvas the Canvas to draw to
-     * @param now the current time
-     * @param w the width of the screen
-     * @param h the height of the screen
-     * @param lerp controls the animation, between 0.0 and 1.0
-     */
-    private void drawClock(Canvas canvas,
-                           long now,
-                           int w, int h,
-                           float lerp) {
-        float clockAlpha = lerp(0.0f, 0.8f, lerp);
-        mClockShowing = clockAlpha > 0.0f;
-        if (clockAlpha > 0.0f) {
-            City city = mCities.get(mCityIndex);
-            mClock.setCity(city);
-            mClock.setTime(now);
-
-            float cx = w / 2.0f;
-            float cy = h / 2.0f;
-            float smallRadius = 18.0f;
-            float bigRadius = 0.75f * 0.5f * Math.min(w, h);
-            float radius = lerp(smallRadius, bigRadius, lerp);
-
-            // Only display left/right arrows if we are in a name search
-            boolean scrollingByName =
-                (mCityName.length() > 0) && (mCities.size() > 1);
-            mClock.drawClock(canvas, cx, cy, radius,
-                             clockAlpha,
-                             1.0f,
-                             lerp == 1.0f, lerp == 1.0f,
-                             !atEndOfTimeZone(-1),
-                             !atEndOfTimeZone(1),
-                             scrollingByName,
-                             mCityName.length());
-        }
-    }
-
-    /**
-     * Draws the 2D layer.
-     */
-    @Override protected void onDraw(Canvas canvas) {
-        long now = System.currentTimeMillis();
-        if (startTime != -1) {
-            startTime = -1;
-        }
-
-        int w = getWidth();
-        int h = getHeight();
-
-        // Interpolator for clock size, clock alpha, night lights intensity
-        float lerp = Math.min((now - mClockFadeTime)/1000.0f, 1.0f);
-        if (!mDisplayClock) {
-            // Clock is receding
-            lerp = 1.0f - lerp;
-        }
-        lerp = mClockSizeInterpolator.getInterpolation(lerp);
-
-        // we don't need to make sure OpenGL rendering is done because
-        // we're drawing in to a different surface
-
-        drawClock(canvas, now, w, h, lerp);
-
-        mGLView.showMessages(canvas);
-        mGLView.showStatistics(canvas, w);
-    }
-
-    /**
-     * Draws the 3D layer.
-     */
-    protected void drawOpenGLScene() {
-        long now = System.currentTimeMillis();
-        mNumTriangles = 0;
-
-        EGL10 egl = (EGL10)EGLContext.getEGL();
-        GL10 gl = (GL10)mEGLContext.getGL();
-
-        if (!mInitialized) {
-            init(gl);
-        }
-
-        int w = getWidth();
-        int h = getHeight();
-        gl.glViewport(0, 0, w, h);
-
-        gl.glEnable(GL10.GL_LIGHTING);
-        gl.glEnable(GL10.GL_LIGHT0);
-        gl.glEnable(GL10.GL_CULL_FACE);
-        gl.glFrontFace(GL10.GL_CCW);
-
-        float ratio = (float) w / h;
-        mGLView.setAspectRatio(ratio);
-
-        mGLView.setTextureParameters(gl);
-
-        if (PERFORM_DEPTH_TEST) {
-            gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
-        } else {
-            gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
-        }
-
-        if (mDisplayWorldFlat) {
-            gl.glMatrixMode(GL10.GL_PROJECTION);
-            gl.glLoadIdentity();
-            gl.glFrustumf(-1.0f, 1.0f, -1.0f / ratio, 1.0f / ratio, 1.0f, 2.0f);
-            gl.glMatrixMode(GL10.GL_MODELVIEW);
-            gl.glLoadIdentity();
-            gl.glTranslatef(0.0f, 0.0f, -1.0f);
-        } else {
-            mGLView.setProjection(gl);
-            mGLView.setView(gl);
-        }
-
-        if (!mDisplayWorldFlat) {
-            if (mFlyToCity) {
-                float lerp = (now - mCityFlyStartTime)/mCityFlightTime;
-                if (lerp >= 1.0f) {
-                    mFlyToCity = false;
-                }
-                lerp = Math.min(lerp, 1.0f);
-                lerp = mFlyToCityInterpolator.getInterpolation(lerp);
-                mRotAngle = lerp(mRotAngleStart, mRotAngleDest, lerp);
-                mTiltAngle = lerp(mTiltAngleStart, mTiltAngleDest, lerp);
-            }
-
-            // Rotate the viewpoint around the earth
-            gl.glMatrixMode(GL10.GL_MODELVIEW);
-            gl.glRotatef(mTiltAngle, 1, 0, 0);
-            gl.glRotatef(mRotAngle, 0, 1, 0);
-
-            // Increment the rotation angle
-            mRotAngle += mRotVelocity;
-            if (mRotAngle < 0.0f) {
-                mRotAngle += 360.0f;
-            }
-            if (mRotAngle > 360.0f) {
-                mRotAngle -= 360.0f;
-            }
-        }
-
-        // Draw the world with lighting
-        gl.glLightfv(GL10.GL_LIGHT0, GL10.GL_POSITION, mLightDir, 0);
-        mGLView.setLights(gl, GL10.GL_LIGHT0);
-
-        if (mDisplayWorldFlat) {
-            drawWorldFlat(gl);
-        } else if (mDisplayWorld) {
-            drawWorldRound(gl);
-        }
-
-        if (mDisplayLights && !mDisplayWorldFlat) {
-            // Interpolator for clock size, clock alpha, night lights intensity
-            float lerp = Math.min((now - mClockFadeTime)/1000.0f, 1.0f);
-            if (!mDisplayClock) {
-                // Clock is receding
-                lerp = 1.0f - lerp;
-            }
-            lerp = mClockSizeInterpolator.getInterpolation(lerp);
-            drawCityLights(gl, lerp);
-        }
-
-        if (mDisplayAtmosphere && !mDisplayWorldFlat) {
-            drawAtmosphere(gl);
-        }
-        mGLView.setNumTriangles(mNumTriangles);
-        egl.eglSwapBuffers(mEGLDisplay, mEGLSurface);
-
-        if (egl.eglGetError() == EGL11.EGL_CONTEXT_LOST) {
-            // we lost the gpu, quit immediately
-            Context c = getContext();
-            if (c instanceof Activity) {
-                ((Activity)c).finish();
-            }
-        }
-    }
-
-
-    private static final int INVALIDATE = 1;
-    private static final int ONE_MINUTE = 60000;
-
-    /**
-     * Controls the animation using the message queue.  Every time we receive
-     * an INVALIDATE message, we redraw and place another message in the queue.
-     */
-    private final Handler mHandler = new Handler() {
-        private long mLastSunPositionTime = 0;
-
-        @Override public void handleMessage(Message msg) {
-            if (msg.what == INVALIDATE) {
-
-                // Use the message's time, it's good enough and
-                // allows us to avoid a system call.
-                if ((msg.getWhen() - mLastSunPositionTime) >= ONE_MINUTE) {
-                    // Recompute the sun's position once per minute
-                    // Place the light at the Sun's direction
-                    computeSunDirection();
-                    mLastSunPositionTime = msg.getWhen();
-                }
-
-                // Draw the GL scene
-                drawOpenGLScene();
-
-                // Send an update for the 2D overlay if needed
-                if (mInitialized &&
-                                (mClockShowing || mGLView.hasMessages())) {
-                    invalidate();
-                }
-
-                // Just send another message immediately. This works because
-                // drawOpenGLScene() does the timing for us -- it will
-                // block until the last frame has been processed.
-                // The invalidate message we're posting here will be
-                // interleaved properly with motion/key events which
-                // guarantee a prompt reaction to the user input.
-                sendEmptyMessage(INVALIDATE);
-            }
-        }
-    };
-}
-
-/**
- * The main activity class for GlobalTime.
- */
-public class GlobalTime extends Activity {
-
-    GTView gtView = null;
-
-    @Override protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        gtView = new GTView(this);
-        setContentView(gtView);
-    }
-
-    @Override protected void onResume() {
-        super.onResume();
-        gtView.onResume();
-        Looper.myQueue().addIdleHandler(new Idler());
-    }
-
-    @Override protected void onPause() {
-        super.onPause();
-        gtView.onPause();
-    }
-
-    @Override protected void onStop() {
-        super.onStop();
-        gtView.destroy();
-        gtView = null;
-    }
-
-    // Allow the activity to go idle before its animation starts
-    class Idler implements MessageQueue.IdleHandler {
-        public Idler() {
-            super();
-        }
-
-        public final boolean queueIdle() {
-            if (gtView != null) {
-                gtView.startAnimating();
-            }
-            return false;
-        }
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/LatLongSphere.java b/samples/GlobalTime/src/com/android/globaltime/LatLongSphere.java
deleted file mode 100644
index b455d41..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/LatLongSphere.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-public class LatLongSphere extends Sphere {
-
-    public LatLongSphere(float centerX, float centerY, float centerZ,
-        float radius, int lats, int longs,
-        float minLongitude, float maxLongitude,
-        boolean emitTextureCoordinates,
-        boolean emitNormals,
-        boolean emitColors,
-        boolean flatten) {
-        super(emitTextureCoordinates, emitNormals, emitColors);
-
-        int tris = 2 * (lats - 1) * (longs - 1);
-        int[] vertices = new int[3 * lats * longs];
-        int[] texcoords = new int[2 * lats * longs];
-        int[] colors = new int[4 * lats * longs];
-        int[] normals = new int[3 * lats * longs];
-        short[] indices = new short[3 * tris];
-
-        int vidx = 0;
-        int tidx = 0;
-        int nidx = 0;
-        int cidx = 0;
-        int iidx = 0;
-
-        minLongitude *= DEGREES_TO_RADIANS;
-        maxLongitude *= DEGREES_TO_RADIANS;
-
-        for (int i = 0; i < longs; i++) {
-            float fi = (float) i / (longs - 1);
-            // theta is the longitude
-            float theta =
-                (maxLongitude - minLongitude) * (1.0f - fi) + minLongitude;
-            float sinTheta = (float) Math.sin(theta);
-            float cosTheta = (float) Math.cos(theta);
-
-            for (int j = 0; j < lats; j++) {
-                float fj = (float) j / (lats - 1);
-                // phi is the latitude
-                float phi = PI * fj;
-                float sinPhi = (float) Math.sin(phi);
-                float cosPhi = (float) Math.cos(phi);
-                float x = cosTheta * sinPhi;
-                float y = cosPhi;
-                float z = sinTheta * sinPhi;
-
-                if (flatten) {
-                    // Place vertices onto a flat projection
-                    vertices[vidx++] = toFixed(2.0f * fi - 1.0f);
-                    vertices[vidx++] = toFixed(0.5f - fj);
-                    vertices[vidx++] = toFixed(0.0f);
-                } else {
-                    // Place vertices onto the surface of a sphere
-                    // with the given center and radius
-                    vertices[vidx++] = toFixed(x * radius + centerX);
-                    vertices[vidx++] = toFixed(y * radius + centerY);
-                    vertices[vidx++] = toFixed(z * radius + centerZ);
-                }
-
-                if (emitTextureCoordinates) {
-                    texcoords[tidx++] = toFixed(1.0f - (theta / (TWO_PI)));
-                    texcoords[tidx++] = toFixed(fj);
-                }
-
-                if (emitNormals) {
-                    float norm = 1.0f / Shape.length(x, y, z);
-                    normals[nidx++] = toFixed(x * norm);
-                    normals[nidx++] = toFixed(y * norm);
-                    normals[nidx++] = toFixed(z * norm);
-                }
-
-                // 0 == black, 65536 == white
-                if (emitColors) {
-                    colors[cidx++] = (i % 2) * 65536;
-                    colors[cidx++] = 0;
-                    colors[cidx++] = (j % 2) * 65536;
-                    colors[cidx++] = 65536;
-                }
-            }
-        }
-
-        for (int i = 0; i < longs - 1; i++) {
-            for (int j = 0; j < lats - 1; j++) {
-                int base = i * lats + j;
-
-                // Ensure both triangles have the same final vertex
-                // since this vertex carries the color for flat
-                // shading
-                indices[iidx++] = (short) (base);
-                indices[iidx++] = (short) (base + 1);
-                indices[iidx++] = (short) (base + lats + 1);
-
-                indices[iidx++] = (short) (base + lats);
-                indices[iidx++] = (short) (base);
-                indices[iidx++] = (short) (base + lats + 1);
-            }
-        }
-        
-        allocateBuffers(vertices, texcoords, normals, colors, indices);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/PointCloud.java b/samples/GlobalTime/src/com/android/globaltime/PointCloud.java
deleted file mode 100644
index 6f4fd55..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/PointCloud.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * A class representing a set of GL_POINT objects.  GlobalTime uses this class
- * to draw city lights on the night side of the earth.
- */
-public class PointCloud extends Shape {
-
-    /**
-     * Constructs a PointCloud with a point at each of the given vertex
-     * (x, y, z) positions.
-     * @param vertices an array of (x, y, z) positions given in fixed-point.
-     */
-    public PointCloud(int[] vertices) {
-        this(vertices, 0, vertices.length);
-    }
-
-    /**
-     * Constructs a PointCloud with a point at each of the given vertex
-     * (x, y, z) positions.
-     * @param vertices an array of (x, y, z) positions given in fixed-point.
-     * @param off the starting offset of the vertices array
-     * @param len the number of elements of the vertices array to use
-     */
-    public PointCloud(int[] vertices, int off, int len) {
-        super(GL10.GL_POINTS, GL10.GL_UNSIGNED_SHORT,
-              false, false, false);
-
-        int numPoints = len / 3;
-        short[] indices = new short[numPoints];
-        for (int i = 0; i < numPoints; i++) {
-            indices[i] = (short)i;
-        }
-        
-        allocateBuffers(vertices, null, null, null, indices);
-        this.mNumIndices = mIndexBuffer.capacity();
-    }
-
-    @Override public int getNumTriangles() {
-        return mNumIndices * 2;
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/Shape.java b/samples/GlobalTime/src/com/android/globaltime/Shape.java
deleted file mode 100644
index 6c296ce..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/Shape.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import java.nio.Buffer;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.nio.IntBuffer;
-import java.nio.ShortBuffer;
-
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * An abstract superclass for various three-dimensional objects to be drawn
- * using OpenGL ES.  Each subclass is responsible for setting up NIO buffers
- * containing vertices, texture coordinates, colors, normals, and indices.
- * The {@link #draw(GL10)} method draws the object to the given OpenGL context.
- */
-public abstract class Shape {
-
-    public static final int INT_BYTES = 4;
-    public static final int SHORT_BYTES = 2;
-
-    public static final float DEGREES_TO_RADIANS = (float) Math.PI / 180.0f;
-    public static final float PI = (float) Math.PI;
-    public static final float TWO_PI = (float) (2.0 * Math.PI);
-    public static final float PI_OVER_TWO = (float) (Math.PI / 2.0);
-
-    protected int mPrimitive;
-    protected int mIndexDatatype;
-
-    protected boolean mEmitTextureCoordinates;
-    protected boolean mEmitNormals;
-    protected boolean mEmitColors;
-
-    protected IntBuffer mVertexBuffer;
-    protected IntBuffer mTexcoordBuffer;
-    protected IntBuffer mColorBuffer;
-    protected IntBuffer mNormalBuffer;
-    protected Buffer mIndexBuffer;
-    protected int mNumIndices = -1;
-
-    /**
-     * Constructs a Shape.
-     * 
-     * @param primitive a GL primitive type understood by glDrawElements,
-     * such as GL10.GL_TRIANGLES
-     * @param indexDatatype the GL datatype for the  index buffer, such as
-     * GL10.GL_UNSIGNED_SHORT
-     * @param emitTextureCoordinates true to enable use of the texture
-     * coordinate buffer
-     * @param emitNormals true to enable use of the normal buffer
-     * @param emitColors true to enable use of the color buffer
-     */
-    protected Shape(int primitive,
-        int indexDatatype,
-        boolean emitTextureCoordinates,
-        boolean emitNormals,
-        boolean emitColors) {
-        mPrimitive = primitive;
-        mIndexDatatype = indexDatatype;
-        mEmitTextureCoordinates = emitTextureCoordinates;
-        mEmitNormals = emitNormals;
-        mEmitColors = emitColors;
-    }
-
-    /**
-     * Converts the given floating-point value to fixed-point.
-     */
-    public static int toFixed(float x) {
-        return (int) (x * 65536.0);
-    }
-
-    /**
-     * Converts the given fixed-point value to floating-point.
-     */
-    public static float toFloat(int x) {
-        return (float) (x / 65536.0);
-    }
-
-    /**
-     * Computes the cross-product of two vectors p and q and places
-     * the result in out. 
-     */
-    public static void cross(float[] p, float[] q, float[] out) {
-        out[0] = p[1] * q[2] - p[2] * q[1];
-        out[1] = p[2] * q[0] - p[0] * q[2];
-        out[2] = p[0] * q[1] - p[1] * q[0];
-    }
-
-    /**
-     * Returns the length of a vector, given as three floats.
-     */
-    public static float length(float vx, float vy, float vz) {
-        return (float) Math.sqrt(vx * vx + vy * vy + vz * vz);
-    }
-
-    /**
-     * Returns the length of a vector, given as an array of three floats.
-     */
-    public static float length(float[] v) { 
-        return length(v[0], v[1], v[2]);
-    }
-
-    /**
-     * Normalizes the given vector of three floats to have length == 1.0.
-     * Vectors with length zero are unaffected.
-     */
-    public static void normalize(float[] v) {
-        float length = length(v);
-        if (length != 0.0f) {
-            float norm = 1.0f / length;
-            v[0] *= norm;
-            v[1] *= norm;
-            v[2] *= norm;
-        }
-    }
-
-    /**
-     * Returns the number of triangles associated with this shape.
-     */
-    public int getNumTriangles() {
-        if (mPrimitive == GL10.GL_TRIANGLES) {
-            return mIndexBuffer.capacity() / 3;
-        } else if (mPrimitive == GL10.GL_TRIANGLE_STRIP) {
-            return mIndexBuffer.capacity() - 2;
-        }
-        return 0;
-    }
-    
-    /**
-     * Copies the given data into the instance
-     * variables mVertexBuffer, mTexcoordBuffer, mNormalBuffer, mColorBuffer,
-     * and mIndexBuffer.
-     * 
-     * @param vertices an array of fixed-point vertex coordinates
-     * @param texcoords an array of fixed-point texture coordinates
-     * @param normals an array of fixed-point normal vector coordinates
-     * @param colors an array of fixed-point color channel values
-     * @param indices an array of short indices
-     */
-    public void allocateBuffers(int[] vertices, int[] texcoords, int[] normals,
-        int[] colors, short[] indices) {
-        allocate(vertices, texcoords, normals, colors);
-        
-        ByteBuffer ibb =
-            ByteBuffer.allocateDirect(indices.length * SHORT_BYTES);
-        ibb.order(ByteOrder.nativeOrder());
-        ShortBuffer shortIndexBuffer = ibb.asShortBuffer();
-        shortIndexBuffer.put(indices);
-        shortIndexBuffer.position(0);
-        this.mIndexBuffer = shortIndexBuffer;
-    }
-    
-    /**
-     * Copies the given data into the instance
-     * variables mVertexBuffer, mTexcoordBuffer, mNormalBuffer, mColorBuffer,
-     * and mIndexBuffer.
-     * 
-     * @param vertices an array of fixed-point vertex coordinates
-     * @param texcoords an array of fixed-point texture coordinates
-     * @param normals an array of fixed-point normal vector coordinates
-     * @param colors an array of fixed-point color channel values
-     * @param indices an array of int indices
-     */
-    public void allocateBuffers(int[] vertices, int[] texcoords, int[] normals,
-        int[] colors, int[] indices) {
-        allocate(vertices, texcoords, normals, colors);
-        
-        ByteBuffer ibb =
-            ByteBuffer.allocateDirect(indices.length * INT_BYTES);
-        ibb.order(ByteOrder.nativeOrder());
-        IntBuffer intIndexBuffer = ibb.asIntBuffer();
-        intIndexBuffer.put(indices);
-        intIndexBuffer.position(0);
-        this.mIndexBuffer = intIndexBuffer;
-    }
-    
-    /**
-     * Allocate the vertex, texture coordinate, normal, and color buffer.
-     */
-    private void allocate(int[] vertices, int[] texcoords, int[] normals,
-        int[] colors) {
-        ByteBuffer vbb =
-            ByteBuffer.allocateDirect(vertices.length * INT_BYTES);
-        vbb.order(ByteOrder.nativeOrder());
-        mVertexBuffer = vbb.asIntBuffer();
-        mVertexBuffer.put(vertices);
-        mVertexBuffer.position(0);
-
-        if ((texcoords != null) && mEmitTextureCoordinates) {
-            ByteBuffer tbb =
-                ByteBuffer.allocateDirect(texcoords.length * INT_BYTES);
-            tbb.order(ByteOrder.nativeOrder());
-            mTexcoordBuffer = tbb.asIntBuffer();
-            mTexcoordBuffer.put(texcoords);
-            mTexcoordBuffer.position(0);
-        }
-
-        if ((normals != null) && mEmitNormals) {
-            ByteBuffer nbb =
-                ByteBuffer.allocateDirect(normals.length * INT_BYTES);
-            nbb.order(ByteOrder.nativeOrder());
-            mNormalBuffer = nbb.asIntBuffer();
-            mNormalBuffer.put(normals);
-            mNormalBuffer.position(0);
-        }
-
-        if ((colors != null) && mEmitColors) {
-            ByteBuffer cbb =
-                ByteBuffer.allocateDirect(colors.length * INT_BYTES);
-            cbb.order(ByteOrder.nativeOrder());
-            mColorBuffer = cbb.asIntBuffer();
-            mColorBuffer.put(colors);
-            mColorBuffer.position(0);
-        }
-    }
-
-    /**
-     * Draws the shape to the given OpenGL ES 1.0 context.  Texture coordinates,
-     * normals, and colors are emitted according the the preferences set for
-     * this shape.
-     */
-    public void draw(GL10 gl) {
-        gl.glVertexPointer(3, GL10.GL_FIXED, 0, mVertexBuffer);
-        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
-
-        if (mEmitTextureCoordinates) {
-            gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
-            gl.glTexCoordPointer(2, GL10.GL_FIXED, 0, mTexcoordBuffer);
-            gl.glEnable(GL10.GL_TEXTURE_2D);
-        } else {
-            gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
-            gl.glDisable(GL10.GL_TEXTURE_2D);
-        }
-
-        if (mEmitNormals) {
-            gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);
-            gl.glNormalPointer(GL10.GL_FIXED, 0, mNormalBuffer);
-        } else {
-            gl.glDisableClientState(GL10.GL_NORMAL_ARRAY);
-        }
-
-        if (mEmitColors) {
-            gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
-            gl.glColorPointer(4, GL10.GL_FIXED, 0, mColorBuffer);
-        } else {
-            gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
-        }
-
-        gl.glDrawElements(mPrimitive,
-                          mNumIndices > 0 ? mNumIndices : mIndexBuffer.capacity(),
-                          mIndexDatatype,
-                          mIndexBuffer);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/Sphere.java b/samples/GlobalTime/src/com/android/globaltime/Sphere.java
deleted file mode 100644
index 4dff05d..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/Sphere.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import javax.microedition.khronos.opengles.GL10;
-
-public class Sphere extends Shape {
-
-    public Sphere(boolean emitTextureCoordinates,
-        boolean emitNormals, boolean emitColors) {
-        super(GL10.GL_TRIANGLES, GL10.GL_UNSIGNED_SHORT,
-              emitTextureCoordinates, emitNormals, emitColors);
-    }
-}
diff --git a/samples/GlobalTime/src/com/android/globaltime/Texture.java b/samples/GlobalTime/src/com/android/globaltime/Texture.java
deleted file mode 100644
index ee3af00..0000000
--- a/samples/GlobalTime/src/com/android/globaltime/Texture.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2007 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.android.globaltime;
-
-import java.nio.ByteBuffer;
-
-public class Texture {
-
-    private ByteBuffer data;
-    private int width, height;
-
-    public Texture(ByteBuffer data, int width, int height) {
-        this.data = data;
-        this.width = width;
-        this.height = height;
-    }
-
-    public ByteBuffer getData() {
-        return data;
-    }
-
-    public int getWidth() {
-        return width;
-    }
-
-    public int getHeight() {
-        return height;
-    }
-}
diff --git a/samples/NFCDemo/AndroidManifest.xml b/samples/NFCDemo/AndroidManifest.xml
deleted file mode 100644
index 044690b..0000000
--- a/samples/NFCDemo/AndroidManifest.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<!-- Declare the contents of this Android application.  The namespace
-     attribute brings in the Android platform namespace, and the package
-     supplies a unique name for the application.  When writing your
-     own application, the package name must be changed from "com.example.*"
-     to come from a domain that you own or have control over. -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.nfc"
->
-    <uses-permission android:name="android.permission.NFC" />
-    <uses-permission android:name="android.permission.CALL_PHONE" />
-    <application
-        android:icon="@drawable/icon"
-        android:label="@string/app_name"
-    >
-    <activity android:name=".simulator.FakeTagsActivity"
-        android:theme="@android:style/Theme.NoTitleBar">
-        <intent-filter>
-            <action android:name="android.intent.action.MAIN" />
-            <category android:name="android.intent.category.LAUNCHER" />
-        </intent-filter>
-    </activity>
-        <activity android:name="TagViewer"
-            android:theme="@android:style/Theme.NoTitleBar"
-        >
-            <intent-filter>
-                <action android:name="android.nfc.action.TAG_DISCOVERED"/>
-                <category android:name="android.intent.category.DEFAULT"/>
-            </intent-filter>
-        </activity>
-    </application>
-    <uses-sdk android:minSdkVersion="9" />
-    <uses-feature android:name="android.hardware.nfc" android:required="true" />
-</manifest>
diff --git a/samples/NFCDemo/NOTICE b/samples/NFCDemo/NOTICE
deleted file mode 100644
index 171b575..0000000
--- a/samples/NFCDemo/NOTICE
+++ /dev/null
@@ -1,209 +0,0 @@
-
-   Copyright (c) 2010-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.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-                                 Apache 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
-
-This product also includes the following third-party components:
-
- * Guava (libs/guava-10.0.1.jar)
-   http://code.google.com/p/guava-libraries/
-
-   Copyright 2004-2011 The Guava Authors
-
-   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/samples/NFCDemo/_index.html b/samples/NFCDemo/_index.html
deleted file mode 100644
index 07978f2..0000000
--- a/samples/NFCDemo/_index.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<p>
-  Near-field Communication or NFC is a standard defined by the
-  <a href=http://www.nfc-forum.org/home>NFC Forum
-  </a>.
-  NFC Data Exchange Format (NDEF) defines a common data format between NFC-compliant devices and tags.
-  This demo application shows how to read a NDEF Tags using using Android 2.3 SDK APIs.
-  The NFC Tags consist of data encoded in NDEF Message format specified by NFC Forum Type 2 Specification.
-  Each NDEF message consists of one or more NDEF Records.
-
-  You need a NFC compliant device and a NFC compliant Tag to use this sample app. Or else, you could use
-  the FakeTagsActivity displayed at launch of this sample app, to generate fake Tag broadcasts from the emulator.
-</p>
-
-<p>The application includes:
-</p>
-  <ul>
-    <li>
-      <a href="src/com/example/android/nfc/TagViewer.html">
-        <code>TagViewer
-        </code>
-      </a>
-      &mdash; an
-      <code>Activity
-      </code> that handles a broadcast of a new tag that the device
-      just discovered, parses it, and displays its record contents in a
-      <code>ListActivity
-      </code>
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/NdefMessageParser.html">
-        <code> NdefMessageParser
-        </code>
-      </a>
-      &mdash; parses the record type of records within the NDEF message.
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/record/ParsedNdefRecord.html">
-        <code>ParsedNdefRecord
-        </code>
-      </a>
-      &mdash; an interface implemented by all parsed NdefRecord types.
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/record/SmartPoster.html">
-        <code>SmartPoster
-        </code>
-      </a>
-      &mdash; a representation of an NFC Forum Smart Poster Record Type.
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/record/TextRecord.html">
-        <code>TextRecord
-        </code>
-      </a>
-      &mdash; a representation of an NFC Forum Text Record Type.
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/record/UriRecord.html">
-        <code>UriRecord
-        </code>
-      </a>
-      &mdash; a representation of an NFC Forum Uri Record Type.
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/simulator/FakeTagsActivity.html">
-        <code>FakeTagsActivity
-        </code>
-      </a>
-      &mdash; A activity that launches tags as if they had been scanned.
-      This is useful if you don't have access to NFC enabled device or tag.
-    </li>
-    <li>
-      <a href="src/com/example/android/nfc/simulator/MockNdefMessages.html">
-        <code>MockNdefMessages
-        </code>
-      </a>
-      &mdash; this class provides a list of fake NFC Ndef format Tags.
-    </li>
-
-  </ul>
-<p>If you are developing an application that uses the NFC API, remember that the feature
-  is supported only on Android 2.3 (API level 9) and higher versions of the platform. Also,
-  among devices running Android 2.3 (API level 9) or higher, not all devices will offer NFC
-  support. To ensure that your application can only be installed on devices that are capable
-  of supporting NFC, remember to add the following to the application's manifest before
-  publishing to Google Play:
-</p>
-<ul>
-  <li>
-    <code>&lt;uses-sdk android:minSdkVersion="9" /&gt;
-    </code>,
-    which indicates to Google Play and the platform that your application requires
-    Android 2.3 or higher. For more information, see
-    <a href="../../../guide/appendix/api-levels.html">API Levels
-    </a>
-    and the documentation for the
-    <a href="../../../guide/topics/manifest/uses-sdk-element.html">
-      <code>&lt;uses-sdk&gt;
-      </code>
-    </a> element.
-  </li>
-</ul>
-<p>To control how Google Play filters your application
-  from devices that do not support NFC, remember to add the following to the application's manifest
-  <ul>
-    <li>
-      <code>&lt;uses-feature android:name="android.hardware.nfc" /&gt;
-      </code>,
-      which tells Google Play that your application uses the NFC API. The declaration
-      should include an
-      <code>android:required
-      </code> attribute that indicates whether you want
-      Google Play to filter the application from devices that do not offer NFC support. Other
-      <code>&lt;uses-feature&gt;
-      </code> declarations may also be needed, depending on your
-      implementation. For more information, see the documentation for the
-      <a href="../../../guide/topics/manifest/uses-feature-element.html">
-        <code>&lt;uses-feature&gt;
-        </code>
-      </a> element.
-    </li>
-  </ul>
-<p>For more information about using the NFC API, see the
-  <a href="../../../reference/android/nfc/package-summary.html">
-    <code>android.nfc</code>
-    </a>
-   documentation.
-</p>
-<img alt="" src="../images/NfcDemo.png"/>
diff --git a/samples/NFCDemo/libs/guava-10.0.1.jar b/samples/NFCDemo/libs/guava-10.0.1.jar
deleted file mode 100644
index d107c0f..0000000
--- a/samples/NFCDemo/libs/guava-10.0.1.jar
+++ /dev/null
Binary files differ
diff --git a/samples/NFCDemo/res/drawable/icon.png b/samples/NFCDemo/res/drawable/icon.png
deleted file mode 100644
index a07c69f..0000000
--- a/samples/NFCDemo/res/drawable/icon.png
+++ /dev/null
Binary files differ
diff --git a/samples/NFCDemo/res/layout/tag_text.xml b/samples/NFCDemo/res/layout/tag_text.xml
deleted file mode 100644
index 59cbbfb..0000000
--- a/samples/NFCDemo/res/layout/tag_text.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     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.
--->
-
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/text"
-    android:layout_width="match_parent"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:layout_height="wrap_content"
-    android:padding="4dip"
-    android:textAppearance="?android:attr/textAppearanceMedium"
-    android:maxLines="5"
-    android:ellipsize="end"
-    android:gravity="center_vertical"
-/>
\ No newline at end of file
diff --git a/samples/NFCDemo/res/layout/tag_viewer.xml b/samples/NFCDemo/res/layout/tag_viewer.xml
deleted file mode 100644
index a429ef9..0000000
--- a/samples/NFCDemo/res/layout/tag_viewer.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent" android:layout_height="match_parent"
-    android:orientation="vertical">
-    <!-- Title -->
-    <TextView android:id="@+id/title" android:layout_width="wrap_content"
-        android:layout_height="wrap_content" android:singleLine="true"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:textStyle="bold" android:shadowColor="#BB000000"
-        android:shadowRadius="2.75" android:gravity="center_vertical" />
-    <!-- Content -->
-    <ScrollView android:layout_width="match_parent"
-        android:layout_height="0dip" android:layout_weight="1">
-        <LinearLayout android:id="@+id/list" android:layout_width="match_parent"
-            android:layout_height="wrap_content" android:orientation="vertical" />
-    </ScrollView>
-</LinearLayout>
\ No newline at end of file
diff --git a/samples/NFCDemo/res/raw/discovered_tag_notification.ogg b/samples/NFCDemo/res/raw/discovered_tag_notification.ogg
deleted file mode 100755
index 7bf5df7..0000000
--- a/samples/NFCDemo/res/raw/discovered_tag_notification.ogg
+++ /dev/null
Binary files differ
diff --git a/samples/NFCDemo/res/values/strings.xml b/samples/NFCDemo/res/values/strings.xml
deleted file mode 100644
index 251d2f6..0000000
--- a/samples/NFCDemo/res/values/strings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- 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.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-
-    <!-- The title of the NFC tag application -->
-    <string name="app_name">NFCDemo</string>
-
-    <!-- The title for the activity that shows a tag that was just scanned -->
-    <string name="title_scanned_tag">New tag collected</string>
-
-    <!-- Heading for the text of the content in the "my tag" feature. -->
-    <string name="tag_text">Text</string>
-
-</resources>
diff --git a/samples/NFCDemo/src/com/example/android/nfc/NdefMessageParser.java b/samples/NFCDemo/src/com/example/android/nfc/NdefMessageParser.java
deleted file mode 100644
index 7372810..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/NdefMessageParser.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.
- */
-package com.example.android.nfc;
-
-import android.nfc.NdefMessage;
-import android.nfc.NdefRecord;
-
-import com.example.android.nfc.record.ParsedNdefRecord;
-import com.example.android.nfc.record.SmartPoster;
-import com.example.android.nfc.record.TextRecord;
-import com.example.android.nfc.record.UriRecord;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Utility class for creating {@link ParsedNdefMessage}s.
- */
-public class NdefMessageParser {
-
-    // Utility class
-    private NdefMessageParser() {
-
-    }
-
-    /** Parse an NdefMessage */
-    public static List<ParsedNdefRecord> parse(NdefMessage message) {
-        return getRecords(message.getRecords());
-    }
-
-    public static List<ParsedNdefRecord> getRecords(NdefRecord[] records) {
-        List<ParsedNdefRecord> elements = new ArrayList<ParsedNdefRecord>();
-        for (NdefRecord record : records) {
-            if (UriRecord.isUri(record)) {
-                elements.add(UriRecord.parse(record));
-            } else if (TextRecord.isText(record)) {
-                elements.add(TextRecord.parse(record));
-            } else if (SmartPoster.isPoster(record)) {
-                elements.add(SmartPoster.parse(record));
-            }
-        }
-        return elements;
-    }
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/TagViewer.java b/samples/NFCDemo/src/com/example/android/nfc/TagViewer.java
deleted file mode 100644
index 01dc0bd..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/TagViewer.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * 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.
- */
-package com.example.android.nfc;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.nfc.NdefMessage;
-import android.nfc.NdefRecord;
-import android.nfc.NfcAdapter;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.WindowManager;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.example.android.nfc.record.ParsedNdefRecord;
-
-import java.util.List;
-
-/**
- * An {@link Activity} which handles a broadcast of a new tag that the device
- * just discovered.
- */
-public class TagViewer extends Activity {
-
-    static final String TAG = "ViewTag";
-
-    /**
-     * This activity will finish itself in this amount of time if the user
-     * doesn't do anything.
-     */
-    static final int ACTIVITY_TIMEOUT_MS = 1 * 1000;
-
-    TextView mTitle;
-
-    LinearLayout mTagContent;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.tag_viewer);
-        mTagContent = (LinearLayout) findViewById(R.id.list);
-        mTitle = (TextView) findViewById(R.id.title);
-        resolveIntent(getIntent());
-    }
-
-    void resolveIntent(Intent intent) {
-        // Parse the intent
-        String action = intent.getAction();
-        if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
-            // When a tag is discovered we send it to the service to be save. We
-            // include a PendingIntent for the service to call back onto. This
-            // will cause this activity to be restarted with onNewIntent(). At
-            // that time we read it from the database and view it.
-            Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
-            NdefMessage[] msgs;
-            if (rawMsgs != null) {
-                msgs = new NdefMessage[rawMsgs.length];
-                for (int i = 0; i < rawMsgs.length; i++) {
-                    msgs[i] = (NdefMessage) rawMsgs[i];
-                }
-            } else {
-                // Unknown tag type
-                byte[] empty = new byte[] {};
-                NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty);
-                NdefMessage msg = new NdefMessage(new NdefRecord[] {record});
-                msgs = new NdefMessage[] {msg};
-            }
-            // Setup the views
-            setTitle(R.string.title_scanned_tag);
-            buildTagViews(msgs);
-        } else {
-            Log.e(TAG, "Unknown intent " + intent);
-            finish();
-            return;
-        }
-    }
-
-    void buildTagViews(NdefMessage[] msgs) {
-        if (msgs == null || msgs.length == 0) {
-            return;
-        }
-        LayoutInflater inflater = LayoutInflater.from(this);
-        LinearLayout content = mTagContent;
-        // Clear out any old views in the content area, for example if you scan
-        // two tags in a row.
-        content.removeAllViews();
-        // Parse the first message in the list
-        // Build views for all of the sub records
-        List<ParsedNdefRecord> records = NdefMessageParser.parse(msgs[0]);
-        final int size = records.size();
-        for (int i = 0; i < size; i++) {
-            ParsedNdefRecord record = records.get(i);
-            content.addView(record.getView(this, inflater, content, i));
-            inflater.inflate(R.layout.tag_divider, content, true);
-        }
-    }
-
-    @Override
-    public void onNewIntent(Intent intent) {
-        setIntent(intent);
-        resolveIntent(intent);
-    }
-
-    @Override
-    public void setTitle(CharSequence title) {
-        mTitle.setText(title);
-    }
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/record/ParsedNdefRecord.java b/samples/NFCDemo/src/com/example/android/nfc/record/ParsedNdefRecord.java
deleted file mode 100644
index b706ae8..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/record/ParsedNdefRecord.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-
-package com.example.android.nfc.record;
-
-import android.app.Activity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-
-public interface ParsedNdefRecord {
-
-    /**
-     * Returns a view to display this record.
-     */
-    public View getView(Activity activity, LayoutInflater inflater, ViewGroup parent,
-            int offset);
-
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/record/SmartPoster.java b/samples/NFCDemo/src/com/example/android/nfc/record/SmartPoster.java
deleted file mode 100644
index f86d3ef..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/record/SmartPoster.java
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * 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.
- */
-package com.example.android.nfc.record;
-
-import android.app.Activity;
-import android.nfc.FormatException;
-import android.nfc.NdefMessage;
-import android.nfc.NdefRecord;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
-import android.widget.LinearLayout;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-
-import com.example.android.nfc.NdefMessageParser;
-import com.example.android.nfc.R;
-
-import java.util.Arrays;
-import java.util.NoSuchElementException;
-
-/**
- * A representation of an NFC Forum "Smart Poster".
- */
-public class SmartPoster implements ParsedNdefRecord {
-
-    /**
-     * NFC Forum Smart Poster Record Type Definition section 3.2.1.
-     *
-     * "The Title record for the service (there can be many of these in
-     * different languages, but a language MUST NOT be repeated). This record is
-     * optional."
-     */
-    private final TextRecord mTitleRecord;
-
-    /**
-     * NFC Forum Smart Poster Record Type Definition section 3.2.1.
-     *
-     * "The URI record. This is the core of the Smart Poster, and all other
-     * records are just metadata about this record. There MUST be one URI record
-     * and there MUST NOT be more than one."
-     */
-    private final UriRecord mUriRecord;
-
-    /**
-     * NFC Forum Smart Poster Record Type Definition section 3.2.1.
-     *
-     * "The Action record. This record describes how the service should be
-     * treated. For example, the action may indicate that the device should save
-     * the URI as a bookmark or open a browser. The Action record is optional.
-     * If it does not exist, the device may decide what to do with the service.
-     * If the action record exists, it should be treated as a strong suggestion;
-     * the UI designer may ignore it, but doing so will induce a different user
-     * experience from device to device."
-     */
-    private final RecommendedAction mAction;
-
-    /**
-     * NFC Forum Smart Poster Record Type Definition section 3.2.1.
-     *
-     * "The Type record. If the URI references an external entity (e.g., via a
-     * URL), the Type record may be used to declare the MIME type of the entity.
-     * This can be used to tell the mobile device what kind of an object it can
-     * expect before it opens the connection. The Type record is optional."
-     */
-    private final String mType;
-
-    private SmartPoster(UriRecord uri, TextRecord title, RecommendedAction action, String type) {
-        mUriRecord = Preconditions.checkNotNull(uri);
-        mTitleRecord = title;
-        mAction = Preconditions.checkNotNull(action);
-        mType = type;
-    }
-
-    public UriRecord getUriRecord() {
-        return mUriRecord;
-    }
-
-    /**
-     * Returns the title of the smart poster. This may be {@code null}.
-     */
-    public TextRecord getTitle() {
-        return mTitleRecord;
-    }
-
-    public static SmartPoster parse(NdefRecord record) {
-        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN);
-        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_SMART_POSTER));
-        try {
-            NdefMessage subRecords = new NdefMessage(record.getPayload());
-            return parse(subRecords.getRecords());
-        } catch (FormatException e) {
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    public static SmartPoster parse(NdefRecord[] recordsRaw) {
-        try {
-            Iterable<ParsedNdefRecord> records = NdefMessageParser.getRecords(recordsRaw);
-            UriRecord uri = Iterables.getOnlyElement(Iterables.filter(records, UriRecord.class));
-            TextRecord title = getFirstIfExists(records, TextRecord.class);
-            RecommendedAction action = parseRecommendedAction(recordsRaw);
-            String type = parseType(recordsRaw);
-            return new SmartPoster(uri, title, action, type);
-        } catch (NoSuchElementException e) {
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    public static boolean isPoster(NdefRecord record) {
-        try {
-            parse(record);
-            return true;
-        } catch (IllegalArgumentException e) {
-            return false;
-        }
-    }
-
-    public View getView(Activity activity, LayoutInflater inflater, ViewGroup parent, int offset) {
-        if (mTitleRecord != null) {
-            // Build a container to hold the title and the URI
-            LinearLayout container = new LinearLayout(activity);
-            container.setOrientation(LinearLayout.VERTICAL);
-            container.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
-                LayoutParams.WRAP_CONTENT));
-            container.addView(mTitleRecord.getView(activity, inflater, container, offset));
-            inflater.inflate(R.layout.tag_divider, container);
-            container.addView(mUriRecord.getView(activity, inflater, container, offset));
-            return container;
-        } else {
-            // Just a URI, return a view for it directly
-            return mUriRecord.getView(activity, inflater, parent, offset);
-        }
-    }
-
-    /**
-     * Returns the first element of {@code elements} which is an instance of
-     * {@code type}, or {@code null} if no such element exists.
-     */
-    private static <T> T getFirstIfExists(Iterable<?> elements, Class<T> type) {
-        Iterable<T> filtered = Iterables.filter(elements, type);
-        T instance = null;
-        if (!Iterables.isEmpty(filtered)) {
-            instance = Iterables.get(filtered, 0);
-        }
-        return instance;
-    }
-
-    private enum RecommendedAction {
-        UNKNOWN((byte) -1), DO_ACTION((byte) 0), SAVE_FOR_LATER((byte) 1), OPEN_FOR_EDITING(
-            (byte) 2);
-
-        private static final ImmutableMap<Byte, RecommendedAction> LOOKUP;
-        static {
-            ImmutableMap.Builder<Byte, RecommendedAction> builder = ImmutableMap.builder();
-            for (RecommendedAction action : RecommendedAction.values()) {
-                builder.put(action.getByte(), action);
-            }
-            LOOKUP = builder.build();
-        }
-
-        private final byte mAction;
-
-        private RecommendedAction(byte val) {
-            this.mAction = val;
-        }
-
-        private byte getByte() {
-            return mAction;
-        }
-    }
-
-    private static NdefRecord getByType(byte[] type, NdefRecord[] records) {
-        for (NdefRecord record : records) {
-            if (Arrays.equals(type, record.getType())) {
-                return record;
-            }
-        }
-        return null;
-    }
-
-    private static final byte[] ACTION_RECORD_TYPE = new byte[] {'a', 'c', 't'};
-
-    private static RecommendedAction parseRecommendedAction(NdefRecord[] records) {
-        NdefRecord record = getByType(ACTION_RECORD_TYPE, records);
-        if (record == null) {
-            return RecommendedAction.UNKNOWN;
-        }
-        byte action = record.getPayload()[0];
-        if (RecommendedAction.LOOKUP.containsKey(action)) {
-            return RecommendedAction.LOOKUP.get(action);
-        }
-        return RecommendedAction.UNKNOWN;
-    }
-
-    private static final byte[] TYPE_TYPE = new byte[] {'t'};
-
-    private static String parseType(NdefRecord[] records) {
-        NdefRecord type = getByType(TYPE_TYPE, records);
-        if (type == null) {
-            return null;
-        }
-        return new String(type.getPayload(), Charsets.UTF_8);
-    }
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/record/TextRecord.java b/samples/NFCDemo/src/com/example/android/nfc/record/TextRecord.java
deleted file mode 100644
index 8041cca..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/record/TextRecord.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * 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.
- */
-package com.example.android.nfc.record;
-
-import android.app.Activity;
-import android.nfc.NdefRecord;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.google.common.base.Preconditions;
-
-import com.example.android.nfc.R;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-
-/**
- * An NFC Text Record
- */
-public class TextRecord implements ParsedNdefRecord {
-
-    /** ISO/IANA language code */
-    private final String mLanguageCode;
-
-    private final String mText;
-
-    private TextRecord(String languageCode, String text) {
-        mLanguageCode = Preconditions.checkNotNull(languageCode);
-        mText = Preconditions.checkNotNull(text);
-    }
-
-    public View getView(Activity activity, LayoutInflater inflater, ViewGroup parent, int offset) {
-        TextView text = (TextView) inflater.inflate(R.layout.tag_text, parent, false);
-        text.setText(mText);
-        return text;
-    }
-
-    public String getText() {
-        return mText;
-    }
-
-    /**
-     * Returns the ISO/IANA language code associated with this text element.
-     */
-    public String getLanguageCode() {
-        return mLanguageCode;
-    }
-
-    // TODO: deal with text fields which span multiple NdefRecords
-    public static TextRecord parse(NdefRecord record) {
-        Preconditions.checkArgument(record.getTnf() == NdefRecord.TNF_WELL_KNOWN);
-        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_TEXT));
-        try {
-            byte[] payload = record.getPayload();
-            /*
-             * payload[0] contains the "Status Byte Encodings" field, per the
-             * NFC Forum "Text Record Type Definition" section 3.2.1.
-             *
-             * bit7 is the Text Encoding Field.
-             *
-             * if (Bit_7 == 0): The text is encoded in UTF-8 if (Bit_7 == 1):
-             * The text is encoded in UTF16
-             *
-             * Bit_6 is reserved for future use and must be set to zero.
-             *
-             * Bits 5 to 0 are the length of the IANA language code.
-             */
-            String textEncoding = ((payload[0] & 0200) == 0) ? "UTF-8" : "UTF-16";
-            int languageCodeLength = payload[0] & 0077;
-            String languageCode = new String(payload, 1, languageCodeLength, "US-ASCII");
-            String text =
-                new String(payload, languageCodeLength + 1,
-                    payload.length - languageCodeLength - 1, textEncoding);
-            return new TextRecord(languageCode, text);
-        } catch (UnsupportedEncodingException e) {
-            // should never happen unless we get a malformed tag.
-            throw new IllegalArgumentException(e);
-        }
-    }
-
-    public static boolean isText(NdefRecord record) {
-        try {
-            parse(record);
-            return true;
-        } catch (IllegalArgumentException e) {
-            return false;
-        }
-    }
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/record/UriRecord.java b/samples/NFCDemo/src/com/example/android/nfc/record/UriRecord.java
deleted file mode 100644
index 452ebb2..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/record/UriRecord.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * 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.
- */
-package com.example.android.nfc.record;
-
-import android.app.Activity;
-import android.net.Uri;
-import android.nfc.NdefRecord;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.BiMap;
-import com.google.common.collect.ImmutableBiMap;
-import com.google.common.primitives.Bytes;
-
-import com.example.android.nfc.R;
-
-import java.nio.charset.Charset;
-import java.util.Arrays;
-
-/**
- * A parsed record containing a Uri.
- */
-public class UriRecord implements ParsedNdefRecord {
-
-    private static final String TAG = "UriRecord";
-
-    public static final String RECORD_TYPE = "UriRecord";
-
-    /**
-     * NFC Forum "URI Record Type Definition"
-     *
-     * This is a mapping of "URI Identifier Codes" to URI string prefixes,
-     * per section 3.2.2 of the NFC Forum URI Record Type Definition document.
-     */
-    private static final BiMap<Byte, String> URI_PREFIX_MAP = ImmutableBiMap.<Byte, String>builder()
-            .put((byte) 0x00, "")
-            .put((byte) 0x01, "http://www.")
-            .put((byte) 0x02, "https://www.")
-            .put((byte) 0x03, "http://")
-            .put((byte) 0x04, "https://")
-            .put((byte) 0x05, "tel:")
-            .put((byte) 0x06, "mailto:")
-            .put((byte) 0x07, "ftp://anonymous:anonymous@")
-            .put((byte) 0x08, "ftp://ftp.")
-            .put((byte) 0x09, "ftps://")
-            .put((byte) 0x0A, "sftp://")
-            .put((byte) 0x0B, "smb://")
-            .put((byte) 0x0C, "nfs://")
-            .put((byte) 0x0D, "ftp://")
-            .put((byte) 0x0E, "dav://")
-            .put((byte) 0x0F, "news:")
-            .put((byte) 0x10, "telnet://")
-            .put((byte) 0x11, "imap:")
-            .put((byte) 0x12, "rtsp://")
-            .put((byte) 0x13, "urn:")
-            .put((byte) 0x14, "pop:")
-            .put((byte) 0x15, "sip:")
-            .put((byte) 0x16, "sips:")
-            .put((byte) 0x17, "tftp:")
-            .put((byte) 0x18, "btspp://")
-            .put((byte) 0x19, "btl2cap://")
-            .put((byte) 0x1A, "btgoep://")
-            .put((byte) 0x1B, "tcpobex://")
-            .put((byte) 0x1C, "irdaobex://")
-            .put((byte) 0x1D, "file://")
-            .put((byte) 0x1E, "urn:epc:id:")
-            .put((byte) 0x1F, "urn:epc:tag:")
-            .put((byte) 0x20, "urn:epc:pat:")
-            .put((byte) 0x21, "urn:epc:raw:")
-            .put((byte) 0x22, "urn:epc:")
-            .put((byte) 0x23, "urn:nfc:")
-            .build();
-
-    private final Uri mUri;
-
-    private UriRecord(Uri uri) {
-        this.mUri = Preconditions.checkNotNull(uri);
-    }
-
-    public View getView(Activity activity, LayoutInflater inflater, ViewGroup parent, int offset) {
-        TextView text = (TextView) inflater.inflate(R.layout.tag_text, parent, false);
-        text.setText(mUri.toString());
-        return text;
-    }
-
-    public Uri getUri() {
-        return mUri;
-    }
-
-    /**
-     * Convert {@link android.nfc.NdefRecord} into a {@link android.net.Uri}.
-     * This will handle both TNF_WELL_KNOWN / RTD_URI and TNF_ABSOLUTE_URI.
-     *
-     * @throws IllegalArgumentException if the NdefRecord is not a record
-     *         containing a URI.
-     */
-    public static UriRecord parse(NdefRecord record) {
-        short tnf = record.getTnf();
-        if (tnf == NdefRecord.TNF_WELL_KNOWN) {
-            return parseWellKnown(record);
-        } else if (tnf == NdefRecord.TNF_ABSOLUTE_URI) {
-            return parseAbsolute(record);
-        }
-        throw new IllegalArgumentException("Unknown TNF " + tnf);
-    }
-
-    /** Parse and absolute URI record */
-    private static UriRecord parseAbsolute(NdefRecord record) {
-        byte[] payload = record.getPayload();
-        Uri uri = Uri.parse(new String(payload, Charset.forName("UTF-8")));
-        return new UriRecord(uri);
-    }
-
-    /** Parse an well known URI record */
-    private static UriRecord parseWellKnown(NdefRecord record) {
-        Preconditions.checkArgument(Arrays.equals(record.getType(), NdefRecord.RTD_URI));
-        byte[] payload = record.getPayload();
-        /*
-         * payload[0] contains the URI Identifier Code, per the
-         * NFC Forum "URI Record Type Definition" section 3.2.2.
-         *
-         * payload[1]...payload[payload.length - 1] contains the rest of
-         * the URI.
-         */
-        String prefix = URI_PREFIX_MAP.get(payload[0]);
-        byte[] fullUri =
-            Bytes.concat(prefix.getBytes(Charset.forName("UTF-8")), Arrays.copyOfRange(payload, 1,
-                payload.length));
-        Uri uri = Uri.parse(new String(fullUri, Charset.forName("UTF-8")));
-        return new UriRecord(uri);
-    }
-
-    public static boolean isUri(NdefRecord record) {
-        try {
-            parse(record);
-            return true;
-        } catch (IllegalArgumentException e) {
-            return false;
-        }
-    }
-
-    private static final byte[] EMPTY = new byte[0];
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/simulator/FakeTagsActivity.java b/samples/NFCDemo/src/com/example/android/nfc/simulator/FakeTagsActivity.java
deleted file mode 100644
index 313bab4..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/simulator/FakeTagsActivity.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * 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
- */
-package com.example.android.nfc.simulator;
-
-import android.app.ListActivity;
-import android.content.Intent;
-import android.nfc.NdefMessage;
-import android.nfc.NdefRecord;
-import android.nfc.NfcAdapter;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-import com.google.common.base.Charsets;
-import com.google.common.base.Preconditions;
-import com.google.common.primitives.Bytes;
-
-import java.nio.charset.Charset;
-import java.util.Locale;
-
-/**
- * A activity that launches tags as if they had been scanned.
- */
-public class FakeTagsActivity extends ListActivity {
-
-    static final String TAG = "FakeTagsActivity";
-
-    static final byte[] UID = new byte[] {0x05, 0x00, 0x03, 0x08};
-
-    ArrayAdapter<TagDescription> mAdapter;
-
-    public static NdefRecord newTextRecord(String text, Locale locale, boolean encodeInUtf8) {
-        Preconditions.checkNotNull(text);
-        Preconditions.checkNotNull(locale);
-        final byte[] langBytes = locale.getLanguage().getBytes(Charsets.US_ASCII);
-        final Charset utfEncoding = encodeInUtf8 ? Charsets.UTF_8 : Charset.forName("UTF-16");
-        final byte[] textBytes = text.getBytes(utfEncoding);
-        final int utfBit = encodeInUtf8 ? 0 : (1 << 7);
-        final char status = (char) (utfBit + langBytes.length);
-        final byte[] data = Bytes.concat(new byte[] {(byte) status}, langBytes, textBytes);
-        return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data);
-    }
-
-    public static NdefRecord newMimeRecord(String type, byte[] data) {
-        Preconditions.checkNotNull(type);
-        Preconditions.checkNotNull(data);
-        final byte[] typeBytes = type.getBytes(Charsets.US_ASCII);
-        return new NdefRecord(NdefRecord.TNF_MIME_MEDIA, typeBytes, new byte[0], data);
-    }
-
-    static final class TagDescription {
-
-        public String title;
-
-        public NdefMessage[] msgs;
-
-        public TagDescription(String title, byte[] bytes) {
-            this.title = title;
-            try {
-                msgs = new NdefMessage[] {new NdefMessage(bytes)};
-            } catch (final Exception e) {
-                throw new RuntimeException("Failed to create tag description", e);
-            }
-        }
-
-        @Override
-        public String toString() {
-            return title;
-        }
-    }
-
-    @Override
-    public void onCreate(Bundle savedState) {
-        super.onCreate(savedState);
-        final ArrayAdapter<TagDescription> adapter = new ArrayAdapter<TagDescription>(
-            this, android.R.layout.simple_list_item_1, android.R.id.text1);
-        adapter.add(
-            new TagDescription("Broadcast NFC Text Tag", MockNdefMessages.ENGLISH_PLAIN_TEXT));
-        adapter.add(new TagDescription(
-            "Broadcast NFC SmartPoster URL & text", MockNdefMessages.SMART_POSTER_URL_AND_TEXT));
-        adapter.add(new TagDescription(
-            "Broadcast NFC SmartPoster URL", MockNdefMessages.SMART_POSTER_URL_NO_TEXT));
-        setListAdapter(adapter);
-        mAdapter = adapter;
-    }
-
-    @Override
-    public void onListItemClick(ListView l, View v, int position, long id) {
-        final TagDescription description = mAdapter.getItem(position);
-        final Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
-        intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, description.msgs);
-        startActivity(intent);
-    }
-}
diff --git a/samples/NFCDemo/src/com/example/android/nfc/simulator/MockNdefMessages.java b/samples/NFCDemo/src/com/example/android/nfc/simulator/MockNdefMessages.java
deleted file mode 100644
index 52a122f..0000000
--- a/samples/NFCDemo/src/com/example/android/nfc/simulator/MockNdefMessages.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.
- */
-package com.example.android.nfc.simulator;
-
-/**
- * This class provides a list of fake NFC Ndef format Tags.
- */
-public class MockNdefMessages {
-
-    /**
-     * A Smart Poster containing a URL and no text.
-     */
-    public static final byte[] SMART_POSTER_URL_NO_TEXT =
-        new byte[] {(byte) 0xd1, (byte) 0x02, (byte) 0x0f, (byte) 0x53, (byte) 0x70, (byte) 0xd1,
-            (byte) 0x01, (byte) 0x0b, (byte) 0x55, (byte) 0x01, (byte) 0x67, (byte) 0x6f,
-            (byte) 0x6f, (byte) 0x67, (byte) 0x6c, (byte) 0x65, (byte) 0x2e, (byte) 0x63,
-            (byte) 0x6f, (byte) 0x6d};
-
-    /**
-     * A plain text tag in english.
-     */
-    public static final byte[] ENGLISH_PLAIN_TEXT =
-        new byte[] {(byte) 0xd1, (byte) 0x01, (byte) 0x1c, (byte) 0x54, (byte) 0x02, (byte) 0x65,
-            (byte) 0x6e, (byte) 0x53, (byte) 0x6f, (byte) 0x6d, (byte) 0x65, (byte) 0x20,
-            (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x64, (byte) 0x6f, (byte) 0x6d,
-            (byte) 0x20, (byte) 0x65, (byte) 0x6e, (byte) 0x67, (byte) 0x6c, (byte) 0x69,
-            (byte) 0x73, (byte) 0x68, (byte) 0x20, (byte) 0x74, (byte) 0x65, (byte) 0x78,
-            (byte) 0x74, (byte) 0x2e};
-
-    /**
-     * Smart Poster containing a URL and Text.
-     */
-    public static final byte[] SMART_POSTER_URL_AND_TEXT =
-        new byte[] {(byte) 0xd1, (byte) 0x02, (byte) 0x1c, (byte) 0x53, (byte) 0x70, (byte) 0x91,
-            (byte) 0x01, (byte) 0x09, (byte) 0x54, (byte) 0x02, (byte) 0x65, (byte) 0x6e,
-            (byte) 0x47, (byte) 0x6f, (byte) 0x6f, (byte) 0x67, (byte) 0x6c, (byte) 0x65,
-            (byte) 0x51, (byte) 0x01, (byte) 0x0b, (byte) 0x55, (byte) 0x01, (byte) 0x67,
-            (byte) 0x6f, (byte) 0x6f, (byte) 0x67, (byte) 0x6c, (byte) 0x65, (byte) 0x2e,
-            (byte) 0x63, (byte) 0x6f, (byte) 0x6d};
-
-    /**
-     * All the mock Ndef tags.
-     */
-    public static final byte[][] ALL_MOCK_MESSAGES =
-        new byte[][] {SMART_POSTER_URL_NO_TEXT, ENGLISH_PLAIN_TEXT, SMART_POSTER_URL_AND_TEXT};
-}
diff --git a/samples/RenderScript/Balls/AndroidManifest.xml b/samples/RenderScript/Balls/AndroidManifest.xml
deleted file mode 100644
index 80e6b39..0000000
--- a/samples/RenderScript/Balls/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.rs.balls">
-    <uses-sdk android:minSdkVersion="14" />
-    <application 
-        android:label="RsBalls"
-        android:icon="@drawable/test_pattern">
-        <activity android:name="Balls"
-                  android:screenOrientation="landscape">
-            <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/RenderScript/Balls/_index.html b/samples/RenderScript/Balls/_index.html
deleted file mode 100644
index 8760485..0000000
--- a/samples/RenderScript/Balls/_index.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A brute force physics simulation that renders many balls onto the screen and moves them according to user touch and gravity.</p>
\ No newline at end of file
diff --git a/samples/RenderScript/Balls/res/drawable/flares.png b/samples/RenderScript/Balls/res/drawable/flares.png
deleted file mode 100644
index 3a5c970..0000000
--- a/samples/RenderScript/Balls/res/drawable/flares.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/Balls/res/drawable/test_pattern.png b/samples/RenderScript/Balls/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/samples/RenderScript/Balls/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/Balls/src/com/example/android/rs/balls/Balls.java b/samples/RenderScript/Balls/src/com/example/android/rs/balls/Balls.java
deleted file mode 100644
index 2c6558e..0000000
--- a/samples/RenderScript/Balls/src/com/example/android/rs/balls/Balls.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.balls;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.view.View;
-import android.hardware.Sensor;
-import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener;
-import android.hardware.SensorManager;
-
-public class Balls extends Activity implements SensorEventListener {
-    //EventListener mListener = new EventListener();
-
-    private static final String LOG_TAG = "libRS_jni";
-    private static final boolean DEBUG  = false;
-    private static final boolean LOG_ENABLED = false;
-
-    private BallsView mView;
-    private SensorManager mSensorManager;
-
-    // get the current looper (from your Activity UI thread for instance
-
-
-    public void onSensorChanged(SensorEvent event) {
-        //android.util.Log.d("rs", "sensor: " + event.sensor + ", x: " + event.values[0] + ", y: " + event.values[1] + ", z: " + event.values[2]);
-        synchronized (this) {
-            if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
-                if(mView != null) {
-                    mView.setAccel(event.values[0], event.values[1], event.values[2]);
-                }
-            }
-        }
-    }
-
-    public void onAccuracyChanged(Sensor sensor, int accuracy) {
-    }
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
-
-        // Create our Preview view and set it as the content of our
-        // Activity
-        mView = new BallsView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        mSensorManager.registerListener(this,
-                                        mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
-                                        SensorManager.SENSOR_DELAY_FASTEST);
-
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onResume();
-        mView.resume();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mView.pause();
-        onStop();
-    }
-
-    @Override
-    protected void onStop() {
-        mSensorManager.unregisterListener(this);
-        super.onStop();
-    }
-
-    static void log(String message) {
-        if (LOG_ENABLED) {
-            Log.v(LOG_TAG, message);
-        }
-    }
-
-
-}
-
diff --git a/samples/RenderScript/Balls/src/com/example/android/rs/balls/BallsRS.java b/samples/RenderScript/Balls/src/com/example/android/rs/balls/BallsRS.java
deleted file mode 100644
index 8cab9b8..0000000
--- a/samples/RenderScript/Balls/src/com/example/android/rs/balls/BallsRS.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.balls;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-public class BallsRS {
-    public static final int PART_COUNT = 900;
-
-    public BallsRS() {
-    }
-
-    private Resources mRes;
-    private RenderScriptGL mRS;
-    private ScriptC_balls mScript;
-    private ScriptC_ball_physics mPhysicsScript;
-    private ProgramFragment mPFLines;
-    private ProgramFragment mPFPoints;
-    private ProgramVertex mPV;
-    private ScriptField_Point mPoints;
-    private ScriptField_VpConsts mVpConsts;
-
-    void updateProjectionMatrices() {
-        mVpConsts = new ScriptField_VpConsts(mRS, 1,
-                                             Allocation.USAGE_SCRIPT |
-                                             Allocation.USAGE_GRAPHICS_CONSTANTS);
-        ScriptField_VpConsts.Item i = new ScriptField_VpConsts.Item();
-        Matrix4f mvp = new Matrix4f();
-        mvp.loadOrtho(0, mRS.getWidth(), mRS.getHeight(), 0, -1, 1);
-        i.MVP = mvp;
-        mVpConsts.set(i, 0, true);
-    }
-
-    private void createProgramVertex() {
-        updateProjectionMatrices();
-
-        ProgramVertex.Builder sb = new ProgramVertex.Builder(mRS);
-        String t =  "varying vec4 varColor;\n" +
-                    "void main() {\n" +
-                    "  vec4 pos = vec4(0.0, 0.0, 0.0, 1.0);\n" +
-                    "  pos.xy = ATTRIB_position;\n" +
-                    "  gl_Position = UNI_MVP * pos;\n" +
-                    "  varColor = vec4(1.0, 1.0, 1.0, 1.0);\n" +
-                    "  gl_PointSize = ATTRIB_size;\n" +
-                    "}\n";
-        sb.setShader(t);
-        sb.addConstant(mVpConsts.getType());
-        sb.addInput(mPoints.getElement());
-        ProgramVertex pvs = sb.create();
-        pvs.bindConstants(mVpConsts.getAllocation(), 0);
-        mRS.bindProgramVertex(pvs);
-    }
-
-    private Allocation loadTexture(int id) {
-        final Allocation allocation =
-            Allocation.createFromBitmapResource(mRS, mRes,
-                id, Allocation.MipmapControl.MIPMAP_NONE,
-                Allocation.USAGE_GRAPHICS_TEXTURE);
-        return allocation;
-    }
-
-    ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) {
-        ProgramStore.Builder builder = new ProgramStore.Builder(rs);
-        builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
-        builder.setBlendFunc(ProgramStore.BlendSrcFunc.ONE, ProgramStore.BlendDstFunc.ONE);
-        builder.setDitherEnabled(false);
-        builder.setDepthMaskEnabled(false);
-        return builder.create();
-    }
-
-    public void init(RenderScriptGL rs, Resources res, int width, int height) {
-        mRS = rs;
-        mRes = res;
-
-        ProgramFragmentFixedFunction.Builder pfb = new ProgramFragmentFixedFunction.Builder(rs);
-        pfb.setPointSpriteTexCoordinateReplacement(true);
-        pfb.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.MODULATE,
-                           ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
-        pfb.setVaryingColor(true);
-        mPFPoints = pfb.create();
-
-        pfb = new ProgramFragmentFixedFunction.Builder(rs);
-        pfb.setVaryingColor(true);
-        mPFLines = pfb.create();
-
-        android.util.Log.e("rs", "Load texture");
-        mPFPoints.bindTexture(loadTexture(R.drawable.flares), 0);
-
-        mPoints = new ScriptField_Point(mRS, PART_COUNT, Allocation.USAGE_SCRIPT);
-
-        Mesh.AllocationBuilder smb = new Mesh.AllocationBuilder(mRS);
-        smb.addVertexAllocation(mPoints.getAllocation());
-        smb.addIndexSetType(Mesh.Primitive.POINT);
-        Mesh smP = smb.create();
-
-        mPhysicsScript = new ScriptC_ball_physics(mRS, mRes, R.raw.ball_physics);
-
-        mScript = new ScriptC_balls(mRS, mRes, R.raw.balls);
-        mScript.set_partMesh(smP);
-        mScript.set_physics_script(mPhysicsScript);
-        mScript.bind_point(mPoints);
-        mScript.bind_balls1(new ScriptField_Ball(mRS, PART_COUNT, Allocation.USAGE_SCRIPT));
-        mScript.bind_balls2(new ScriptField_Ball(mRS, PART_COUNT, Allocation.USAGE_SCRIPT));
-
-        mScript.set_gPFLines(mPFLines);
-        mScript.set_gPFPoints(mPFPoints);
-        createProgramVertex();
-
-        mRS.bindProgramStore(BLEND_ADD_DEPTH_NONE(mRS));
-
-        mPhysicsScript.set_gMinPos(new Float2(5, 5));
-        mPhysicsScript.set_gMaxPos(new Float2(width - 5, height - 5));
-
-        mScript.invoke_initParts(width, height);
-
-        mRS.bindRootScript(mScript);
-    }
-
-    public void newTouchPosition(float x, float y, float pressure, int id) {
-        mPhysicsScript.invoke_touch(x, y, pressure, id);
-    }
-
-    public void setAccel(float x, float y) {
-        mPhysicsScript.set_gGravityVector(new Float2(x, y));
-    }
-
-}
diff --git a/samples/RenderScript/Balls/src/com/example/android/rs/balls/BallsView.java b/samples/RenderScript/Balls/src/com/example/android/rs/balls/BallsView.java
deleted file mode 100644
index b3b3756..0000000
--- a/samples/RenderScript/Balls/src/com/example/android/rs/balls/BallsView.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.balls;
-
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-public class BallsView extends RSSurfaceView {
-
-    public BallsView(Context context) {
-        super(context);
-        //setFocusable(true);
-    }
-
-    private RenderScriptGL mRS;
-    private BallsRS mRender;
-
-    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
-        super.surfaceChanged(holder, format, w, h);
-        if (mRS == null) {
-            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            mRS = createRenderScriptGL(sc);
-            mRS.setSurface(holder, w, h);
-            mRender = new BallsRS();
-            mRender.init(mRS, getResources(), w, h);
-        }
-        mRender.updateProjectionMatrices();
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        if(mRS != null) {
-            mRS = null;
-            destroyRenderScriptGL();
-        }
-    }
-
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev)
-    {
-        int act = ev.getActionMasked();
-        if (act == ev.ACTION_UP) {
-            mRender.newTouchPosition(0, 0, 0, ev.getPointerId(0));
-            return false;
-        } else if (act == MotionEvent.ACTION_POINTER_UP) {
-            // only one pointer going up, we can get the index like this
-            int pointerIndex = ev.getActionIndex();
-            int pointerId = ev.getPointerId(pointerIndex);
-            mRender.newTouchPosition(0, 0, 0, pointerId);
-            return false;
-        }
-        int count = ev.getHistorySize();
-        int pcount = ev.getPointerCount();
-
-        for (int p=0; p < pcount; p++) {
-            int id = ev.getPointerId(p);
-            mRender.newTouchPosition(ev.getX(p),
-                                     ev.getY(p),
-                                     ev.getPressure(p),
-                                     id);
-
-            for (int i=0; i < count; i++) {
-                mRender.newTouchPosition(ev.getHistoricalX(p, i),
-                                         ev.getHistoricalY(p, i),
-                                         ev.getHistoricalPressure(p, i),
-                                         id);
-            }
-        }
-        return true;
-    }
-
-    void setAccel(float x, float y, float z) {
-        if (mRender == null) {
-            return;
-        }
-        mRender.setAccel(x, -y);
-    }
-
-}
-
-
diff --git a/samples/RenderScript/Balls/src/com/example/android/rs/balls/ball_physics.rs b/samples/RenderScript/Balls/src/com/example/android/rs/balls/ball_physics.rs
deleted file mode 100644
index ee6ab1d..0000000
--- a/samples/RenderScript/Balls/src/com/example/android/rs/balls/ball_physics.rs
+++ /dev/null
@@ -1,146 +0,0 @@
-#pragma version(1)
-#pragma rs java_package_name(com.example.android.rs.balls)
-
-#include "balls.rsh"
-
-float2 gGravityVector = {0.f, 9.8f};
-
-float2 gMinPos = {0.f, 0.f};
-float2 gMaxPos = {1280.f, 700.f};
-
-static float2 touchPos[10];
-static float touchPressure[10];
-
-void touch(float x, float y, float pressure, int id) {
-    if (id >= 10) {
-        return;
-    }
-
-    touchPos[id].x = x;
-    touchPos[id].y = y;
-    touchPressure[id] = pressure;
-}
-
-void root(const Ball_t *ballIn, Ball_t *ballOut, const BallControl_t *ctl, uint32_t x) {
-    float2 fv = {0, 0};
-    float2 pos = ballIn->position;
-
-    int arcID = -1;
-    float arcInvStr = 100000;
-
-    const Ball_t * bPtr = rsGetElementAt(ctl->ain, 0);
-    for (uint32_t xin = 0; xin < ctl->dimX; xin++) {
-        float2 vec = bPtr[xin].position - pos;
-        float2 vec2 = vec * vec;
-        float len2 = vec2.x + vec2.y;
-
-        if (len2 < 10000) {
-            //float minDist = ballIn->size + bPtr[xin].size;
-            float forceScale = ballIn->size * bPtr[xin].size;
-            forceScale *= forceScale;
-
-            if (len2 > 16 /* (minDist*minDist)*/)  {
-                // Repulsion
-                float len = sqrt(len2);
-                fv -= (vec / (len * len * len)) * 20000.f * forceScale;
-            } else {
-                if (len2 < 1) {
-                    if (xin == x) {
-                        continue;
-                    }
-                    ballOut->delta = 0.f;
-                    ballOut->position = ballIn->position;
-                    if (xin > x) {
-                        ballOut->position.x += 1.f;
-                    } else {
-                        ballOut->position.x -= 1.f;
-                    }
-                    //ballOut->color.rgb = 1.f;
-                    //ballOut->arcID = -1;
-                    //ballOut->arcStr = 0;
-                    return;
-                }
-                // Collision
-                float2 axis = normalize(vec);
-                float e1 = dot(axis, ballIn->delta);
-                float e2 = dot(axis, bPtr[xin].delta);
-                float e = (e1 - e2) * 0.45f;
-                if (e1 > 0) {
-                    fv -= axis * e;
-                } else {
-                    fv += axis * e;
-                }
-            }
-        }
-    }
-
-    fv /= ballIn->size * ballIn->size * ballIn->size;
-    fv -= gGravityVector * 4.f;
-    fv *= ctl->dt;
-
-    for (int i=0; i < 10; i++) {
-        if (touchPressure[i] > 0.1f) {
-            float2 vec = touchPos[i] - ballIn->position;
-            float2 vec2 = vec * vec;
-            float len2 = max(2.f, vec2.x + vec2.y);
-            fv -= (vec / len2) * touchPressure[i] * 300.f;
-        }
-    }
-
-    ballOut->delta = (ballIn->delta * (1.f - 0.004f)) + fv;
-    ballOut->position = ballIn->position + (ballOut->delta * ctl->dt);
-
-    const float wallForce = 400.f;
-    if (ballOut->position.x > (gMaxPos.x - 20.f)) {
-        float d = gMaxPos.x - ballOut->position.x;
-        if (d < 0.f) {
-            if (ballOut->delta.x > 0) {
-                ballOut->delta.x *= -0.7;
-            }
-            ballOut->position.x = gMaxPos.x;
-        } else {
-            ballOut->delta.x -= min(wallForce / (d * d), 10.f);
-        }
-    }
-
-    if (ballOut->position.x < (gMinPos.x + 20.f)) {
-        float d = ballOut->position.x - gMinPos.x;
-        if (d < 0.f) {
-            if (ballOut->delta.x < 0) {
-                ballOut->delta.x *= -0.7;
-            }
-            ballOut->position.x = gMinPos.x + 1.f;
-        } else {
-            ballOut->delta.x += min(wallForce / (d * d), 10.f);
-        }
-    }
-
-    if (ballOut->position.y > (gMaxPos.y - 20.f)) {
-        float d = gMaxPos.y - ballOut->position.y;
-        if (d < 0.f) {
-            if (ballOut->delta.y > 0) {
-                ballOut->delta.y *= -0.7;
-            }
-            ballOut->position.y = gMaxPos.y;
-        } else {
-            ballOut->delta.y -= min(wallForce / (d * d), 10.f);
-        }
-    }
-
-    if (ballOut->position.y < (gMinPos.y + 20.f)) {
-        float d = ballOut->position.y - gMinPos.y;
-        if (d < 0.f) {
-            if (ballOut->delta.y < 0) {
-                ballOut->delta.y *= -0.7;
-            }
-            ballOut->position.y = gMinPos.y + 1.f;
-        } else {
-            ballOut->delta.y += min(wallForce / (d * d * d), 10.f);
-        }
-    }
-
-    ballOut->size = ballIn->size;
-
-    //rsDebug("physics pos out", ballOut->position);
-}
-
diff --git a/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.rs b/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.rs
deleted file mode 100644
index d61557c..0000000
--- a/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.rs
+++ /dev/null
@@ -1,83 +0,0 @@
-#pragma version(1)
-#pragma rs java_package_name(com.example.android.rs.balls)
-#include "rs_graphics.rsh"
-
-#include "balls.rsh"
-
-#pragma stateVertex(parent)
-#pragma stateStore(parent)
-
-rs_program_fragment gPFPoints;
-rs_program_fragment gPFLines;
-rs_mesh partMesh;
-
-typedef struct __attribute__((packed, aligned(4))) Point {
-    float2 position;
-    float size;
-} Point_t;
-Point_t *point;
-
-typedef struct VpConsts {
-    rs_matrix4x4 MVP;
-} VpConsts_t;
-VpConsts_t *vpConstants;
-
-rs_script physics_script;
-
-Ball_t *balls1;
-Ball_t *balls2;
-
-static int frame = 0;
-
-void initParts(int w, int h)
-{
-    uint32_t dimX = rsAllocationGetDimX(rsGetAllocation(balls1));
-
-    for (uint32_t ct=0; ct < dimX; ct++) {
-        balls1[ct].position.x = rsRand(0.f, (float)w);
-        balls1[ct].position.y = rsRand(0.f, (float)h);
-        balls1[ct].delta.x = 0.f;
-        balls1[ct].delta.y = 0.f;
-        balls1[ct].size = 1.f;
-
-        float r = rsRand(100.f);
-        if (r > 90.f) {
-            balls1[ct].size += pow(10.f, rsRand(0.f, 2.f)) * 0.07;
-        }
-    }
-}
-
-
-
-int root() {
-    rsgClearColor(0.f, 0.f, 0.f, 1.f);
-
-    BallControl_t bc;
-    Ball_t *bout;
-
-    if (frame & 1) {
-        bc.ain = rsGetAllocation(balls2);
-        bc.aout = rsGetAllocation(balls1);
-        bout = balls2;
-    } else {
-        bc.ain = rsGetAllocation(balls1);
-        bc.aout = rsGetAllocation(balls2);
-        bout = balls1;
-    }
-
-    bc.dimX = rsAllocationGetDimX(bc.ain);
-    bc.dt = 1.f / 30.f;
-
-    rsForEach(physics_script, bc.ain, bc.aout, &bc, sizeof(bc));
-
-    for (uint32_t ct=0; ct < bc.dimX; ct++) {
-        point[ct].position = bout[ct].position;
-        point[ct].size = 6.f /*+ bout[ct].color.g * 6.f*/ * bout[ct].size;
-    }
-
-    frame++;
-    rsgBindProgramFragment(gPFPoints);
-    rsgDrawMesh(partMesh);
-    return 1;
-}
-
diff --git a/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.rsh b/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.rsh
deleted file mode 100644
index fc886f9..0000000
--- a/samples/RenderScript/Balls/src/com/example/android/rs/balls/balls.rsh
+++ /dev/null
@@ -1,18 +0,0 @@
-
-typedef struct __attribute__((packed, aligned(4))) Ball {
-    float2 delta;
-    float2 position;
-    //float3 color;
-    float size;
-    //int arcID;
-    //float arcStr;
-} Ball_t;
-Ball_t *balls;
-
-
-typedef struct BallControl {
-    uint32_t dimX;
-    rs_allocation ain;
-    rs_allocation aout;
-    float dt;
-} BallControl_t;
diff --git a/samples/RenderScript/Fountain/Android.mk b/samples/RenderScript/Fountain/Android.mk
deleted file mode 100644
index 2049ecf..0000000
--- a/samples/RenderScript/Fountain/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (C) 2008 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_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-# TODO: build fails with this set
-# LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := RsFountain
-
-include $(BUILD_PACKAGE)
diff --git a/samples/RenderScript/Fountain/AndroidManifest.xml b/samples/RenderScript/Fountain/AndroidManifest.xml
deleted file mode 100644
index d19b8c3..0000000
--- a/samples/RenderScript/Fountain/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.rs.fountain">
-    <uses-sdk android:minSdkVersion="14" />
-    <application
-        android:label="RsFountain"
-        android:hardwareAccelerated="true"
-        android:icon="@drawable/test_pattern">
-        <activity android:name="Fountain">
-            <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/RenderScript/Fountain/_index.html b/samples/RenderScript/Fountain/_index.html
deleted file mode 100644
index 223242f..0000000
--- a/samples/RenderScript/Fountain/_index.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<p>An example that renders many dots on the screen that follow a user's touch. The dots fall 
-to the bottom of the screen when the user releases the finger.</p>
-
-
-
diff --git a/samples/RenderScript/Fountain/res/drawable/test_pattern.png b/samples/RenderScript/Fountain/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/samples/RenderScript/Fountain/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/Fountain.java b/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/Fountain.java
deleted file mode 100644
index 311455a..0000000
--- a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/Fountain.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.fountain;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Looper;
-import android.os.Message;
-import android.provider.Settings.System;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.Window;
-import android.widget.Button;
-import android.widget.ListView;
-
-import java.lang.Runtime;
-
-public class Fountain extends Activity {
-    //EventListener mListener = new EventListener();
-
-    private static final String LOG_TAG = "libRS_jni";
-    private static final boolean DEBUG  = false;
-    private static final boolean LOG_ENABLED = false;
-
-    private FountainView mView;
-
-    // get the current looper (from your Activity UI thread for instance
-
-
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        // Create our Preview view and set it as the content of our
-        // Activity
-        mView = new FountainView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        Log.e("rs", "onResume");
-
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onResume();
-        mView.resume();
-    }
-
-    @Override
-    protected void onPause() {
-        Log.e("rs", "onPause");
-
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onPause();
-        mView.pause();
-
-
-
-        //Runtime.getRuntime().exit(0);
-    }
-
-
-    static void log(String message) {
-        if (LOG_ENABLED) {
-            Log.v(LOG_TAG, message);
-        }
-    }
-
-
-}
-
diff --git a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainRS.java b/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainRS.java
deleted file mode 100644
index 646c807..0000000
--- a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainRS.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.fountain;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.util.Log;
-
-
-public class FountainRS {
-    public static final int PART_COUNT = 50000;
-
-    public FountainRS() {
-    }
-
-    private Resources mRes;
-    private RenderScriptGL mRS;
-    private ScriptC_fountain mScript;
-    public void init(RenderScriptGL rs, Resources res) {
-        mRS = rs;
-        mRes = res;
-
-        ProgramFragmentFixedFunction.Builder pfb = new ProgramFragmentFixedFunction.Builder(rs);
-        pfb.setVaryingColor(true);
-        rs.bindProgramFragment(pfb.create());
-
-        ScriptField_Point points = new ScriptField_Point(mRS, PART_COUNT);//
- //                                                        Allocation.USAGE_GRAPHICS_VERTEX);
-
-        Mesh.AllocationBuilder smb = new Mesh.AllocationBuilder(mRS);
-        smb.addVertexAllocation(points.getAllocation());
-        smb.addIndexSetType(Mesh.Primitive.POINT);
-        Mesh sm = smb.create();
-
-        mScript = new ScriptC_fountain(mRS, mRes, R.raw.fountain);
-        mScript.set_partMesh(sm);
-        mScript.bind_point(points);
-        mRS.bindRootScript(mScript);
-    }
-
-    boolean holdingColor[] = new boolean[10];
-    public void newTouchPosition(float x, float y, float pressure, int id) {
-        if (id >= holdingColor.length) {
-            return;
-        }
-        int rate = (int)(pressure * pressure * 500.f);
-        if (rate > 500) {
-            rate = 500;
-        }
-        if (rate > 0) {
-            mScript.invoke_addParticles(rate, x, y, id, !holdingColor[id]);
-            holdingColor[id] = true;
-        } else {
-            holdingColor[id] = false;
-        }
-
-    }
-}
diff --git a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainView.java b/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainView.java
deleted file mode 100644
index ba09421..0000000
--- a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/FountainView.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.fountain;
-
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.concurrent.Semaphore;
-
-import android.renderscript.RSTextureView;
-import android.renderscript.RenderScript;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Message;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Surface;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-
-public class FountainView extends RSTextureView {
-
-    public FountainView(Context context) {
-        super(context);
-        //setFocusable(true);
-    }
-
-    private RenderScriptGL mRS;
-    private FountainRS mRender;
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        android.util.Log.e("rs", "onAttachedToWindow");
-        if (mRS == null) {
-            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            mRS = createRenderScriptGL(sc);
-            mRender = new FountainRS();
-            mRender.init(mRS, getResources());
-        }
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        android.util.Log.e("rs", "onDetachedFromWindow");
-        if (mRS != null) {
-            mRS = null;
-            destroyRenderScriptGL();
-        }
-    }
-
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev)
-    {
-        int act = ev.getActionMasked();
-        if (act == ev.ACTION_UP) {
-            mRender.newTouchPosition(0, 0, 0, ev.getPointerId(0));
-            return false;
-        } else if (act == MotionEvent.ACTION_POINTER_UP) {
-            // only one pointer going up, we can get the index like this
-            int pointerIndex = ev.getActionIndex();
-            int pointerId = ev.getPointerId(pointerIndex);
-            mRender.newTouchPosition(0, 0, 0, pointerId);
-        }
-        int count = ev.getHistorySize();
-        int pcount = ev.getPointerCount();
-
-        for (int p=0; p < pcount; p++) {
-            int id = ev.getPointerId(p);
-            mRender.newTouchPosition(ev.getX(p),
-                                     ev.getY(p),
-                                     ev.getPressure(p),
-                                     id);
-
-            for (int i=0; i < count; i++) {
-                mRender.newTouchPosition(ev.getHistoricalX(p, i),
-                                         ev.getHistoricalY(p, i),
-                                         ev.getHistoricalPressure(p, i),
-                                         id);
-            }
-        }
-        return true;
-    }
-}
-
-
diff --git a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/fountain.rs b/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/fountain.rs
deleted file mode 100644
index b8b8421..0000000
--- a/samples/RenderScript/Fountain/src/com/example/android/rs/fountain/fountain.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Fountain test script
-#pragma version(1)
-
-#pragma rs java_package_name(com.example.android.rs.fountain)
-
-#pragma stateFragment(parent)
-
-#include "rs_graphics.rsh"
-
-static int newPart = 0;
-rs_mesh partMesh;
-
-typedef struct __attribute__((packed, aligned(4))) Point {
-    float2 delta;
-    float2 position;
-    uchar4 color;
-} Point_t;
-Point_t *point;
-
-int root() {
-    float dt = min(rsGetDt(), 0.1f);
-    rsgClearColor(0.f, 0.f, 0.f, 1.f);
-    const float height = rsgGetHeight();
-    const int size = rsAllocationGetDimX(rsGetAllocation(point));
-    float dy2 = dt * (10.f);
-    Point_t * p = point;
-    for (int ct=0; ct < size; ct++) {
-        p->delta.y += dy2;
-        p->position += p->delta;
-        if ((p->position.y > height) && (p->delta.y > 0)) {
-            p->delta.y *= -0.3f;
-        }
-        p++;
-    }
-
-    rsgDrawMesh(partMesh);
-    return 1;
-}
-
-static float4 partColor[10];
-void addParticles(int rate, float x, float y, int index, bool newColor)
-{
-    if (newColor) {
-        partColor[index].x = rsRand(0.5f, 1.0f);
-        partColor[index].y = rsRand(1.0f);
-        partColor[index].z = rsRand(1.0f);
-    }
-    float rMax = ((float)rate) * 0.02f;
-    int size = rsAllocationGetDimX(rsGetAllocation(point));
-    uchar4 c = rsPackColorTo8888(partColor[index]);
-
-    Point_t * np = &point[newPart];
-    float2 p = {x, y};
-    while (rate--) {
-        float angle = rsRand(3.14f * 2.f);
-        float len = rsRand(rMax);
-        np->delta.x = len * sin(angle);
-        np->delta.y = len * cos(angle);
-        np->position = p;
-        np->color = c;
-        newPart++;
-        np++;
-        if (newPart >= size) {
-            newPart = 0;
-            np = &point[newPart];
-        }
-    }
-}
-
diff --git a/samples/RenderScript/FountainFbo/Android.mk b/samples/RenderScript/FountainFbo/Android.mk
deleted file mode 100644
index 55a4fd8..0000000
--- a/samples/RenderScript/FountainFbo/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (C) 2008 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_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-# TODO: build fails with this set
-# LOCAL_SDK_VERSION := current
-
-LOCAL_PACKAGE_NAME := RsFountainFbo
-
-include $(BUILD_PACKAGE)
diff --git a/samples/RenderScript/FountainFbo/AndroidManifest.xml b/samples/RenderScript/FountainFbo/AndroidManifest.xml
deleted file mode 100644
index 082744b..0000000
--- a/samples/RenderScript/FountainFbo/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.rs.fountainfbo">
-    <uses-sdk android:minSdkVersion="14" />
-    <application
-        android:label="RsFountainFbo"
-        android:hardwareAccelerated="true"
-        android:icon="@drawable/test_pattern">
-        <activity android:name="FountainFbo">
-            <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/RenderScript/FountainFbo/_index.html b/samples/RenderScript/FountainFbo/_index.html
deleted file mode 100644
index 5508657..0000000
--- a/samples/RenderScript/FountainFbo/_index.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<p>An example that renders many dots on the screen that follow a user's touch. The dots fall 
-to the bottom of the screen when no touch is detected. This example modifies
-the <a href="../Fountain/index.html">Fountain</a> sample to include rendering to a
-a framebuffer object as well as the default framebuffer.</p>
-
-
-
diff --git a/samples/RenderScript/FountainFbo/res/drawable/test_pattern.png b/samples/RenderScript/FountainFbo/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/samples/RenderScript/FountainFbo/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFbo.java b/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFbo.java
deleted file mode 100644
index d8ba30f..0000000
--- a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFbo.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.fountainfbo;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.util.Log;
-
-public class FountainFbo extends Activity {
-    private static final String LOG_TAG = "libRS_jni";
-    private static final boolean DEBUG  = false;
-    private static final boolean LOG_ENABLED = false;
-
-    private FountainFboView mView;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        /* Create our Preview view and set it as the content of our Activity */
-        mView = new FountainFboView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        Log.e("rs", "onResume");
-
-        /* Ideally a game should implement onResume() and onPause()
-         to take appropriate action when the activity loses focus */
-        super.onResume();
-        mView.resume();
-    }
-
-    @Override
-    protected void onPause() {
-        Log.e("rs", "onPause");
-
-        /* Ideally a game should implement onResume() and onPause()
-        to take appropriate action when the activity loses focus */
-        super.onPause();
-        mView.pause();
-    }
-
-    static void log(String message) {
-        if (LOG_ENABLED) {
-            Log.v(LOG_TAG, message);
-        }
-    }
-}
-
diff --git a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFboRS.java b/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFboRS.java
deleted file mode 100644
index 3bf3ff1..0000000
--- a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFboRS.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.fountainfbo;
-
-import android.content.res.Resources;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.Mesh;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramFragmentFixedFunction;
-import android.renderscript.RenderScriptGL;
-import android.renderscript.Type;
-
-public class FountainFboRS {
-    public static final int PART_COUNT = 50000;
-
-    public FountainFboRS() {
-    }
-
-    private Resources mRes;
-    private RenderScriptGL mRS;
-    private ScriptC_fountainfbo mScript;
-    private Allocation mColorBuffer;
-    private ProgramFragment mProgramFragment;
-    private ProgramFragment mTextureProgramFragment;
-    public void init(RenderScriptGL rs, Resources res) {
-      mRS = rs;
-      mRes = res;
-
-      ScriptField_Point points = new ScriptField_Point(mRS, PART_COUNT);
-
-      Mesh.AllocationBuilder smb = new Mesh.AllocationBuilder(mRS);
-      smb.addVertexAllocation(points.getAllocation());
-      smb.addIndexSetType(Mesh.Primitive.POINT);
-      Mesh sm = smb.create();
-
-      mScript = new ScriptC_fountainfbo(mRS, mRes, R.raw.fountainfbo);
-      mScript.set_partMesh(sm);
-      mScript.bind_point(points);
-
-      ProgramFragmentFixedFunction.Builder pfb = new ProgramFragmentFixedFunction.Builder(rs);
-      pfb.setVaryingColor(true);
-      mProgramFragment = pfb.create();
-      mScript.set_gProgramFragment(mProgramFragment);
-
-      /* Second fragment shader to use a texture (framebuffer object) to draw with */
-      pfb.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
-          ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
-
-      /* Set the fragment shader in the Renderscript runtime */
-      mTextureProgramFragment = pfb.create();
-      mScript.set_gTextureProgramFragment(mTextureProgramFragment);
-
-      /* Create the allocation for the color buffer */
-      Type.Builder colorBuilder = new Type.Builder(mRS, Element.RGBA_8888(mRS));
-      colorBuilder.setX(256).setY(256);
-      mColorBuffer = Allocation.createTyped(mRS, colorBuilder.create(),
-      Allocation.USAGE_GRAPHICS_TEXTURE |
-      Allocation.USAGE_GRAPHICS_RENDER_TARGET);
-
-      /* Set the allocation in the Renderscript runtime */
-      mScript.set_gColorBuffer(mColorBuffer);
-
-      mRS.bindRootScript(mScript);
-  }
-
-    boolean holdingColor[] = new boolean[10];
-    public void newTouchPosition(float x, float y, float pressure, int id) {
-        if (id >= holdingColor.length) {
-            return;
-        }
-        int rate = (int)(pressure * pressure * 500.f);
-        if (rate > 500) {
-            rate = 500;
-        }
-        if (rate > 0) {
-            mScript.invoke_addParticles(rate, x, y, id, !holdingColor[id]);
-            holdingColor[id] = true;
-        } else {
-            holdingColor[id] = false;
-        }
-
-    }
-}
-
diff --git a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFboView.java b/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFboView.java
deleted file mode 100644
index 6e40da3..0000000
--- a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/FountainFboView.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.fountainfbo;
-
-
-import android.renderscript.RSTextureView;
-import android.renderscript.RenderScriptGL;
-import android.content.Context;
-import android.view.MotionEvent;
-
-public class FountainFboView extends RSTextureView {
-
-    public FountainFboView(Context context) {
-        super(context);
-    }
-
-    private RenderScriptGL mRS;
-    private FountainFboRS mRender;
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        android.util.Log.e("rs", "onAttachedToWindow");
-        if (mRS == null) {
-            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            mRS = createRenderScriptGL(sc);
-            mRender = new FountainFboRS();
-            mRender.init(mRS, getResources());
-        }
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        android.util.Log.e("rs", "onDetachedFromWindow");
-        if (mRS != null) {
-            mRS = null;
-            destroyRenderScriptGL();
-        }
-    }
-
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev)
-    {
-        int act = ev.getActionMasked();
-        if (act == ev.ACTION_UP) {
-            mRender.newTouchPosition(0, 0, 0, ev.getPointerId(0));
-            return false;
-        } else if (act == MotionEvent.ACTION_POINTER_UP) {
-            // only one pointer going up, we can get the index like this
-            int pointerIndex = ev.getActionIndex();
-            int pointerId = ev.getPointerId(pointerIndex);
-            mRender.newTouchPosition(0, 0, 0, pointerId);
-        }
-        int count = ev.getHistorySize();
-        int pcount = ev.getPointerCount();
-
-        for (int p=0; p < pcount; p++) {
-            int id = ev.getPointerId(p);
-            mRender.newTouchPosition(ev.getX(p),
-                                     ev.getY(p),
-                                     ev.getPressure(p),
-                                     id);
-
-            for (int i=0; i < count; i++) {
-                mRender.newTouchPosition(ev.getHistoricalX(p, i),
-                                         ev.getHistoricalY(p, i),
-                                         ev.getHistoricalPressure(p, i),
-                                         id);
-            }
-        }
-        return true;
-    }
-}
-
-
diff --git a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/fountainfbo.rs b/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/fountainfbo.rs
deleted file mode 100644
index 763f6ba..0000000
--- a/samples/RenderScript/FountainFbo/src/com/example/android/rs/fountainfbo/fountainfbo.rs
+++ /dev/null
@@ -1,106 +0,0 @@
-// Fountain test script
-#pragma version(1)
-
-#pragma rs java_package_name(com.example.android.rs.fountainfbo)
-
-#pragma stateFragment(parent)
-
-#include "rs_graphics.rsh"
-
-static int newPart = 0;
-rs_mesh partMesh;
-rs_program_vertex gProgramVertex;
-
-//allocation for color buffer
-rs_allocation gColorBuffer;
-//fragment shader for rendering without a texture (used for rendering to framebuffer object)
-rs_program_fragment gProgramFragment;
-//fragment shader for rendering with a texture (used for rendering to default framebuffer)
-rs_program_fragment gTextureProgramFragment;
-
-typedef struct __attribute__((packed, aligned(4))) Point {
-    float2 delta;
-    float2 position;
-    uchar4 color;
-} Point_t;
-Point_t *point;
-
-int root() {
-    float dt = min(rsGetDt(), 0.1f);
-    rsgClearColor(0.f, 0.f, 0.f, 1.f);
-    const float height = rsgGetHeight();
-    const int size = rsAllocationGetDimX(rsGetAllocation(point));
-    float dy2 = dt * (10.f);
-    Point_t * p = point;
-    for (int ct=0; ct < size; ct++) {
-        p->delta.y += dy2;
-        p->position += p->delta;
-        if ((p->position.y > height) && (p->delta.y > 0)) {
-            p->delta.y *= -0.3f;
-        }
-        p++;
-    }
-    //Tell Renderscript runtime to render to the frame buffer object
-    rsgBindColorTarget(gColorBuffer, 0);
-
-    //Begin rendering on a white background
-    rsgClearColor(1.f, 1.f, 1.f, 1.f);
-    rsgDrawMesh(partMesh);
-
-    //When done, tell Renderscript runtime to stop rendering to framebuffer object
-    rsgClearAllRenderTargets();
-
-    //Bind a new fragment shader that declares the framebuffer object to be used as a texture
-    rsgBindProgramFragment(gTextureProgramFragment);
-
-    //Bind the framebuffer object to the fragment shader at slot 0 as a texture
-    rsgBindTexture(gTextureProgramFragment, 0, gColorBuffer);
-
-    //Draw a quad using the framebuffer object as the texture
-    float startX = 10, startY = 10;
-    float s = 256;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 1,
-                         startX, startY + s, 0, 0, 0,
-                         startX + s, startY + s, 0, 1, 0,
-                         startX + s, startY, 0, 1, 1);
-
-    //Rebind the original fragment shader to render as normal
-    rsgBindProgramFragment(gProgramFragment);
-
-    //Render the main scene
-    rsgDrawMesh(partMesh);
-
-    return 1;
-}
-
-static float4 partColor[10];
-void addParticles(int rate, float x, float y, int index, bool newColor)
-{
-    if (newColor) {
-        partColor[index].x = rsRand(0.5f, 1.0f);
-        partColor[index].y = rsRand(1.0f);
-        partColor[index].z = rsRand(1.0f);
-    }
-    float rMax = ((float)rate) * 0.02f;
-    int size = rsAllocationGetDimX(rsGetAllocation(point));
-    uchar4 c = rsPackColorTo8888(partColor[index]);
-
-    Point_t * np = &point[newPart];
-    float2 p = {x, y};
-    while (rate--) {
-        float angle = rsRand(3.14f * 2.f);
-        float len = rsRand(rMax);
-        np->delta.x = len * sin(angle);
-        np->delta.y = len * cos(angle);
-        np->position = p;
-        np->color = c;
-        newPart++;
-        np++;
-        if (newPart >= size) {
-            newPart = 0;
-            np = &point[newPart];
-        }
-    }
-}
-
-
diff --git a/samples/RenderScript/HelloWorld/Android.mk b/samples/RenderScript/HelloWorld/Android.mk
deleted file mode 100644
index 2af1cdb..0000000
--- a/samples/RenderScript/HelloWorld/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# 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.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_PACKAGE_NAME := RsHelloWorld
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/samples/RenderScript/HelloWorld/AndroidManifest.xml b/samples/RenderScript/HelloWorld/AndroidManifest.xml
deleted file mode 100644
index 1d37dc9..0000000
--- a/samples/RenderScript/HelloWorld/AndroidManifest.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?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.rs.helloworld">
-    <uses-sdk android:minSdkVersion="11" />
-    <application android:label="RsHelloWorld"
-    android:icon="@drawable/test_pattern">
-        <activity android:name="HelloWorld"
-                  android:label="RsHelloWorld"
-                  android:theme="@android:style/Theme.Black.NoTitleBar">
-            <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/RenderScript/HelloWorld/_index.html b/samples/RenderScript/HelloWorld/_index.html
deleted file mode 100644
index 4cab738..0000000
--- a/samples/RenderScript/HelloWorld/_index.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A Renderscript graphics application that draws the text "Hello, World!" where the user touches.</p>
\ No newline at end of file
diff --git a/samples/RenderScript/HelloWorld/res/drawable/test_pattern.png b/samples/RenderScript/HelloWorld/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/samples/RenderScript/HelloWorld/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java b/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java
deleted file mode 100644
index 9b1697b..0000000
--- a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorld.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.rs.helloworld;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-// Renderscript activity
-public class HelloWorld extends Activity {
-
-    // Custom view to use with RenderScript
-    private HelloWorldView mView;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        // Create our view and set it as the content of our Activity
-        mView = new HelloWorldView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        // Ideally an app should implement onResume() and onPause()
-        // to take appropriate action when the activity loses focus
-        super.onResume();
-        mView.resume();
-    }
-
-    @Override
-    protected void onPause() {
-        // Ideally an app should implement onResume() and onPause()
-        // to take appropriate action when the activity loses focus
-        super.onPause();
-        mView.pause();
-    }
-
-}
-
diff --git a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java b/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java
deleted file mode 100644
index 4316411..0000000
--- a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldRS.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.rs.helloworld;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-
-// This is the renderer for the HelloWorldView
-public class HelloWorldRS {
-    private Resources mRes;
-    private RenderScriptGL mRS;
-
-    private ScriptC_helloworld mScript;
-
-    public HelloWorldRS() {
-    }
-
-    // This provides us with the renderscript context and resources that
-    // allow us to create the script that does rendering
-    public void init(RenderScriptGL rs, Resources res) {
-        mRS = rs;
-        mRes = res;
-        initRS();
-    }
-
-    public void onActionDown(int x, int y) {
-        mScript.set_gTouchX(x);
-        mScript.set_gTouchY(y);
-    }
-
-    private void initRS() {
-        mScript = new ScriptC_helloworld(mRS, mRes, R.raw.helloworld);
-        mRS.bindRootScript(mScript);
-    }
-}
-
-
-
diff --git a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java b/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java
deleted file mode 100644
index 557ebc5..0000000
--- a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/HelloWorldView.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.rs.helloworld;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-
-public class HelloWorldView extends RSSurfaceView {
-    // Renderscipt context
-    private RenderScriptGL mRS;
-    // Script that does the rendering
-    private HelloWorldRS mRender;
-
-    public HelloWorldView(Context context) {
-        super(context);
-        ensureRenderScript();
-    }
-
-    private void ensureRenderScript() {
-        if (mRS == null) {
-            // Initialize renderscript with desired surface characteristics.
-            // In this case, just use the defaults
-            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            mRS = createRenderScriptGL(sc);
-            // Create an instance of the script that does the rendering
-            mRender = new HelloWorldRS();
-            mRender.init(mRS, getResources());
-        }
-    }
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        ensureRenderScript();
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        // Handle the system event and clean up
-        mRender = null;
-        if (mRS != null) {
-            mRS = null;
-            destroyRenderScriptGL();
-        }
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        // Pass touch events from the system to the rendering script
-        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            mRender.onActionDown((int)ev.getX(), (int)ev.getY());
-            return true;
-        }
-
-        return false;
-    }
-}
-
-
diff --git a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs b/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs
deleted file mode 100644
index bcf624e..0000000
--- a/samples/RenderScript/HelloWorld/src/com/example/android/rs/helloworld/helloworld.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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 version(1)
-
-// Tell which java package name the reflected files should belong to
-#pragma rs java_package_name(com.example.android.rs.helloworld)
-
-// Built-in header with graphics API's
-#include "rs_graphics.rsh"
-
-// gTouchX and gTouchY are variables that will be reflected for use
-// by the java API. We can use them to notify the script of touch events.
-int gTouchX;
-int gTouchY;
-
-// This is invoked automatically when the script is created
-void init() {
-    gTouchX = 50.0f;
-    gTouchY = 50.0f;
-}
-
-int root(void) {
-
-    // Clear the background color
-    rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-    // Tell the runtime what the font color should be
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    // Introuduce ourselves to the world by drawing a greeting
-    // at the position user touched on the screen
-    rsgDrawText("Hello World!", gTouchX, gTouchY);
-
-    // Return value tells RS roughly how often to redraw
-    // in this case 20 ms
-    return 20;
-}
diff --git a/samples/RenderScript/Balls/Android.mk b/samples/RenderScript/Levels/Android.mk
similarity index 89%
rename from samples/RenderScript/Balls/Android.mk
rename to samples/RenderScript/Levels/Android.mk
index b109584..3f1445d 100644
--- a/samples/RenderScript/Balls/Android.mk
+++ b/samples/RenderScript/Levels/Android.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2008 The Android Open Source Project
+# 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.
@@ -21,6 +21,6 @@
 
 LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
 
-LOCAL_PACKAGE_NAME := RsBalls
+LOCAL_PACKAGE_NAME := LevelsRS
 
 include $(BUILD_PACKAGE)
diff --git a/samples/RenderScript/Levels/AndroidManifest.xml b/samples/RenderScript/Levels/AndroidManifest.xml
new file mode 100644
index 0000000..8294048
--- /dev/null
+++ b/samples/RenderScript/Levels/AndroidManifest.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* 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.
+*/
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.rs.levels">
+    <uses-sdk android:minSdkVersion="14" />
+    <application android:label="Levels RS"
+                 android:hardwareAccelerated="true">
+
+        <activity android:name="LevelsRSActivity"
+                  android:label="Levels RS">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="LevelsDalvikActivity"
+                  android:label="Levels Dalvik">
+            <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/RenderScript/Levels/res/drawable-nodpi/city.png b/samples/RenderScript/Levels/res/drawable-nodpi/city.png
new file mode 100644
index 0000000..856eeff
--- /dev/null
+++ b/samples/RenderScript/Levels/res/drawable-nodpi/city.png
Binary files differ
diff --git a/samples/RenderScript/Levels/res/layout/main.xml b/samples/RenderScript/Levels/res/layout/main.xml
new file mode 100644
index 0000000..a6a075c
--- /dev/null
+++ b/samples/RenderScript/Levels/res/layout/main.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+            android:orientation="vertical"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:id="@+id/toplevel">
+    <SurfaceView
+        android:id="@+id/surface"
+        android:layout_width="1dip"
+        android:layout_height="1dip" />
+    <ScrollView
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent">
+            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:orientation="vertical"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent">
+            <ImageView
+                android:id="@+id/display"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:orientation="horizontal"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content">
+                    <Button
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/benchmark"
+                        android:onClick="benchmark"/>
+                    <TextView
+                        android:id="@+id/benchmarkText"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textSize="8pt"
+                        android:text="@string/saturation"/>
+            </LinearLayout>
+            <TextView
+                android:id="@+id/inSaturationText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/saturation"/>
+             <SeekBar
+                android:id="@+id/inSaturation"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/outWhiteText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:textSize="8pt"
+                android:text="@string/out_white"/>
+            <SeekBar
+                android:id="@+id/outWhite"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/inWhiteText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/in_white"/>
+            <SeekBar
+                android:id="@+id/inWhite"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/outBlackText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/out_black"/>
+            <SeekBar
+                android:id="@+id/outBlack"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/inBlackText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/in_black"/>
+            <SeekBar
+                android:id="@+id/inBlack"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/inGammaText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/gamma"/>
+            <SeekBar
+                android:id="@+id/inGamma"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            </LinearLayout>
+    </ScrollView>
+</LinearLayout>
+
diff --git a/samples/RenderScript/Levels/res/layout/rs.xml b/samples/RenderScript/Levels/res/layout/rs.xml
new file mode 100644
index 0000000..6fde1b9
--- /dev/null
+++ b/samples/RenderScript/Levels/res/layout/rs.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+            android:orientation="vertical"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:id="@+id/toplevel">
+    <SurfaceView
+        android:id="@+id/surface"
+        android:layout_width="1dip"
+        android:layout_height="1dip" />
+    <ScrollView
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent">
+            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:orientation="vertical"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent">
+            <TextureView
+                android:id="@+id/display"
+                android:layout_width="800sp"
+                android:layout_height="423sp" />
+            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:orientation="horizontal"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content">
+                    <Button
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:text="@string/benchmark"
+                        android:onClick="benchmark"/>
+                    <TextView
+                        android:id="@+id/benchmarkText"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:textSize="8pt"
+                        android:text="@string/saturation"/>
+            </LinearLayout>
+            <TextView
+                android:id="@+id/inSaturationText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/saturation"/>
+             <SeekBar
+                android:id="@+id/inSaturation"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/outWhiteText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:textSize="8pt"
+                android:text="@string/out_white"/>
+            <SeekBar
+                android:id="@+id/outWhite"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/inWhiteText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/in_white"/>
+            <SeekBar
+                android:id="@+id/inWhite"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/outBlackText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/out_black"/>
+            <SeekBar
+                android:id="@+id/outBlack"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/inBlackText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/in_black"/>
+            <SeekBar
+                android:id="@+id/inBlack"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/inGammaText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:textSize="8pt"
+                android:layout_marginLeft="10sp"
+                android:layout_marginTop="15sp"
+                android:text="@string/gamma"/>
+            <SeekBar
+                android:id="@+id/inGamma"
+                android:layout_marginLeft="10sp"
+                android:layout_marginRight="10sp"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"/>
+            </LinearLayout>
+    </ScrollView>
+</LinearLayout>
+
diff --git a/samples/RenderScript/Levels/res/values/strings.xml b/samples/RenderScript/Levels/res/values/strings.xml
new file mode 100644
index 0000000..0552d3b
--- /dev/null
+++ b/samples/RenderScript/Levels/res/values/strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+* 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.
+*/
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- General -->
+    <skip />
+    <!--slider label -->
+    <string name="in_white">In White</string>
+    <string name="out_white">Out White</string>
+    <string name="in_black">In Black</string>
+    <string name="out_black">Out Black</string>
+    <string name="gamma">Gamma</string>
+    <string name="saturation">Saturation</string>
+    <string name="benchmark">Benchmark</string>
+
+</resources>
diff --git a/samples/RenderScript/Levels/src/com/android/rs/levels/LevelsDalvikActivity.java b/samples/RenderScript/Levels/src/com/android/rs/levels/LevelsDalvikActivity.java
new file mode 100644
index 0000000..8d94bf8
--- /dev/null
+++ b/samples/RenderScript/Levels/src/com/android/rs/levels/LevelsDalvikActivity.java
@@ -0,0 +1,239 @@
+/*
+ * 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.
+ */
+
+package com.android.rs.levels;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.os.Bundle;
+import android.renderscript.Matrix3f;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+public class LevelsDalvikActivity extends Activity
+                                  implements SeekBar.OnSeekBarChangeListener {
+    private final String TAG = "Img";
+    private Bitmap mBitmapIn;
+    private Bitmap mBitmapOut;
+    private float mInBlack = 0.0f;
+    private SeekBar mInBlackSeekBar;
+    private float mOutBlack = 0.0f;
+    private SeekBar mOutBlackSeekBar;
+    private float mInWhite = 255.0f;
+    private SeekBar mInWhiteSeekBar;
+    private float mOutWhite = 255.0f;
+    private SeekBar mOutWhiteSeekBar;
+    private float mGamma = 1.0f;
+    private SeekBar mGammaSeekBar;
+    private float mSaturation = 1.0f;
+    private SeekBar mSaturationSeekBar;
+    private TextView mBenchmarkResult;
+    private ImageView mDisplayView;
+
+    Matrix3f satMatrix = new Matrix3f();
+    float mInWMinInB;
+    float mOutWMinOutB;
+    float mOverInWMinInB;
+
+    int mInPixels[];
+    int mOutPixels[];
+
+    private void setLevels() {
+        mInWMinInB = mInWhite - mInBlack;
+        mOutWMinOutB = mOutWhite - mOutBlack;
+        mOverInWMinInB = 1.f / mInWMinInB;
+    }
+
+    private void setSaturation() {
+        float rWeight = 0.299f;
+        float gWeight = 0.587f;
+        float bWeight = 0.114f;
+        float oneMinusS = 1.0f - mSaturation;
+
+        satMatrix.set(0, 0, oneMinusS * rWeight + mSaturation);
+        satMatrix.set(0, 1, oneMinusS * rWeight);
+        satMatrix.set(0, 2, oneMinusS * rWeight);
+        satMatrix.set(1, 0, oneMinusS * gWeight);
+        satMatrix.set(1, 1, oneMinusS * gWeight + mSaturation);
+        satMatrix.set(1, 2, oneMinusS * gWeight);
+        satMatrix.set(2, 0, oneMinusS * bWeight);
+        satMatrix.set(2, 1, oneMinusS * bWeight);
+        satMatrix.set(2, 2, oneMinusS * bWeight + mSaturation);
+    }
+
+    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+        if (fromUser) {
+            if (seekBar == mInBlackSeekBar) {
+                mInBlack = (float)progress;
+                setLevels();
+            } else if (seekBar == mOutBlackSeekBar) {
+                mOutBlack = (float)progress;
+                setLevels();
+            } else if (seekBar == mInWhiteSeekBar) {
+                mInWhite = (float)progress + 127.0f;
+                setLevels();
+            } else if (seekBar == mOutWhiteSeekBar) {
+                mOutWhite = (float)progress + 127.0f;
+                setLevels();
+            } else if (seekBar == mGammaSeekBar) {
+                mGamma = (float)progress/100.0f;
+                mGamma = Math.max(mGamma, 0.1f);
+                mGamma = 1.0f / mGamma;
+            } else if (seekBar == mSaturationSeekBar) {
+                mSaturation = (float)progress / 50.0f;
+                setSaturation();
+            }
+
+            filter();
+            mDisplayView.invalidate();
+        }
+    }
+
+    public void onStartTrackingTouch(SeekBar seekBar) {
+    }
+
+    public void onStopTrackingTouch(SeekBar seekBar) {
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+
+        mBitmapIn = loadBitmap(R.drawable.city);
+        mBitmapOut = loadBitmap(R.drawable.city);
+
+        mDisplayView = (ImageView) findViewById(R.id.display);
+        mDisplayView.setImageBitmap(mBitmapOut);
+
+        mInBlackSeekBar = (SeekBar)findViewById(R.id.inBlack);
+        mInBlackSeekBar.setOnSeekBarChangeListener(this);
+        mInBlackSeekBar.setMax(128);
+        mInBlackSeekBar.setProgress(0);
+        mOutBlackSeekBar = (SeekBar)findViewById(R.id.outBlack);
+        mOutBlackSeekBar.setOnSeekBarChangeListener(this);
+        mOutBlackSeekBar.setMax(128);
+        mOutBlackSeekBar.setProgress(0);
+
+        mInWhiteSeekBar = (SeekBar)findViewById(R.id.inWhite);
+        mInWhiteSeekBar.setOnSeekBarChangeListener(this);
+        mInWhiteSeekBar.setMax(128);
+        mInWhiteSeekBar.setProgress(128);
+        mOutWhiteSeekBar = (SeekBar)findViewById(R.id.outWhite);
+        mOutWhiteSeekBar.setOnSeekBarChangeListener(this);
+        mOutWhiteSeekBar.setMax(128);
+        mOutWhiteSeekBar.setProgress(128);
+
+        mGammaSeekBar = (SeekBar)findViewById(R.id.inGamma);
+        mGammaSeekBar.setOnSeekBarChangeListener(this);
+        mGammaSeekBar.setMax(150);
+        mGammaSeekBar.setProgress(100);
+
+        mSaturationSeekBar = (SeekBar)findViewById(R.id.inSaturation);
+        mSaturationSeekBar.setOnSeekBarChangeListener(this);
+        mSaturationSeekBar.setProgress(50);
+
+        mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText);
+        mBenchmarkResult.setText("Result: not run");
+
+        mInPixels = new int[mBitmapIn.getHeight() * mBitmapIn.getWidth()];
+        mOutPixels = new int[mBitmapOut.getHeight() * mBitmapOut.getWidth()];
+        mBitmapIn.getPixels(mInPixels, 0, mBitmapIn.getWidth(), 0, 0,
+                            mBitmapIn.getWidth(), mBitmapIn.getHeight());
+
+        setLevels();
+        setSaturation();
+        filter();
+    }
+
+    private Bitmap loadBitmap(int resource) {
+        final BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+        Bitmap b = BitmapFactory.decodeResource(getResources(), resource, options);
+        Bitmap b2 = Bitmap.createBitmap(b.getWidth(), b.getHeight(), b.getConfig());
+        Canvas c = new Canvas(b2);
+        c.drawBitmap(b, 0, 0, null);
+        b.recycle();
+        return b2;
+    }
+
+
+
+    private void filter() {
+        final float[] m = satMatrix.getArray();
+
+        for (int i=0; i < mInPixels.length; i++) {
+            float r = (float)(mInPixels[i] & 0xff);
+            float g = (float)((mInPixels[i] >> 8) & 0xff);
+            float b = (float)((mInPixels[i] >> 16) & 0xff);
+
+            float tr = r * m[0] + g * m[3] + b * m[6];
+            float tg = r * m[1] + g * m[4] + b * m[7];
+            float tb = r * m[2] + g * m[5] + b * m[8];
+            r = tr;
+            g = tg;
+            b = tb;
+
+            if (r < 0.f) r = 0.f;
+            if (r > 255.f) r = 255.f;
+            if (g < 0.f) g = 0.f;
+            if (g > 255.f) g = 255.f;
+            if (b < 0.f) b = 0.f;
+            if (b > 255.f) b = 255.f;
+
+            r = (r - mInBlack) * mOverInWMinInB;
+            g = (g - mInBlack) * mOverInWMinInB;
+            b = (b - mInBlack) * mOverInWMinInB;
+
+            if (mGamma != 1.0f) {
+                r = (float)java.lang.Math.pow(r, mGamma);
+                g = (float)java.lang.Math.pow(g, mGamma);
+                b = (float)java.lang.Math.pow(b, mGamma);
+            }
+
+            r = (r * mOutWMinOutB) + mOutBlack;
+            g = (g * mOutWMinOutB) + mOutBlack;
+            b = (b * mOutWMinOutB) + mOutBlack;
+
+            if (r < 0.f) r = 0.f;
+            if (r > 255.f) r = 255.f;
+            if (g < 0.f) g = 0.f;
+            if (g > 255.f) g = 255.f;
+            if (b < 0.f) b = 0.f;
+            if (b > 255.f) b = 255.f;
+
+            mOutPixels[i] = ((int)r) + (((int)g) << 8) + (((int)b) << 16)
+                            + (mInPixels[i] & 0xff000000);
+        }
+
+        mBitmapOut.setPixels(mOutPixels, 0, mBitmapOut.getWidth(), 0, 0,
+                             mBitmapOut.getWidth(), mBitmapOut.getHeight());
+    }
+
+    public void benchmark(View v) {
+        filter();
+        long t = java.lang.System.currentTimeMillis();
+        filter();
+        t = java.lang.System.currentTimeMillis() - t;
+        mDisplayView.invalidate();
+        mBenchmarkResult.setText("Result: " + t + " ms");
+    }
+}
diff --git a/samples/RenderScript/Levels/src/com/android/rs/levels/LevelsRSActivity.java b/samples/RenderScript/Levels/src/com/android/rs/levels/LevelsRSActivity.java
new file mode 100644
index 0000000..d63ee44
--- /dev/null
+++ b/samples/RenderScript/Levels/src/com/android/rs/levels/LevelsRSActivity.java
@@ -0,0 +1,232 @@
+/*
+ * 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.
+ */
+
+package com.android.rs.levels;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.os.Bundle;
+import android.graphics.SurfaceTexture;
+import android.renderscript.Allocation;
+import android.renderscript.Matrix3f;
+import android.renderscript.RenderScript;
+import android.util.Log;
+import android.view.TextureView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+public class LevelsRSActivity extends Activity
+                              implements SeekBar.OnSeekBarChangeListener,
+                                         TextureView.SurfaceTextureListener
+{
+    private final String TAG = "Img";
+    private Bitmap mBitmapIn;
+    private float mInBlack = 0.0f;
+    private SeekBar mInBlackSeekBar;
+    private float mOutBlack = 0.0f;
+    private SeekBar mOutBlackSeekBar;
+    private float mInWhite = 255.0f;
+    private SeekBar mInWhiteSeekBar;
+    private float mOutWhite = 255.0f;
+    private SeekBar mOutWhiteSeekBar;
+    private float mGamma = 1.0f;
+    private SeekBar mGammaSeekBar;
+    private float mSaturation = 1.0f;
+    private SeekBar mSaturationSeekBar;
+    private TextView mBenchmarkResult;
+    private TextureView mDisplayView;
+
+    Matrix3f satMatrix = new Matrix3f();
+    float mInWMinInB;
+    float mOutWMinOutB;
+    float mOverInWMinInB;
+
+    private RenderScript mRS;
+    private Allocation mInPixelsAllocation;
+    private Allocation mOutPixelsAllocation;
+    private ScriptC_levels mScript;
+
+    private void setLevels() {
+        mInWMinInB = mInWhite - mInBlack;
+        mOutWMinOutB = mOutWhite - mOutBlack;
+        mOverInWMinInB = 1.f / mInWMinInB;
+
+        mScript.set_inBlack(mInBlack);
+        mScript.set_outBlack(mOutBlack);
+        mScript.set_inWMinInB(mInWMinInB);
+        mScript.set_outWMinOutB(mOutWMinOutB);
+        mScript.set_overInWMinInB(mOverInWMinInB);
+    }
+
+    private void setSaturation() {
+        float rWeight = 0.299f;
+        float gWeight = 0.587f;
+        float bWeight = 0.114f;
+        float oneMinusS = 1.0f - mSaturation;
+
+        satMatrix.set(0, 0, oneMinusS * rWeight + mSaturation);
+        satMatrix.set(0, 1, oneMinusS * rWeight);
+        satMatrix.set(0, 2, oneMinusS * rWeight);
+        satMatrix.set(1, 0, oneMinusS * gWeight);
+        satMatrix.set(1, 1, oneMinusS * gWeight + mSaturation);
+        satMatrix.set(1, 2, oneMinusS * gWeight);
+        satMatrix.set(2, 0, oneMinusS * bWeight);
+        satMatrix.set(2, 1, oneMinusS * bWeight);
+        satMatrix.set(2, 2, oneMinusS * bWeight + mSaturation);
+        mScript.set_colorMat(satMatrix);
+    }
+
+    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+        if (fromUser) {
+            if (seekBar == mInBlackSeekBar) {
+                mInBlack = (float)progress;
+                setLevels();
+            } else if (seekBar == mOutBlackSeekBar) {
+                mOutBlack = (float)progress;
+                setLevels();
+            } else if (seekBar == mInWhiteSeekBar) {
+                mInWhite = (float)progress + 127.0f;
+                setLevels();
+            } else if (seekBar == mOutWhiteSeekBar) {
+                mOutWhite = (float)progress + 127.0f;
+                setLevels();
+            } else if (seekBar == mGammaSeekBar) {
+                mGamma = (float)progress/100.0f;
+                mGamma = Math.max(mGamma, 0.1f);
+                mGamma = 1.0f / mGamma;
+                mScript.set_gamma(mGamma);
+            } else if (seekBar == mSaturationSeekBar) {
+                mSaturation = (float)progress / 50.0f;
+                setSaturation();
+            }
+
+            filter();
+            mDisplayView.invalidate();
+        }
+    }
+
+    public void onStartTrackingTouch(SeekBar seekBar) {
+    }
+
+    public void onStopTrackingTouch(SeekBar seekBar) {
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.rs);
+
+        mBitmapIn = loadBitmap(R.drawable.city);
+        mDisplayView = (TextureView) findViewById(R.id.display);
+
+        mInBlackSeekBar = (SeekBar)findViewById(R.id.inBlack);
+        mInBlackSeekBar.setOnSeekBarChangeListener(this);
+        mInBlackSeekBar.setMax(128);
+        mInBlackSeekBar.setProgress(0);
+        mOutBlackSeekBar = (SeekBar)findViewById(R.id.outBlack);
+        mOutBlackSeekBar.setOnSeekBarChangeListener(this);
+        mOutBlackSeekBar.setMax(128);
+        mOutBlackSeekBar.setProgress(0);
+
+        mInWhiteSeekBar = (SeekBar)findViewById(R.id.inWhite);
+        mInWhiteSeekBar.setOnSeekBarChangeListener(this);
+        mInWhiteSeekBar.setMax(128);
+        mInWhiteSeekBar.setProgress(128);
+        mOutWhiteSeekBar = (SeekBar)findViewById(R.id.outWhite);
+        mOutWhiteSeekBar.setOnSeekBarChangeListener(this);
+        mOutWhiteSeekBar.setMax(128);
+        mOutWhiteSeekBar.setProgress(128);
+
+        mGammaSeekBar = (SeekBar)findViewById(R.id.inGamma);
+        mGammaSeekBar.setOnSeekBarChangeListener(this);
+        mGammaSeekBar.setMax(150);
+        mGammaSeekBar.setProgress(100);
+
+        mSaturationSeekBar = (SeekBar)findViewById(R.id.inSaturation);
+        mSaturationSeekBar.setOnSeekBarChangeListener(this);
+        mSaturationSeekBar.setProgress(50);
+
+        mBenchmarkResult = (TextView) findViewById(R.id.benchmarkText);
+        mBenchmarkResult.setText("Result: not run");
+
+        mRS = RenderScript.create(this);
+        mInPixelsAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
+                                                          Allocation.MipmapControl.MIPMAP_NONE,
+                                                          Allocation.USAGE_SCRIPT);
+        mOutPixelsAllocation = Allocation.createTyped(mRS, mInPixelsAllocation.getType(),
+                                                      Allocation.USAGE_SCRIPT |
+                                                      Allocation.USAGE_IO_OUTPUT);
+        mDisplayView.setSurfaceTextureListener(this);
+
+        mScript = new ScriptC_levels(mRS, getResources(), R.raw.levels);
+        mScript.set_gamma(mGamma);
+
+        setSaturation();
+        setLevels();
+    }
+
+    private Bitmap loadBitmap(int resource) {
+        final BitmapFactory.Options options = new BitmapFactory.Options();
+        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+        Bitmap b = BitmapFactory.decodeResource(getResources(), resource, options);
+        Bitmap b2 = Bitmap.createBitmap(b.getWidth(), b.getHeight(), b.getConfig());
+        Canvas c = new Canvas(b2);
+        c.drawBitmap(b, 0, 0, null);
+        b.recycle();
+        return b2;
+    }
+
+    private void filter() {
+        mScript.forEach_root(mInPixelsAllocation, mOutPixelsAllocation);
+        mOutPixelsAllocation.ioSendOutput();
+        mRS.finish();
+    }
+
+    public void benchmark(View v) {
+        filter();
+        long t = java.lang.System.currentTimeMillis();
+        filter();
+        t = java.lang.System.currentTimeMillis() - t;
+        mDisplayView.invalidate();
+        mBenchmarkResult.setText("Result: " + t + " ms");
+    }
+
+
+    @Override
+    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
+        mOutPixelsAllocation.setSurfaceTexture(surface);
+        filter();
+    }
+
+    @Override
+    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
+        mOutPixelsAllocation.setSurfaceTexture(surface);
+    }
+
+    @Override
+    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
+        mOutPixelsAllocation.setSurfaceTexture(null);
+        return true;
+    }
+
+    @Override
+    public void onSurfaceTextureUpdated(SurfaceTexture surface) {
+    }
+}
diff --git a/samples/RenderScript/Levels/src/com/android/rs/levels/levels.rs b/samples/RenderScript/Levels/src/com/android/rs/levels/levels.rs
new file mode 100644
index 0000000..eecb4f1
--- /dev/null
+++ b/samples/RenderScript/Levels/src/com/android/rs/levels/levels.rs
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+#pragma version(1)
+#pragma rs java_package_name(com.android.rs.levels)
+
+float inBlack;
+float outBlack;
+float inWMinInB;
+float outWMinOutB;
+float overInWMinInB;
+float gamma;
+rs_matrix3x3 colorMat;
+
+void root(const uchar4 *in, uchar4 *out, uint32_t x, uint32_t y) {
+    float3 pixel = convert_float4(in[0]).rgb;
+    pixel = rsMatrixMultiply(&colorMat, pixel);
+    pixel = clamp(pixel, 0.f, 255.f);
+    pixel = (pixel - inBlack) * overInWMinInB;
+    if (gamma != 1.0f)
+        pixel = pow(pixel, (float3)gamma);
+    pixel = pixel * outWMinOutB + outBlack;
+    pixel = clamp(pixel, 0.f, 255.f);
+    out->xyz = convert_uchar3(pixel);
+    out->w = 0xff;
+}
+
diff --git a/samples/RenderScript/MiscSamples/Android.mk b/samples/RenderScript/MiscSamples/Android.mk
deleted file mode 100644
index 6b8b691..0000000
--- a/samples/RenderScript/MiscSamples/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2008 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_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-files-under, src)
-
-LOCAL_PACKAGE_NAME := RsMiscSamples
-
-LOCAL_SDK_VERSION := current
-
-include $(BUILD_PACKAGE)
diff --git a/samples/RenderScript/MiscSamples/AndroidManifest.xml b/samples/RenderScript/MiscSamples/AndroidManifest.xml
deleted file mode 100644
index 08a3976..0000000
--- a/samples/RenderScript/MiscSamples/AndroidManifest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.rs.miscsamples">
-    <uses-sdk android:minSdkVersion="11" />
-    <application android:label="RsMiscSamples"
-    android:icon="@drawable/test_pattern">
-        <activity android:name="RsList"
-                  android:label="RsList"
-                  android:theme="@android:style/Theme.Black.NoTitleBar">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-        
-        <activity android:name="RsRenderStates"
-                  android:label="RsStates"
-                  android:theme="@android:style/Theme.Black.NoTitleBar">
-            <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/RenderScript/MiscSamples/_index.html b/samples/RenderScript/MiscSamples/_index.html
deleted file mode 100644
index 5872431..0000000
--- a/samples/RenderScript/MiscSamples/_index.html
+++ /dev/null
@@ -1 +0,0 @@
-<p>A set of samples that demonstrate how to use various features of the Renderscript APIs.</p>
\ No newline at end of file
diff --git a/samples/RenderScript/MiscSamples/res/drawable/checker.png b/samples/RenderScript/MiscSamples/res/drawable/checker.png
deleted file mode 100644
index b631e1e..0000000
--- a/samples/RenderScript/MiscSamples/res/drawable/checker.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/res/drawable/cubemap_test.png b/samples/RenderScript/MiscSamples/res/drawable/cubemap_test.png
deleted file mode 100644
index baf35d0..0000000
--- a/samples/RenderScript/MiscSamples/res/drawable/cubemap_test.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/res/drawable/data.png b/samples/RenderScript/MiscSamples/res/drawable/data.png
deleted file mode 100644
index 8e34714..0000000
--- a/samples/RenderScript/MiscSamples/res/drawable/data.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/res/drawable/leaf.png b/samples/RenderScript/MiscSamples/res/drawable/leaf.png
deleted file mode 100644
index 3cd3775..0000000
--- a/samples/RenderScript/MiscSamples/res/drawable/leaf.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/res/drawable/test_pattern.png b/samples/RenderScript/MiscSamples/res/drawable/test_pattern.png
deleted file mode 100644
index e7d1455..0000000
--- a/samples/RenderScript/MiscSamples/res/drawable/test_pattern.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/res/drawable/torusmap.png b/samples/RenderScript/MiscSamples/res/drawable/torusmap.png
deleted file mode 100644
index 1e08f3b..0000000
--- a/samples/RenderScript/MiscSamples/res/drawable/torusmap.png
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/res/raw/multitexf.glsl b/samples/RenderScript/MiscSamples/res/raw/multitexf.glsl
deleted file mode 100644
index e492a47..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/multitexf.glsl
+++ /dev/null
@@ -1,13 +0,0 @@
-varying vec2 varTex0;
-
-void main() {
-   vec2 t0 = varTex0.xy;
-   lowp vec4 col0 = texture2D(UNI_Tex0, t0).rgba;
-   lowp vec4 col1 = texture2D(UNI_Tex1, t0*4.0).rgba;
-   lowp vec4 col2 = texture2D(UNI_Tex2, t0).rgba;
-   col0.xyz = col0.xyz*col1.xyz*1.5;
-   col0.xyz = mix(col0.xyz, col2.xyz, col2.w);
-   col0.w = 0.5;
-   gl_FragColor = col0;
-}
-
diff --git a/samples/RenderScript/MiscSamples/res/raw/shader2f.glsl b/samples/RenderScript/MiscSamples/res/raw/shader2f.glsl
deleted file mode 100644
index 5fc05f1..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shader2f.glsl
+++ /dev/null
@@ -1,29 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-void main() {
-
-   vec3 V = normalize(-varWorldPos.xyz);
-   vec3 worldNorm = normalize(varWorldNormal);
-
-   vec3 light0Vec = normalize(UNI_light0_Posision.xyz - varWorldPos);
-   vec3 light0R = -reflect(light0Vec, worldNorm);
-   float light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse;
-   float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
-   float light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular;
-
-   vec3 light1Vec = normalize(UNI_light1_Posision.xyz - varWorldPos);
-   vec3 light1R = reflect(light1Vec, worldNorm);
-   float light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse;
-   float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
-   float light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular;
-
-   vec2 t0 = varTex0.xy;
-   lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
-   col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz);
-   col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz;
-   col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz;
-   gl_FragColor = col;
-}
-
diff --git a/samples/RenderScript/MiscSamples/res/raw/shader2movev.glsl b/samples/RenderScript/MiscSamples/res/raw/shader2movev.glsl
deleted file mode 100644
index a2c807e..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shader2movev.glsl
+++ /dev/null
@@ -1,21 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
-   vec4 objPos = ATTRIB_position;
-   vec3 oldPos = objPos.xyz;
-   objPos.xyz += 0.1*sin(objPos.xyz*2.0 + UNI_time);
-   objPos.xyz += 0.05*sin(objPos.xyz*4.0 + UNI_time*0.5);
-   objPos.xyz += 0.02*sin(objPos.xyz*7.0 + UNI_time*0.75);
-   vec4 worldPos = UNI_model * objPos;
-   gl_Position = UNI_proj * worldPos;
-
-   mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
-   vec3 worldNorm = model3 * (ATTRIB_normal + oldPos - objPos.xyz);
-
-   varWorldPos = worldPos.xyz;
-   varWorldNormal = worldNorm;
-   varTex0 = ATTRIB_texture0;
-}
diff --git a/samples/RenderScript/MiscSamples/res/raw/shader2v.glsl b/samples/RenderScript/MiscSamples/res/raw/shader2v.glsl
deleted file mode 100644
index e6885a3..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shader2v.glsl
+++ /dev/null
@@ -1,17 +0,0 @@
-varying vec3 varWorldPos;
-varying vec3 varWorldNormal;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
-   vec4 objPos = ATTRIB_position;
-   vec4 worldPos = UNI_model * objPos;
-   gl_Position = UNI_proj * worldPos;
-
-   mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
-   vec3 worldNorm = model3 * ATTRIB_normal;
-
-   varWorldPos = worldPos.xyz;
-   varWorldNormal = worldNorm;
-   varTex0 = ATTRIB_texture0;
-}
diff --git a/samples/RenderScript/MiscSamples/res/raw/shaderarrayf.glsl b/samples/RenderScript/MiscSamples/res/raw/shaderarrayf.glsl
deleted file mode 100644
index 238ecad..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shaderarrayf.glsl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-varying lowp float light0_Diffuse;
-varying lowp float light0_Specular;
-varying lowp float light1_Diffuse;
-varying lowp float light1_Specular;
-varying vec2 varTex0;
-
-void main() {
-   vec2 t0 = varTex0.xy;
-   lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
-   col.xyz = col.xyz * (light0_Diffuse * UNI_light_DiffuseColor[0].xyz + light1_Diffuse * UNI_light_DiffuseColor[1].xyz);
-   col.xyz += light0_Specular * UNI_light_SpecularColor[0].xyz;
-   col.xyz += light1_Specular * UNI_light_SpecularColor[1].xyz;
-   gl_FragColor = col;
-}
-
diff --git a/samples/RenderScript/MiscSamples/res/raw/shaderarrayv.glsl b/samples/RenderScript/MiscSamples/res/raw/shaderarrayv.glsl
deleted file mode 100644
index 7a1310a..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shaderarrayv.glsl
+++ /dev/null
@@ -1,32 +0,0 @@
-varying float light0_Diffuse;
-varying float light0_Specular;
-varying float light1_Diffuse;
-varying float light1_Specular;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
-   vec4 worldPos = UNI_model[0] * ATTRIB_position;
-   worldPos = UNI_model[1] * worldPos;
-   gl_Position = UNI_proj * worldPos;
-
-   mat4 model0 = UNI_model[0];
-   mat3 model3 = mat3(model0[0].xyz, model0[1].xyz, model0[2].xyz);
-   vec3 worldNorm = model3 * ATTRIB_normal;
-   vec3 V = normalize(-worldPos.xyz);
-
-   vec3 light0Vec = normalize(UNI_light_Posision[0].xyz - worldPos.xyz);
-   vec3 light0R = -reflect(light0Vec, worldNorm);
-   light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light_Diffuse[0];
-   float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
-   light0_Specular = pow(light0Spec, UNI_light_CosinePower[0]) * UNI_light_Specular[0];
-
-   vec3 light1Vec = normalize(UNI_light_Posision[1].xyz - worldPos.xyz);
-   vec3 light1R = reflect(light1Vec, worldNorm);
-   light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light_Diffuse[1];
-   float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
-   light1_Specular = pow(light1Spec, UNI_light_CosinePower[1]) * UNI_light_Specular[1];
-
-   gl_PointSize = 1.0;
-   varTex0 = ATTRIB_texture0;
-}
diff --git a/samples/RenderScript/MiscSamples/res/raw/shadercubef.glsl b/samples/RenderScript/MiscSamples/res/raw/shadercubef.glsl
deleted file mode 100644
index 15696a4..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shadercubef.glsl
+++ /dev/null
@@ -1,8 +0,0 @@
-
-varying vec3 worldNormal;
-
-void main() {
-   lowp vec4 col = textureCube(UNI_Tex0, worldNormal);
-   gl_FragColor = col;
-}
-
diff --git a/samples/RenderScript/MiscSamples/res/raw/shadercubev.glsl b/samples/RenderScript/MiscSamples/res/raw/shadercubev.glsl
deleted file mode 100644
index 70f5cd6..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shadercubev.glsl
+++ /dev/null
@@ -1,10 +0,0 @@
-varying vec3 worldNormal;
-
-// This is where actual shader code begins
-void main() {
-   vec4 worldPos = UNI_model * ATTRIB_position;
-   gl_Position = UNI_proj * worldPos;
-
-   mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
-   worldNormal = model3 * ATTRIB_normal;
-}
diff --git a/samples/RenderScript/MiscSamples/res/raw/shaderf.glsl b/samples/RenderScript/MiscSamples/res/raw/shaderf.glsl
deleted file mode 100644
index d56e203..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shaderf.glsl
+++ /dev/null
@@ -1,16 +0,0 @@
-
-varying lowp float light0_Diffuse;
-varying lowp float light0_Specular;
-varying lowp float light1_Diffuse;
-varying lowp float light1_Specular;
-varying vec2 varTex0;
-
-void main() {
-   vec2 t0 = varTex0.xy;
-   lowp vec4 col = texture2D(UNI_Tex0, t0).rgba;
-   col.xyz = col.xyz * (light0_Diffuse * UNI_light0_DiffuseColor.xyz + light1_Diffuse * UNI_light1_DiffuseColor.xyz);
-   col.xyz += light0_Specular * UNI_light0_SpecularColor.xyz;
-   col.xyz += light1_Specular * UNI_light1_SpecularColor.xyz;
-   gl_FragColor = col;
-}
-
diff --git a/samples/RenderScript/MiscSamples/res/raw/shaderv.glsl b/samples/RenderScript/MiscSamples/res/raw/shaderv.glsl
deleted file mode 100644
index f7d01de..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/shaderv.glsl
+++ /dev/null
@@ -1,30 +0,0 @@
-varying float light0_Diffuse;
-varying float light0_Specular;
-varying float light1_Diffuse;
-varying float light1_Specular;
-varying vec2 varTex0;
-
-// This is where actual shader code begins
-void main() {
-   vec4 worldPos = UNI_model * ATTRIB_position;
-   gl_Position = UNI_proj * worldPos;
-
-   mat3 model3 = mat3(UNI_model[0].xyz, UNI_model[1].xyz, UNI_model[2].xyz);
-   vec3 worldNorm = model3 * ATTRIB_normal;
-   vec3 V = normalize(-worldPos.xyz);
-
-   vec3 light0Vec = normalize(UNI_light0_Posision.xyz - worldPos.xyz);
-   vec3 light0R = -reflect(light0Vec, worldNorm);
-   light0_Diffuse = clamp(dot(worldNorm, light0Vec), 0.0, 1.0) * UNI_light0_Diffuse;
-   float light0Spec = clamp(dot(light0R, V), 0.001, 1.0);
-   light0_Specular = pow(light0Spec, UNI_light0_CosinePower) * UNI_light0_Specular;
-
-   vec3 light1Vec = normalize(UNI_light1_Posision.xyz - worldPos.xyz);
-   vec3 light1R = reflect(light1Vec, worldNorm);
-   light1_Diffuse = clamp(dot(worldNorm, light1Vec), 0.0, 1.0) * UNI_light1_Diffuse;
-   float light1Spec = clamp(dot(light1R, V), 0.001, 1.0);
-   light1_Specular = pow(light1Spec, UNI_light1_CosinePower) * UNI_light1_Specular;
-
-   gl_PointSize = 1.0;
-   varTex0 = ATTRIB_texture0;
-}
diff --git a/samples/RenderScript/MiscSamples/res/raw/torus.a3d b/samples/RenderScript/MiscSamples/res/raw/torus.a3d
deleted file mode 100644
index 0322b01..0000000
--- a/samples/RenderScript/MiscSamples/res/raw/torus.a3d
+++ /dev/null
Binary files differ
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java
deleted file mode 100644
index dade3b3..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsList.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.miscsamples;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class RsList extends Activity {
-
-    private RsListView mView;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        // Create our Preview view and set it as the content of our
-        // Activity
-        mView = new RsListView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity loses focus
-        super.onResume();
-        mView.resume();
-    }
-
-    @Override
-    protected void onPause() {
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity loses focus
-        super.onPause();
-        mView.pause();
-    }
-
-}
-
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java
deleted file mode 100644
index eeb2480..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsListRS.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.miscsamples;
-
-import java.io.Writer;
-import java.util.Vector;
-
-import android.content.res.Resources;
-import android.renderscript.*;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.util.Log;
-
-
-public class RsListRS {
-
-    private final int STATE_LAST_FOCUS = 1;
-
-    private static final String[] DATA_LIST = {
-    "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra",
-    "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda", "Argentina",
-    "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
-    "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium",
-    "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia",
-    "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
-    "British Indian Ocean Territory", "British Virgin Islands", "Brunei", "Bulgaria",
-    "Burkina Faso", "Burundi", "Cote d'Ivoire", "Cambodia", "Cameroon", "Canada", "Cape Verde",
-    "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
-    "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo",
-    "Cook Islands", "Costa Rica", "Croatia", "Cuba", "Cyprus", "Czech Republic",
-    "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
-    "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea",
-    "Estonia", "Ethiopia", "Faeroe Islands", "Falkland Islands", "Fiji", "Finland",
-    "Former Yugoslav Republic of Macedonia", "France", "French Guiana", "French Polynesia",
-    "French Southern Territories", "Gabon", "Georgia", "Germany", "Ghana", "Gibraltar",
-    "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau",
-    "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong", "Hungary",
-    "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica",
-    "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Laos",
-    "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
-    "Macau", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands",
-    "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
-    "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia",
-    "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand",
-    "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "Northern Marianas",
-    "Norway", "Oman", "Pakistan", "Palau", "Panama", "Papua New Guinea", "Paraguay", "Peru",
-    "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico", "Qatar",
-    "Reunion", "Romania", "Russia", "Rwanda", "Sqo Tome and Principe", "Saint Helena",
-    "Saint Kitts and Nevis", "Saint Lucia", "Saint Pierre and Miquelon",
-    "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Saudi Arabia", "Senegal",
-    "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
-    "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "South Korea",
-    "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden",
-    "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas",
-    "The Gambia", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey",
-    "Turkmenistan", "Turks and Caicos Islands", "Tuvalu", "Virgin Islands", "Uganda",
-    "Ukraine", "United Arab Emirates", "United Kingdom",
-    "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan",
-    "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Wallis and Futuna", "Western Sahara",
-    "Yemen", "Yugoslavia", "Zambia", "Zimbabwe"
-    };
-
-    public RsListRS() {
-    }
-
-    public void init(RenderScriptGL rs, Resources res) {
-        mRS = rs;
-        mRes = res;
-        initRS();
-    }
-
-    private Resources mRes;
-    private RenderScriptGL mRS;
-    private Font mItalic;
-
-    ScriptField_ListAllocs_s mListAllocs;
-
-    private ScriptC_rslist mScript;
-
-    int mLastX;
-    int mLastY;
-
-    public void onActionDown(int x, int y) {
-        mScript.set_gDY(0.0f);
-
-        mLastX = x;
-        mLastY = y;
-    }
-
-    public void onActionMove(int x, int y) {
-        int dx = mLastX - x;
-        int dy = mLastY - y;
-
-        if (Math.abs(dy) <= 2) {
-            dy = 0;
-        }
-
-        mScript.set_gDY(dy);
-
-        mLastX = x;
-        mLastY = y;
-    }
-
-    private void initRS() {
-
-        mScript = new ScriptC_rslist(mRS, mRes, R.raw.rslist);
-
-        mListAllocs = new ScriptField_ListAllocs_s(mRS, DATA_LIST.length);
-        for (int i = 0; i < DATA_LIST.length; i ++) {
-            ScriptField_ListAllocs_s.Item listElem = new ScriptField_ListAllocs_s.Item();
-            listElem.text = Allocation.createFromString(mRS, DATA_LIST[i], Allocation.USAGE_SCRIPT);
-            mListAllocs.set(listElem, i, false);
-        }
-
-        mListAllocs.copyAll();
-
-        mScript.bind_gList(mListAllocs);
-
-        mItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8);
-        mScript.set_gItalic(mItalic);
-
-        mRS.bindRootScript(mScript);
-    }
-}
-
-
-
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java
deleted file mode 100644
index db6e6c5..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsListView.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.miscsamples;
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-
-public class RsListView extends RSSurfaceView {
-
-    public RsListView(Context context) {
-        super(context);
-        ensureRenderScript();
-    }
-
-    private RenderScriptGL mRS;
-    private RsListRS mRender;
-
-    private void ensureRenderScript() {
-        if (mRS == null) {
-            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            mRS = createRenderScriptGL(sc);
-            mRender = new RsListRS();
-            mRender.init(mRS, getResources());
-        }
-    }
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        ensureRenderScript();
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        mRender = null;
-        if (mRS != null) {
-            mRS = null;
-            destroyRenderScriptGL();
-        }
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev)
-    {
-        boolean ret = false;
-        int act = ev.getAction();
-        if (act == MotionEvent.ACTION_DOWN) {
-            mRender.onActionDown((int)ev.getX(), (int)ev.getY());
-            ret = true;
-        } else if (act == MotionEvent.ACTION_MOVE) {
-            mRender.onActionMove((int)ev.getX(), (int)ev.getY());
-            ret = true;
-        }
-
-        return ret;
-    }
-}
-
-
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java
deleted file mode 100644
index f4ea76e..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStates.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.miscsamples;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class RsRenderStates extends Activity {
-
-    private RsRenderStatesView mView;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        // Create our Preview view and set it as the content of our
-        // Activity
-        mView = new RsRenderStatesView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onResume();
-        mView.resume();
-    }
-
-    @Override
-    protected void onPause() {
-        // Ideally a game should implement onResume() and onPause()
-        // to take appropriate action when the activity looses focus
-        super.onPause();
-        mView.pause();
-    }
-
-}
-
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java
deleted file mode 100644
index 0e319fe..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesRS.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.miscsamples;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.renderscript.*;
-import android.renderscript.Font.Style;
-import android.renderscript.Program.TextureType;
-import android.renderscript.ProgramStore.DepthFunc;
-import android.renderscript.ProgramStore.BlendSrcFunc;
-import android.renderscript.ProgramStore.BlendDstFunc;
-import android.renderscript.Sampler.Value;
-import android.util.Log;
-
-
-public class RsRenderStatesRS {
-
-    int mWidth;
-    int mHeight;
-
-    public RsRenderStatesRS() {
-    }
-
-    public void init(RenderScriptGL rs, Resources res) {
-        mRS = rs;
-        mWidth = mRS.getWidth();
-        mHeight = mRS.getHeight();
-        mRes = res;
-        mOptionsARGB.inScaled = false;
-        mOptionsARGB.inPreferredConfig = Bitmap.Config.ARGB_8888;
-        mMode = 0;
-        mMaxModes = 0;
-        initRS();
-    }
-
-    public void surfaceChanged() {
-        mWidth = mRS.getWidth();
-        mHeight = mRS.getHeight();
-
-        Matrix4f proj = new Matrix4f();
-        proj.loadOrthoWindow(mWidth, mHeight);
-        mPVA.setProjection(proj);
-    }
-
-    private Resources mRes;
-    private RenderScriptGL mRS;
-
-    private Sampler mLinearClamp;
-    private Sampler mLinearWrap;
-    private Sampler mMipLinearWrap;
-    private Sampler mNearestClamp;
-    private Sampler mMipLinearAniso8;
-    private Sampler mMipLinearAniso15;
-
-    private ProgramStore mProgStoreBlendNoneDepth;
-    private ProgramStore mProgStoreBlendNone;
-    private ProgramStore mProgStoreBlendAlpha;
-    private ProgramStore mProgStoreBlendAdd;
-
-    private ProgramFragment mProgFragmentTexture;
-    private ProgramFragment mProgFragmentColor;
-
-    private ProgramVertex mProgVertex;
-    private ProgramVertexFixedFunction.Constants mPVA;
-
-    // Custom shaders
-    private ProgramVertex mProgVertexCustom;
-    private ProgramFragment mProgFragmentCustom;
-    private ProgramFragment mProgFragmentMultitex;
-    private ScriptField_VertexShaderConstants_s mVSConst;
-    private ScriptField_VertexShaderConstants2_s mVSConst2;
-    private ScriptField_FragentShaderConstants_s mFSConst;
-    private ScriptField_FragentShaderConstants2_s mFSConst2;
-
-    private ProgramVertex mProgVertexCustom2;
-    private ProgramFragment mProgFragmentCustom2;
-
-    private ProgramVertex mProgVertexCube;
-    private ProgramFragment mProgFragmentCube;
-
-    private ProgramRaster mCullBack;
-    private ProgramRaster mCullFront;
-    private ProgramRaster mCullNone;
-
-    private Allocation mTexTorus;
-    private Allocation mTexOpaque;
-    private Allocation mTexTransparent;
-    private Allocation mTexChecker;
-    private Allocation mTexCube;
-
-    private Mesh mMbyNMesh;
-    private Mesh mTorus;
-
-    Font mFontSans;
-    Font mFontSerif;
-    Font mFontSerifBold;
-    Font mFontSerifItalic;
-    Font mFontSerifBoldItalic;
-    Font mFontMono;
-    private Allocation mTextAlloc;
-
-    private ScriptC_rsrenderstates mScript;
-
-    private final BitmapFactory.Options mOptionsARGB = new BitmapFactory.Options();
-
-    int mMode;
-    int mMaxModes;
-
-    public void onActionDown(int x, int y) {
-        mMode ++;
-        mMode = mMode % mMaxModes;
-        mScript.set_gDisplayMode(mMode);
-    }
-
-    ProgramStore BLEND_ADD_DEPTH_NONE(RenderScript rs) {
-        ProgramStore.Builder builder = new ProgramStore.Builder(rs);
-        builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
-        builder.setBlendFunc(BlendSrcFunc.ONE, BlendDstFunc.ONE);
-        builder.setDitherEnabled(false);
-        builder.setDepthMaskEnabled(false);
-        return builder.create();
-    }
-
-    private Mesh getMbyNMesh(float width, float height, int wResolution, int hResolution) {
-
-        Mesh.TriangleMeshBuilder tmb = new Mesh.TriangleMeshBuilder(mRS,
-                                           2, Mesh.TriangleMeshBuilder.TEXTURE_0);
-
-        for (int y = 0; y <= hResolution; y++) {
-            final float normalizedY = (float)y / hResolution;
-            final float yOffset = (normalizedY - 0.5f) * height;
-            for (int x = 0; x <= wResolution; x++) {
-                float normalizedX = (float)x / wResolution;
-                float xOffset = (normalizedX - 0.5f) * width;
-                tmb.setTexture(normalizedX, normalizedY);
-                tmb.addVertex(xOffset, yOffset);
-             }
-        }
-
-        for (int y = 0; y < hResolution; y++) {
-            final int curY = y * (wResolution + 1);
-            final int belowY = (y + 1) * (wResolution + 1);
-            for (int x = 0; x < wResolution; x++) {
-                int curV = curY + x;
-                int belowV = belowY + x;
-                tmb.addTriangle(curV, belowV, curV + 1);
-                tmb.addTriangle(belowV, belowV + 1, curV + 1);
-            }
-        }
-
-        return tmb.create(true);
-    }
-
-    private void initProgramStore() {
-        // Use stock the stock program store object
-        mProgStoreBlendNoneDepth = ProgramStore.BLEND_NONE_DEPTH_TEST(mRS);
-        mProgStoreBlendNone = ProgramStore.BLEND_NONE_DEPTH_NONE(mRS);
-
-        // Create a custom program store
-        ProgramStore.Builder builder = new ProgramStore.Builder(mRS);
-        builder.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
-        builder.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
-                             ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
-        builder.setDitherEnabled(false);
-        builder.setDepthMaskEnabled(false);
-        mProgStoreBlendAlpha = builder.create();
-
-        mProgStoreBlendAdd = BLEND_ADD_DEPTH_NONE(mRS);
-
-        mScript.set_gProgStoreBlendNoneDepth(mProgStoreBlendNoneDepth);
-        mScript.set_gProgStoreBlendNone(mProgStoreBlendNone);
-        mScript.set_gProgStoreBlendAlpha(mProgStoreBlendAlpha);
-        mScript.set_gProgStoreBlendAdd(mProgStoreBlendAdd);
-    }
-
-    private void initProgramFragment() {
-
-        ProgramFragmentFixedFunction.Builder texBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
-        texBuilder.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE,
-                              ProgramFragmentFixedFunction.Builder.Format.RGBA, 0);
-        mProgFragmentTexture = texBuilder.create();
-        mProgFragmentTexture.bindSampler(mLinearClamp, 0);
-
-        ProgramFragmentFixedFunction.Builder colBuilder = new ProgramFragmentFixedFunction.Builder(mRS);
-        colBuilder.setVaryingColor(false);
-        mProgFragmentColor = colBuilder.create();
-
-        mScript.set_gProgFragmentColor(mProgFragmentColor);
-        mScript.set_gProgFragmentTexture(mProgFragmentTexture);
-    }
-
-    private void initProgramVertex() {
-        ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS);
-        mProgVertex = pvb.create();
-
-        mPVA = new ProgramVertexFixedFunction.Constants(mRS);
-        ((ProgramVertexFixedFunction)mProgVertex).bindConstants(mPVA);
-        Matrix4f proj = new Matrix4f();
-        proj.loadOrthoWindow(mWidth, mHeight);
-        mPVA.setProjection(proj);
-
-        mScript.set_gProgVertex(mProgVertex);
-    }
-
-    private void initCustomShaders() {
-        mVSConst = new ScriptField_VertexShaderConstants_s(mRS, 1);
-        mVSConst2 = new ScriptField_VertexShaderConstants2_s(mRS, 1);
-        mFSConst = new ScriptField_FragentShaderConstants_s(mRS, 1);
-        mFSConst2 = new ScriptField_FragentShaderConstants2_s(mRS, 1);
-
-        mScript.bind_gVSConstants(mVSConst);
-        mScript.bind_gVSConstants2(mVSConst2);
-        mScript.bind_gFSConstants(mFSConst);
-        mScript.bind_gFSConstants2(mFSConst2);
-
-        // Initialize the shader builder
-        ProgramVertex.Builder pvbCustom = new ProgramVertex.Builder(mRS);
-        // Specify the resource that contains the shader string
-        pvbCustom.setShader(mRes, R.raw.shaderv);
-        // Use a script field to spcify the input layout
-        pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
-        // Define the constant input layout
-        pvbCustom.addConstant(mVSConst.getAllocation().getType());
-        mProgVertexCustom = pvbCustom.create();
-        // Bind the source of constant data
-        mProgVertexCustom.bindConstants(mVSConst.getAllocation(), 0);
-
-        ProgramFragment.Builder pfbCustom = new ProgramFragment.Builder(mRS);
-        // Specify the resource that contains the shader string
-        pfbCustom.setShader(mRes, R.raw.shaderf);
-        //Tell the builder how many textures we have
-        pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
-        // Define the constant input layout
-        pfbCustom.addConstant(mFSConst.getAllocation().getType());
-        mProgFragmentCustom = pfbCustom.create();
-        // Bind the source of constant data
-        mProgFragmentCustom.bindConstants(mFSConst.getAllocation(), 0);
-
-        pvbCustom = new ProgramVertex.Builder(mRS);
-        pvbCustom.setShader(mRes, R.raw.shaderarrayv);
-        pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
-        pvbCustom.addConstant(mVSConst2.getAllocation().getType());
-        mProgVertexCustom2 = pvbCustom.create();
-        mProgVertexCustom2.bindConstants(mVSConst2.getAllocation(), 0);
-
-        pfbCustom = new ProgramFragment.Builder(mRS);
-        pfbCustom.setShader(mRes, R.raw.shaderarrayf);
-        pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
-        pfbCustom.addConstant(mFSConst2.getAllocation().getType());
-        mProgFragmentCustom2 = pfbCustom.create();
-        mProgFragmentCustom2.bindConstants(mFSConst2.getAllocation(), 0);
-
-        // Cubemap test shaders
-        pvbCustom = new ProgramVertex.Builder(mRS);
-        pvbCustom.setShader(mRes, R.raw.shadercubev);
-        pvbCustom.addInput(ScriptField_VertexShaderInputs_s.createElement(mRS));
-        pvbCustom.addConstant(mVSConst.getAllocation().getType());
-        mProgVertexCube = pvbCustom.create();
-        mProgVertexCube.bindConstants(mVSConst.getAllocation(), 0);
-
-        pfbCustom = new ProgramFragment.Builder(mRS);
-        pfbCustom.setShader(mRes, R.raw.shadercubef);
-        pfbCustom.addTexture(Program.TextureType.TEXTURE_CUBE);
-        mProgFragmentCube = pfbCustom.create();
-
-        pfbCustom = new ProgramFragment.Builder(mRS);
-        pfbCustom.setShader(mRes, R.raw.multitexf);
-        for (int texCount = 0; texCount < 3; texCount ++) {
-            pfbCustom.addTexture(Program.TextureType.TEXTURE_2D);
-        }
-        mProgFragmentMultitex = pfbCustom.create();
-
-        mScript.set_gProgVertexCustom(mProgVertexCustom);
-        mScript.set_gProgFragmentCustom(mProgFragmentCustom);
-        mScript.set_gProgVertexCustom2(mProgVertexCustom2);
-        mScript.set_gProgFragmentCustom2(mProgFragmentCustom2);
-        mScript.set_gProgVertexCube(mProgVertexCube);
-        mScript.set_gProgFragmentCube(mProgFragmentCube);
-        mScript.set_gProgFragmentMultitex(mProgFragmentMultitex);
-    }
-
-    private Allocation loadTextureRGB(int id) {
-        return Allocation.createFromBitmapResource(mRS, mRes, id,
-                                                   Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
-                                                   Allocation.USAGE_GRAPHICS_TEXTURE);
-    }
-
-    private Allocation loadTextureARGB(int id) {
-        Bitmap b = BitmapFactory.decodeResource(mRes, id, mOptionsARGB);
-        return Allocation.createFromBitmap(mRS, b,
-                                           Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE,
-                                           Allocation.USAGE_GRAPHICS_TEXTURE);
-    }
-
-    private void loadImages() {
-        mTexTorus = loadTextureRGB(R.drawable.torusmap);
-        mTexOpaque = loadTextureRGB(R.drawable.data);
-        mTexTransparent = loadTextureARGB(R.drawable.leaf);
-        mTexChecker = loadTextureRGB(R.drawable.checker);
-        Bitmap b = BitmapFactory.decodeResource(mRes, R.drawable.cubemap_test);
-        mTexCube = Allocation.createCubemapFromBitmap(mRS, b);
-
-        mScript.set_gTexTorus(mTexTorus);
-        mScript.set_gTexOpaque(mTexOpaque);
-        mScript.set_gTexTransparent(mTexTransparent);
-        mScript.set_gTexChecker(mTexChecker);
-        mScript.set_gTexCube(mTexCube);
-    }
-
-    private void initFonts() {
-        // Sans font by family name
-        mFontSans = Font.create(mRS, mRes, "sans-serif", Font.Style.NORMAL, 8);
-        mFontSerif = Font.create(mRS, mRes, "serif", Font.Style.NORMAL, 8);
-        // Create fonts by family and style
-        mFontSerifBold = Font.create(mRS, mRes, "serif", Font.Style.BOLD, 8);
-        mFontSerifItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8);
-        mFontSerifBoldItalic = Font.create(mRS, mRes, "serif", Font.Style.BOLD_ITALIC, 8);
-        mFontMono = Font.create(mRS, mRes, "mono", Font.Style.NORMAL, 8);
-
-        mTextAlloc = Allocation.createFromString(mRS, "String from allocation", Allocation.USAGE_SCRIPT);
-
-        mScript.set_gFontSans(mFontSans);
-        mScript.set_gFontSerif(mFontSerif);
-        mScript.set_gFontSerifBold(mFontSerifBold);
-        mScript.set_gFontSerifItalic(mFontSerifItalic);
-        mScript.set_gFontSerifBoldItalic(mFontSerifBoldItalic);
-        mScript.set_gFontMono(mFontMono);
-        mScript.set_gTextAlloc(mTextAlloc);
-    }
-
-    private void initMesh() {
-        mMbyNMesh = getMbyNMesh(256, 256, 10, 10);
-        mScript.set_gMbyNMesh(mMbyNMesh);
-
-        FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.torus);
-        FileA3D.IndexEntry entry = model.getIndexEntry(0);
-        if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) {
-            Log.e("rs", "could not load model");
-        } else {
-            mTorus = (Mesh)entry.getObject();
-            mScript.set_gTorusMesh(mTorus);
-        }
-    }
-
-    private void initSamplers() {
-        Sampler.Builder bs = new Sampler.Builder(mRS);
-        bs.setMinification(Sampler.Value.LINEAR);
-        bs.setMagnification(Sampler.Value.LINEAR);
-        bs.setWrapS(Sampler.Value.WRAP);
-        bs.setWrapT(Sampler.Value.WRAP);
-        mLinearWrap = bs.create();
-
-        mLinearClamp = Sampler.CLAMP_LINEAR(mRS);
-        mNearestClamp = Sampler.CLAMP_NEAREST(mRS);
-        mMipLinearWrap = Sampler.WRAP_LINEAR_MIP_LINEAR(mRS);
-
-        bs = new Sampler.Builder(mRS);
-        bs.setMinification(Sampler.Value.LINEAR_MIP_LINEAR);
-        bs.setMagnification(Sampler.Value.LINEAR);
-        bs.setWrapS(Sampler.Value.WRAP);
-        bs.setWrapT(Sampler.Value.WRAP);
-        bs.setAnisotropy(8.0f);
-        mMipLinearAniso8 = bs.create();
-        bs.setAnisotropy(15.0f);
-        mMipLinearAniso15 = bs.create();
-
-        mScript.set_gLinearClamp(mLinearClamp);
-        mScript.set_gLinearWrap(mLinearWrap);
-        mScript.set_gMipLinearWrap(mMipLinearWrap);
-        mScript.set_gMipLinearAniso8(mMipLinearAniso8);
-        mScript.set_gMipLinearAniso15(mMipLinearAniso15);
-        mScript.set_gNearestClamp(mNearestClamp);
-    }
-
-    private void initProgramRaster() {
-        mCullBack = ProgramRaster.CULL_BACK(mRS);
-        mCullFront = ProgramRaster.CULL_FRONT(mRS);
-        mCullNone = ProgramRaster.CULL_NONE(mRS);
-
-        mScript.set_gCullBack(mCullBack);
-        mScript.set_gCullFront(mCullFront);
-        mScript.set_gCullNone(mCullNone);
-    }
-
-    private void initRS() {
-
-        mScript = new ScriptC_rsrenderstates(mRS, mRes, R.raw.rsrenderstates);
-
-        mMaxModes = mScript.get_gMaxModes();
-
-        initSamplers();
-        initProgramStore();
-        initProgramFragment();
-        initProgramVertex();
-        initFonts();
-        loadImages();
-        initMesh();
-        initProgramRaster();
-        initCustomShaders();
-
-        mRS.bindRootScript(mScript);
-    }
-}
-
-
-
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java
deleted file mode 100644
index a15e38f..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/RsRenderStatesView.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2008 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.rs.miscsamples;
-
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScriptGL;
-
-import android.content.Context;
-import android.view.MotionEvent;
-import android.view.SurfaceHolder;
-
-public class RsRenderStatesView extends RSSurfaceView {
-
-    public RsRenderStatesView(Context context) {
-        super(context);
-        ensureRenderScript();
-    }
-
-    private RenderScriptGL mRS;
-    private RsRenderStatesRS mRender;
-
-    private void ensureRenderScript() {
-        if (mRS == null) {
-            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
-            sc.setDepth(16, 24);
-            mRS = createRenderScriptGL(sc);
-            mRender = new RsRenderStatesRS();
-            mRender.init(mRS, getResources());
-        }
-    }
-
-    @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        ensureRenderScript();
-    }
-
-    @Override
-    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
-        super.surfaceChanged(holder, format, w, h);
-        mRender.surfaceChanged();
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        mRender = null;
-        if (mRS != null) {
-            mRS = null;
-            destroyRenderScriptGL();
-        }
-    }
-
-    @Override
-    public boolean onTouchEvent(MotionEvent ev) {
-        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
-            mRender.onActionDown((int)ev.getX(), (int)ev.getY());
-            return true;
-        }
-
-        return false;
-    }
-}
-
-
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs
deleted file mode 100644
index d9d450d..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/rslist.rs
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (C) 2009 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 version(1)
-
-#pragma rs java_package_name(com.example.android.rs.miscsamples)
-
-#include "rs_graphics.rsh"
-
-float gDY;
-
-rs_font gItalic;
-
-typedef struct ListAllocs_s {
-    rs_allocation text;
-} ListAllocs;
-
-ListAllocs *gList;
-
-void init() {
-    gDY = 0.0f;
-}
-
-int textPos = 0;
-
-int root(void) {
-
-    rsgClearColor(0.0f, 0.0f, 0.0f, 0.0f);
-
-    textPos -= (int)gDY*2;
-    gDY *= 0.95;
-
-    rsgFontColor(0.9f, 0.9f, 0.9f, 1.0f);
-    rsgBindFont(gItalic);
-
-    rs_allocation listAlloc;
-    listAlloc = rsGetAllocation(gList);
-    int allocSize = rsAllocationGetDimX(listAlloc);
-
-    int width = rsgGetWidth();
-    int height = rsgGetHeight();
-
-    int itemHeight = 80;
-    int currentYPos = itemHeight + textPos;
-
-    for (int i = 0; i < allocSize; i ++) {
-        if (currentYPos - itemHeight > height) {
-            break;
-        }
-
-        if (currentYPos > 0) {
-            rsgDrawRect(0, currentYPos - 1, width, currentYPos, 0);
-            rsgDrawText(gList[i].text, 30, currentYPos - 32);
-        }
-        currentYPos += itemHeight;
-    }
-
-    return 10;
-}
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs
deleted file mode 100644
index 5dabd00..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/rsrenderstates.rs
+++ /dev/null
@@ -1,680 +0,0 @@
-// Copyright (C) 2009 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 version(1)
-
-#pragma rs java_package_name(com.example.android.rs.miscsamples)
-
-#include "rs_graphics.rsh"
-#include "shader_def.rsh"
-
-const int gMaxModes = 11;
-
-rs_program_vertex gProgVertex;
-rs_program_fragment gProgFragmentColor;
-rs_program_fragment gProgFragmentTexture;
-
-rs_program_store gProgStoreBlendNoneDepth;
-rs_program_store gProgStoreBlendNone;
-rs_program_store gProgStoreBlendAlpha;
-rs_program_store gProgStoreBlendAdd;
-
-rs_allocation gTexOpaque;
-rs_allocation gTexTorus;
-rs_allocation gTexTransparent;
-rs_allocation gTexChecker;
-rs_allocation gTexCube;
-
-rs_mesh gMbyNMesh;
-rs_mesh gTorusMesh;
-
-rs_font gFontSans;
-rs_font gFontSerif;
-rs_font gFontSerifBold;
-rs_font gFontSerifItalic;
-rs_font gFontSerifBoldItalic;
-rs_font gFontMono;
-rs_allocation gTextAlloc;
-
-int gDisplayMode;
-
-rs_sampler gLinearClamp;
-rs_sampler gLinearWrap;
-rs_sampler gMipLinearWrap;
-rs_sampler gMipLinearAniso8;
-rs_sampler gMipLinearAniso15;
-rs_sampler gNearestClamp;
-
-rs_program_raster gCullBack;
-rs_program_raster gCullFront;
-rs_program_raster gCullNone;
-
-// Custom vertex shader compunents
-VertexShaderConstants *gVSConstants;
-VertexShaderConstants2 *gVSConstants2;
-FragentShaderConstants *gFSConstants;
-FragentShaderConstants2 *gFSConstants2;
-// Export these out to easily set the inputs to shader
-VertexShaderInputs *gVSInputs;
-// Custom shaders we use for lighting
-rs_program_vertex gProgVertexCustom;
-rs_program_fragment gProgFragmentCustom;
-rs_program_vertex gProgVertexCustom2;
-rs_program_fragment gProgFragmentCustom2;
-rs_program_vertex gProgVertexCube;
-rs_program_fragment gProgFragmentCube;
-rs_program_fragment gProgFragmentMultitex;
-
-float gDt = 0;
-
-void init() {
-}
-
-static void displayFontSamples() {
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    int yPos = 100;
-    rsgBindFont(gFontSans);
-    rsgDrawText("Sans font sample", 30, yPos);
-    yPos += 30;
-    rsgFontColor(0.5f, 0.9f, 0.5f, 1.0f);
-    rsgBindFont(gFontSerif);
-    rsgDrawText("Serif font sample", 30, yPos);
-    yPos += 30;
-    rsgFontColor(0.7f, 0.7f, 0.7f, 1.0f);
-    rsgBindFont(gFontSerifBold);
-    rsgDrawText("Serif Bold font sample", 30, yPos);
-    yPos += 30;
-    rsgFontColor(0.5f, 0.5f, 0.9f, 1.0f);
-    rsgBindFont(gFontSerifItalic);
-    rsgDrawText("Serif Italic font sample", 30, yPos);
-    yPos += 30;
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontSerifBoldItalic);
-    rsgDrawText("Serif Bold Italic font sample", 30, yPos);
-    yPos += 30;
-    rsgBindFont(gFontMono);
-    rsgDrawText("Monospace font sample", 30, yPos);
-    yPos += 50;
-
-    // Now use text metrics to center the text
-    uint width = rsgGetWidth();
-    uint height = rsgGetHeight();
-    int left = 0, right = 0, top = 0, bottom = 0;
-
-    rsgFontColor(0.9f, 0.9f, 0.95f, 1.0f);
-    rsgBindFont(gFontSerifBoldItalic);
-
-    rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom);
-    int centeredPos = width / 2 - (right - left) / 2;
-    rsgDrawText(gTextAlloc, centeredPos, yPos);
-    yPos += 30;
-
-    const char* text = "Centered Text Sample";
-    rsgMeasureText(text, &left, &right, &top, &bottom);
-    centeredPos = width / 2 - (right - left) / 2;
-    rsgDrawText(text, centeredPos, yPos);
-    yPos += 30;
-
-    rsgBindFont(gFontSans);
-    text = "More Centered Text Samples";
-    rsgMeasureText(text, &left, &right, &top, &bottom);
-    centeredPos = width / 2 - (right - left) / 2;
-    rsgDrawText(text, centeredPos, yPos);
-    yPos += 30;
-
-    // Now draw bottom and top right aligned text
-    text = "Top-right aligned text";
-    rsgMeasureText(text, &left, &right, &top, &bottom);
-    rsgDrawText(text, width - right, top);
-
-    text = "Top-left";
-    rsgMeasureText(text, &left, &right, &top, &bottom);
-    rsgDrawText(text, -left, top);
-
-    text = "Bottom-right aligned text";
-    rsgMeasureText(text, &left, &right, &top, &bottom);
-    rsgDrawText(text, width - right, height + bottom);
-
-}
-
-static void bindProgramVertexOrtho() {
-    // Default vertex sahder
-    rsgBindProgramVertex(gProgVertex);
-    // Setup the projectioni matrix
-    rs_matrix4x4 proj;
-    rsMatrixLoadOrtho(&proj, 0, rsgGetWidth(), rsgGetHeight(), 0, -500, 500);
-    rsgProgramVertexLoadProjectionMatrix(&proj);
-}
-
-static void displayShaderSamples() {
-    bindProgramVertexOrtho();
-    rs_matrix4x4 matrix;
-    rsMatrixLoadIdentity(&matrix);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNone);
-    rsgBindProgramFragment(gProgFragmentTexture);
-    rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-    rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
-    float startX = 0, startY = 0;
-    float width = 256, height = 256;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1,
-                         startX + width, startY + height, 0, 1, 1,
-                         startX + width, startY, 0, 1, 0);
-
-    startX = 200; startY = 0;
-    width = 128; height = 128;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1,
-                         startX + width, startY + height, 0, 1, 1,
-                         startX + width, startY, 0, 1, 0);
-
-    rsgBindProgramStore(gProgStoreBlendAlpha);
-    rsgBindTexture(gProgFragmentTexture, 0, gTexTransparent);
-    startX = 0; startY = 200;
-    width = 128; height = 128;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1,
-                         startX + width, startY + height, 0, 1, 1,
-                         startX + width, startY, 0, 1, 0);
-
-    // Fragment program with simple color
-    rsgBindProgramFragment(gProgFragmentColor);
-    rsgProgramFragmentConstantColor(gProgFragmentColor, 0.9, 0.3, 0.3, 1);
-    rsgDrawRect(200, 300, 350, 450, 0);
-    rsgProgramFragmentConstantColor(gProgFragmentColor, 0.3, 0.9, 0.3, 1);
-    rsgDrawRect(50, 400, 400, 600, 0);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Texture shader", 10, 50);
-    rsgDrawText("Alpha-blended texture shader", 10, 280);
-    rsgDrawText("Flat color shader", 100, 450);
-}
-
-static void displayBlendingSamples() {
-    int i;
-
-    bindProgramVertexOrtho();
-    rs_matrix4x4 matrix;
-    rsMatrixLoadIdentity(&matrix);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-
-    rsgBindProgramFragment(gProgFragmentColor);
-
-    rsgBindProgramStore(gProgStoreBlendNone);
-    for (i = 0; i < 3; i ++) {
-        float iPlusOne = (float)(i + 1);
-        rsgProgramFragmentConstantColor(gProgFragmentColor,
-                                        0.1f*iPlusOne, 0.2f*iPlusOne, 0.3f*iPlusOne, 1);
-        float yPos = 150 * (float)i;
-        rsgDrawRect(0, yPos, 200, yPos + 200, 0);
-    }
-
-    rsgBindProgramStore(gProgStoreBlendAlpha);
-    for (i = 0; i < 3; i ++) {
-        float iPlusOne = (float)(i + 1);
-        rsgProgramFragmentConstantColor(gProgFragmentColor,
-                                        0.2f*iPlusOne, 0.3f*iPlusOne, 0.1f*iPlusOne, 0.5);
-        float yPos = 150 * (float)i;
-        rsgDrawRect(150, yPos, 350, yPos + 200, 0);
-    }
-
-    rsgBindProgramStore(gProgStoreBlendAdd);
-    for (i = 0; i < 3; i ++) {
-        float iPlusOne = (float)(i + 1);
-        rsgProgramFragmentConstantColor(gProgFragmentColor,
-                                        0.3f*iPlusOne, 0.1f*iPlusOne, 0.2f*iPlusOne, 0.5);
-        float yPos = 150 * (float)i;
-        rsgDrawRect(300, yPos, 500, yPos + 200, 0);
-    }
-
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("No Blending", 10, 50);
-    rsgDrawText("Alpha Blending", 160, 150);
-    rsgDrawText("Additive Blending", 320, 250);
-
-}
-
-static void displayMeshSamples() {
-
-    bindProgramVertexOrtho();
-    rs_matrix4x4 matrix;
-    rsMatrixLoadTranslate(&matrix, 128, 128, 0);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNone);
-    rsgBindProgramFragment(gProgFragmentTexture);
-    rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-    rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
-    rsgDrawMesh(gMbyNMesh);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("User gen 10 by 10 grid mesh", 10, 250);
-}
-
-static void displayTextureSamplers() {
-
-    bindProgramVertexOrtho();
-    rs_matrix4x4 matrix;
-    rsMatrixLoadIdentity(&matrix);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNone);
-    rsgBindProgramFragment(gProgFragmentTexture);
-    rsgBindTexture(gProgFragmentTexture, 0, gTexOpaque);
-
-    // Linear clamp
-    rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-    float startX = 0, startY = 0;
-    float width = 300, height = 300;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1.1,
-                         startX + width, startY + height, 0, 1.1, 1.1,
-                         startX + width, startY, 0, 1.1, 0);
-
-    // Linear Wrap
-    rsgBindSampler(gProgFragmentTexture, 0, gLinearWrap);
-    startX = 0; startY = 300;
-    width = 300; height = 300;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1.1,
-                         startX + width, startY + height, 0, 1.1, 1.1,
-                         startX + width, startY, 0, 1.1, 0);
-
-    // Nearest
-    rsgBindSampler(gProgFragmentTexture, 0, gNearestClamp);
-    startX = 300; startY = 0;
-    width = 300; height = 300;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1.1,
-                         startX + width, startY + height, 0, 1.1, 1.1,
-                         startX + width, startY, 0, 1.1, 0);
-
-    rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap);
-    startX = 300; startY = 300;
-    width = 300; height = 300;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1.5,
-                         startX + width, startY + height, 0, 1.5, 1.5,
-                         startX + width, startY, 0, 1.5, 0);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Filtering: linear clamp", 10, 290);
-    rsgDrawText("Filtering: linear wrap", 10, 590);
-    rsgDrawText("Filtering: nearest clamp", 310, 290);
-    rsgDrawText("Filtering: miplinear wrap", 310, 590);
-}
-
-static float gTorusRotation = 0;
-
-static void displayCullingSamples() {
-    rsgBindProgramVertex(gProgVertex);
-    // Setup the projectioni matrix with 60 degree field of view
-    rs_matrix4x4 proj;
-    float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
-    rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f);
-    rsgProgramVertexLoadProjectionMatrix(&proj);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNoneDepth);
-    rsgBindProgramFragment(gProgFragmentTexture);
-    rsgBindSampler(gProgFragmentTexture, 0, gLinearClamp);
-    rsgBindTexture(gProgFragmentTexture, 0, gTexTorus);
-
-    // Aplly a rotation to our mesh
-    gTorusRotation += 50.0f * gDt;
-    if (gTorusRotation > 360.0f) {
-        gTorusRotation -= 360.0f;
-    }
-
-    rs_matrix4x4 matrix;
-    // Position our model on the screen
-    rsMatrixLoadTranslate(&matrix, -2.0f, 0.0f, -10.0f);
-    rsMatrixRotate(&matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-    // Use front face culling
-    rsgBindProgramRaster(gCullFront);
-    rsgDrawMesh(gTorusMesh);
-
-    rsMatrixLoadTranslate(&matrix, 2.0f, 0.0f, -10.0f);
-    rsMatrixRotate(&matrix, gTorusRotation, 1.0f, 0.0f, 0.0f);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-    // Use back face culling
-    rsgBindProgramRaster(gCullBack);
-    rsgDrawMesh(gTorusMesh);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Displaying mesh front/back face culling", 10, rsgGetHeight() - 10);
-}
-
-static float gLight0Rotation = 0;
-static float gLight1Rotation = 0;
-
-static void setupCustomShaderLights() {
-    float4 light0Pos = {-5.0f, 5.0f, -10.0f, 1.0f};
-    float4 light1Pos = {2.0f, 5.0f, 15.0f, 1.0f};
-    float4 light0DiffCol = {0.9f, 0.7f, 0.7f, 1.0f};
-    float4 light0SpecCol = {0.9f, 0.6f, 0.6f, 1.0f};
-    float4 light1DiffCol = {0.5f, 0.5f, 0.9f, 1.0f};
-    float4 light1SpecCol = {0.5f, 0.5f, 0.9f, 1.0f};
-
-    gLight0Rotation += 50.0f * gDt;
-    if (gLight0Rotation > 360.0f) {
-        gLight0Rotation -= 360.0f;
-    }
-    gLight1Rotation -= 50.0f * gDt;
-    if (gLight1Rotation > 360.0f) {
-        gLight1Rotation -= 360.0f;
-    }
-
-    rs_matrix4x4 l0Mat;
-    rsMatrixLoadRotate(&l0Mat, gLight0Rotation, 1.0f, 0.0f, 0.0f);
-    light0Pos = rsMatrixMultiply(&l0Mat, light0Pos);
-    rs_matrix4x4 l1Mat;
-    rsMatrixLoadRotate(&l1Mat, gLight1Rotation, 0.0f, 0.0f, 1.0f);
-    light1Pos = rsMatrixMultiply(&l1Mat, light1Pos);
-
-    // Set light 0 properties
-    gVSConstants->light0_Posision = light0Pos;
-    gVSConstants->light0_Diffuse = 1.0f;
-    gVSConstants->light0_Specular = 0.5f;
-    gVSConstants->light0_CosinePower = 10.0f;
-    // Set light 1 properties
-    gVSConstants->light1_Posision = light1Pos;
-    gVSConstants->light1_Diffuse = 1.0f;
-    gVSConstants->light1_Specular = 0.7f;
-    gVSConstants->light1_CosinePower = 25.0f;
-    rsgAllocationSyncAll(rsGetAllocation(gVSConstants));
-
-    gVSConstants2->light_Posision[0] = light0Pos;
-    gVSConstants2->light_Diffuse[0] = 1.0f;
-    gVSConstants2->light_Specular[0] = 0.5f;
-    gVSConstants2->light_CosinePower[0] = 10.0f;
-    gVSConstants2->light_Posision[1] = light1Pos;
-    gVSConstants2->light_Diffuse[1] = 1.0f;
-    gVSConstants2->light_Specular[1] = 0.7f;
-    gVSConstants2->light_CosinePower[1] = 25.0f;
-    rsgAllocationSyncAll(rsGetAllocation(gVSConstants2));
-
-    // Update fragmetn shader constants
-    // Set light 0 colors
-    gFSConstants->light0_DiffuseColor = light0DiffCol;
-    gFSConstants->light0_SpecularColor = light0SpecCol;
-    // Set light 1 colors
-    gFSConstants->light1_DiffuseColor = light1DiffCol;
-    gFSConstants->light1_SpecularColor = light1SpecCol;
-    rsgAllocationSyncAll(rsGetAllocation(gFSConstants));
-
-    gFSConstants2->light_DiffuseColor[0] = light0DiffCol;
-    gFSConstants2->light_SpecularColor[0] = light0SpecCol;
-    // Set light 1 colors
-    gFSConstants2->light_DiffuseColor[1] = light1DiffCol;
-    gFSConstants2->light_SpecularColor[1] = light1SpecCol;
-    rsgAllocationSyncAll(rsGetAllocation(gFSConstants2));
-}
-
-static void displayCustomShaderSamples() {
-
-    // Update vertex shader constants
-    // Load model matrix
-    // Aplly a rotation to our mesh
-    gTorusRotation += 50.0f * gDt;
-    if (gTorusRotation > 360.0f) {
-        gTorusRotation -= 360.0f;
-    }
-
-    // Position our model on the screen
-    rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f);
-    rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f);
-    rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f);
-    // Setup the projectioni matrix
-    float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
-    rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f);
-    setupCustomShaderLights();
-
-    rsgBindProgramVertex(gProgVertexCustom);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNoneDepth);
-    rsgBindProgramFragment(gProgFragmentCustom);
-    rsgBindSampler(gProgFragmentCustom, 0, gLinearClamp);
-    rsgBindTexture(gProgFragmentCustom, 0, gTexTorus);
-
-    // Use back face culling
-    rsgBindProgramRaster(gCullBack);
-    rsgDrawMesh(gTorusMesh);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Custom shader sample", 10, rsgGetHeight() - 10);
-}
-
-static void displayCustomShaderSamples2() {
-
-    // Update vertex shader constants
-    // Load model matrix
-    // Aplly a rotation to our mesh
-    gTorusRotation += 50.0f * gDt;
-    if (gTorusRotation > 360.0f) {
-        gTorusRotation -= 360.0f;
-    }
-
-    // Position our model on the screen
-    rsMatrixLoadTranslate(&gVSConstants2->model[1], 0.0f, 0.0f, -10.0f);
-    rsMatrixLoadIdentity(&gVSConstants2->model[0]);
-    rsMatrixRotate(&gVSConstants2->model[0], gTorusRotation, 1.0f, 0.0f, 0.0f);
-    rsMatrixRotate(&gVSConstants2->model[0], gTorusRotation, 0.0f, 0.0f, 1.0f);
-    // Setup the projectioni matrix
-    float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
-    rsMatrixLoadPerspective(&gVSConstants2->proj, 30.0f, aspect, 0.1f, 100.0f);
-    setupCustomShaderLights();
-
-    rsgBindProgramVertex(gProgVertexCustom2);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNoneDepth);
-    rsgBindProgramFragment(gProgFragmentCustom2);
-    rsgBindSampler(gProgFragmentCustom2, 0, gLinearClamp);
-    rsgBindTexture(gProgFragmentCustom2, 0, gTexTorus);
-
-    // Use back face culling
-    rsgBindProgramRaster(gCullBack);
-    rsgDrawMesh(gTorusMesh);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Custom shader sample with array uniforms", 10, rsgGetHeight() - 10);
-}
-
-static void displayCubemapShaderSample() {
-    // Update vertex shader constants
-    // Load model matrix
-    // Aplly a rotation to our mesh
-    gTorusRotation += 50.0f * gDt;
-    if (gTorusRotation > 360.0f) {
-        gTorusRotation -= 360.0f;
-    }
-
-    // Position our model on the screen
-    // Position our model on the screen
-    rsMatrixLoadTranslate(&gVSConstants->model, 0.0f, 0.0f, -10.0f);
-    rsMatrixRotate(&gVSConstants->model, gTorusRotation, 1.0f, 0.0f, 0.0f);
-    rsMatrixRotate(&gVSConstants->model, gTorusRotation, 0.0f, 0.0f, 1.0f);
-    // Setup the projectioni matrix
-    float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
-    rsMatrixLoadPerspective(&gVSConstants->proj, 30.0f, aspect, 0.1f, 100.0f);
-    rsgAllocationSyncAll(rsGetAllocation(gFSConstants));
-
-    rsgBindProgramVertex(gProgVertexCube);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNoneDepth);
-    rsgBindProgramFragment(gProgFragmentCube);
-    rsgBindSampler(gProgFragmentCube, 0, gLinearClamp);
-    rsgBindTexture(gProgFragmentCube, 0, gTexCube);
-
-    // Use back face culling
-    rsgBindProgramRaster(gCullBack);
-    rsgDrawMesh(gTorusMesh);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Cubemap shader sample", 10, rsgGetHeight() - 10);
-}
-
-static void displayMultitextureSample() {
-    bindProgramVertexOrtho();
-    rs_matrix4x4 matrix;
-    rsMatrixLoadIdentity(&matrix);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNone);
-    rsgBindProgramFragment(gProgFragmentMultitex);
-    rsgBindSampler(gProgFragmentMultitex, 0, gLinearClamp);
-    rsgBindSampler(gProgFragmentMultitex, 1, gLinearWrap);
-    rsgBindSampler(gProgFragmentMultitex, 2, gLinearClamp);
-    rsgBindTexture(gProgFragmentMultitex, 0, gTexChecker);
-    rsgBindTexture(gProgFragmentMultitex, 1, gTexTorus);
-    rsgBindTexture(gProgFragmentMultitex, 2, gTexTransparent);
-
-    float startX = 0, startY = 0;
-    float width = 256, height = 256;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 1,
-                         startX + width, startY + height, 0, 1, 1,
-                         startX + width, startY, 0, 1, 0);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    rsgDrawText("Custom shader with multitexturing", 10, 280);
-}
-
-static float gAnisoTime = 0.0f;
-static uint anisoMode = 0;
-static void displayAnisoSample() {
-
-    gAnisoTime += gDt;
-
-    rsgBindProgramVertex(gProgVertex);
-    float aspect = (float)rsgGetWidth() / (float)rsgGetHeight();
-    rs_matrix4x4 proj;
-    rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f);
-    rsgProgramVertexLoadProjectionMatrix(&proj);
-
-    rs_matrix4x4 matrix;
-    // Fragment shader with texture
-    rsgBindProgramStore(gProgStoreBlendNone);
-    rsgBindProgramFragment(gProgFragmentTexture);
-    rsMatrixLoadTranslate(&matrix, 0.0f, 0.0f, -10.0f);
-    rsMatrixRotate(&matrix, -80, 1.0f, 0.0f, 0.0f);
-    rsgProgramVertexLoadModelMatrix(&matrix);
-
-    rsgBindProgramRaster(gCullNone);
-
-    rsgBindTexture(gProgFragmentTexture, 0, gTexChecker);
-
-    if (gAnisoTime >= 5.0f) {
-        gAnisoTime = 0.0f;
-        anisoMode ++;
-        anisoMode = anisoMode % 3;
-    }
-
-    if (anisoMode == 0) {
-        rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso8);
-    } else if (anisoMode == 1) {
-        rsgBindSampler(gProgFragmentTexture, 0, gMipLinearAniso15);
-    } else {
-        rsgBindSampler(gProgFragmentTexture, 0, gMipLinearWrap);
-    }
-
-    float startX = -15;
-    float startY = -15;
-    float width = 30;
-    float height = 30;
-    rsgDrawQuadTexCoords(startX, startY, 0, 0, 0,
-                         startX, startY + height, 0, 0, 10,
-                         startX + width, startY + height, 0, 10, 10,
-                         startX + width, startY, 0, 10, 0);
-
-    rsgBindProgramRaster(gCullBack);
-
-    rsgFontColor(1.0f, 1.0f, 1.0f, 1.0f);
-    rsgBindFont(gFontMono);
-    if (anisoMode == 0) {
-        rsgDrawText("Anisotropic filtering 8", 10, 40);
-    } else if (anisoMode == 1) {
-        rsgDrawText("Anisotropic filtering 15", 10, 40);
-    } else {
-        rsgDrawText("Miplinear filtering", 10, 40);
-    }
-}
-
-int root(void) {
-
-    gDt = rsGetDt();
-
-    rsgClearColor(0.2f, 0.2f, 0.2f, 0.0f);
-    rsgClearDepth(1.0f);
-
-    switch (gDisplayMode) {
-    case 0:
-        displayFontSamples();
-        break;
-    case 1:
-        displayShaderSamples();
-        break;
-    case 2:
-        displayBlendingSamples();
-        break;
-    case 3:
-        displayMeshSamples();
-        break;
-    case 4:
-        displayTextureSamplers();
-        break;
-    case 5:
-        displayCullingSamples();
-        break;
-    case 6:
-        displayCustomShaderSamples();
-        break;
-    case 7:
-        displayMultitextureSample();
-        break;
-    case 8:
-        displayAnisoSample();
-        break;
-    case 9:
-        displayCustomShaderSamples2();
-        break;
-    case 10:
-        displayCubemapShaderSample();
-        break;
-    }
-
-    return 10;
-}
diff --git a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh b/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh
deleted file mode 100644
index 08cf361..0000000
--- a/samples/RenderScript/MiscSamples/src/com/example/android/rs/miscsamples/shader_def.rsh
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (C) 2009 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 version(1)
-
-#pragma rs java_package_name(com.example.android.rs.miscsamples)
-
-typedef struct VertexShaderConstants_s {
-    rs_matrix4x4 model;
-    rs_matrix4x4 proj;
-    float4 light0_Posision;
-    float light0_Diffuse;
-    float light0_Specular;
-    float light0_CosinePower;
-
-    float4 light1_Posision;
-    float light1_Diffuse;
-    float light1_Specular;
-    float light1_CosinePower;
-} VertexShaderConstants;
-
-typedef struct VertexShaderConstants2_s {
-    rs_matrix4x4 model[2];
-    rs_matrix4x4 proj;
-    float4 light_Posision[2];
-    float light_Diffuse[2];
-    float light_Specular[2];
-    float light_CosinePower[2];
-} VertexShaderConstants2;
-
-typedef struct VertexShaderConstants3_s {
-    rs_matrix4x4 model;
-    rs_matrix4x4 proj;
-    float time;
-} VertexShaderConstants3;
-
-
-typedef struct FragentShaderConstants_s {
-    float4 light0_DiffuseColor;
-    float4 light0_SpecularColor;
-
-    float4 light1_DiffuseColor;
-    float4 light1_SpecularColor;
-} FragentShaderConstants;
-
-typedef struct FragentShaderConstants2_s {
-    float4 light_DiffuseColor[2];
-    float4 light_SpecularColor[2];
-} FragentShaderConstants2;
-
-typedef struct FragentShaderConstants3_s {
-    float4 light0_DiffuseColor;
-    float4 light0_SpecularColor;
-    float4 light0_Posision;
-    float light0_Diffuse;
-    float light0_Specular;
-    float light0_CosinePower;
-
-    float4 light1_DiffuseColor;
-    float4 light1_SpecularColor;
-    float4 light1_Posision;
-    float light1_Diffuse;
-    float light1_Specular;
-    float light1_CosinePower;
-} FragentShaderConstants3;
-
-typedef struct VertexShaderInputs_s {
-    float4 position;
-    float3 normal;
-    float2 texture0;
-} VertexShaderInputs;
-
diff --git a/samples/SimpleJNI/jni/native.cpp b/samples/SimpleJNI/jni/native.cpp
index 4d2e4e0..853c3d9 100644
--- a/samples/SimpleJNI/jni/native.cpp
+++ b/samples/SimpleJNI/jni/native.cpp
@@ -24,7 +24,7 @@
 static jint
 add(JNIEnv *env, jobject thiz, jint a, jint b) {
 int result = a + b;
-    LOGI("%d + %d = %d", a, b, result);
+    ALOGI("%d + %d = %d", a, b, result);
     return result;
 }
 
@@ -44,11 +44,11 @@
 
     clazz = env->FindClass(className);
     if (clazz == NULL) {
-        LOGE("Native registration unable to find class '%s'", className);
+        ALOGE("Native registration unable to find class '%s'", className);
         return JNI_FALSE;
     }
     if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) {
-        LOGE("RegisterNatives failed for '%s'", className);
+        ALOGE("RegisterNatives failed for '%s'", className);
         return JNI_FALSE;
     }
 
@@ -89,16 +89,16 @@
     jint result = -1;
     JNIEnv* env = NULL;
     
-    LOGI("JNI_OnLoad");
+    ALOGI("JNI_OnLoad");
 
     if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) {
-        LOGE("ERROR: GetEnv failed");
+        ALOGE("ERROR: GetEnv failed");
         goto bail;
     }
     env = uenv.env;
 
     if (registerNatives(env) != JNI_TRUE) {
-        LOGE("ERROR: registerNatives failed");
+        ALOGE("ERROR: registerNatives failed");
         goto bail;
     }
     
diff --git a/samples/SpellChecker/HelloSpellChecker/Android.mk b/samples/SpellChecker/HelloSpellChecker/Android.mk
index 1c76f23..5138ce9 100755
--- a/samples/SpellChecker/HelloSpellChecker/Android.mk
+++ b/samples/SpellChecker/HelloSpellChecker/Android.mk
@@ -5,6 +5,7 @@
 
 LOCAL_SRC_FILES := $(call all-subdir-java-files)
 
+# TODO: Change sdk version to 16
 LOCAL_SDK_VERSION := current
 
 LOCAL_PACKAGE_NAME := HelloSpellChecker
diff --git a/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java b/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
index 6550981..9a18a22 100644
--- a/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
+++ b/samples/SpellChecker/HelloSpellChecker/src/com/example/android/hellospellchecker/HelloSpellCheckerActivity.java
@@ -18,8 +18,10 @@
 
 import android.app.Activity;
 import android.content.Context;
+import android.os.Build;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.textservice.SentenceSuggestionsInfo;
 import android.view.textservice.SpellCheckerSession;
 import android.view.textservice.SuggestionsInfo;
 import android.view.textservice.TextInfo;
@@ -30,8 +32,10 @@
 
 public class HelloSpellCheckerActivity extends Activity implements SpellCheckerSessionListener {
     private static final String TAG = HelloSpellCheckerActivity.class.getSimpleName();
+    private static final int NOT_A_LENGTH = -1;
     private TextView mMainView;
     private SpellCheckerSession mScs;
+
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -40,18 +44,35 @@
         mMainView = (TextView)findViewById(R.id.main);
     }
 
+    private boolean isSentenceSpellCheckSupported() {
+        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
+    }
+
     @Override
     public void onResume() {
         super.onResume();
         final TextServicesManager tsm = (TextServicesManager) getSystemService(
                 Context.TEXT_SERVICES_MANAGER_SERVICE);
         mScs = tsm.newSpellCheckerSession(null, null, this, true);
+
         if (mScs != null) {
             // Instantiate TextInfo for each query
             // TextInfo can be passed a sequence number and a cookie number to identify the result
-            mScs.getSuggestions(new TextInfo("tgis"), 3);
-            mScs.getSuggestions(new TextInfo("hllo"), 3);
-            mScs.getSuggestions(new TextInfo("helloworld"), 3);
+            if (isSentenceSpellCheckSupported()) {
+                // Note that getSentenceSuggestions works on JB or later.
+                Log.d(TAG, "Sentence spellchecking supported.");
+                mScs.getSentenceSuggestions(new TextInfo[] {new TextInfo("tgisis")}, 3);
+                mScs.getSentenceSuggestions(new TextInfo[] {new TextInfo(
+                        "I wold like to here form you")}, 3);
+                mScs.getSentenceSuggestions(new TextInfo[] {new TextInfo("hell othere")}, 3);
+            } else {
+                // Note that getSuggestions() is a deprecated API.
+                // It is recommended for an application running on Jelly Bean or later
+                // to call getSentenceSuggestions() only.
+                mScs.getSuggestions(new TextInfo("tgis"), 3);
+                mScs.getSuggestions(new TextInfo("hllo"), 3);
+                mScs.getSuggestions(new TextInfo("helloworld"), 3);
+            }
         } else {
             Log.e(TAG, "Couldn't obtain the spell checker service.");
         }
@@ -65,17 +86,67 @@
         }
     }
 
+    private void dumpSuggestionsInfoInternal(
+            final StringBuilder sb, final SuggestionsInfo si, final int length, final int offset) {
+        // Returned suggestions are contained in SuggestionsInfo
+        final int len = si.getSuggestionsCount();
+        sb.append('\n');
+        for (int j = 0; j < len; ++j) {
+            if (j != 0) {
+                sb.append(", ");
+            }
+            sb.append(si.getSuggestionAt(j));
+        }
+        sb.append(" (" + len + ")");
+        if (length != NOT_A_LENGTH) {
+            sb.append(" length = " + length + ", offset = " + offset);
+        }
+    }
+
+    /**
+     * Callback for {@link SpellCheckerSession#getSuggestions(TextInfo, int)}
+     * and {@link SpellCheckerSession#getSuggestions(TextInfo[], int, boolean)}
+     * @param results an array of {@link SuggestionsInfo}s.
+     * These results are suggestions for {@link TextInfo}s queried by
+     * {@link SpellCheckerSession#getSuggestions(TextInfo, int)} or
+     * {@link SpellCheckerSession#getSuggestions(TextInfo[], int, boolean)}
+     */
     @Override
     public void onGetSuggestions(final SuggestionsInfo[] arg0) {
+        Log.d(TAG, "onGetSuggestions");
         final StringBuilder sb = new StringBuilder();
         for (int i = 0; i < arg0.length; ++i) {
-            // Returned suggestions are contained in SuggestionsInfo
-            final int len = arg0[i].getSuggestionsCount();
-            sb.append('\n');
-            for (int j = 0; j < len; ++j) {
-                sb.append("," + arg0[i].getSuggestionAt(j));
+            dumpSuggestionsInfoInternal(sb, arg0[i], 0, NOT_A_LENGTH);
+        }
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                mMainView.append(sb.toString());
             }
-            sb.append(" (" + len + ")");
+        });
+    }
+
+    /**
+     * Callback for {@link SpellCheckerSession#getSentenceSuggestions(TextInfo[], int)}
+     * @param results an array of {@link SentenceSuggestionsInfo}s.
+     * These results are suggestions for {@link TextInfo}s
+     * queried by {@link SpellCheckerSession#getSentenceSuggestions(TextInfo[], int)}.
+     */
+    @Override
+    public void onGetSentenceSuggestions(final SentenceSuggestionsInfo[] arg0) {
+        if (!isSentenceSpellCheckSupported()) {
+            Log.e(TAG, "Sentence spell check is not supported on this platform, "
+                    + "but accidentially called.");
+            return;
+        }
+        Log.d(TAG, "onGetSentenceSuggestions");
+        final StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < arg0.length; ++i) {
+            final SentenceSuggestionsInfo ssi = arg0[i];
+            for (int j = 0; j < ssi.getSuggestionsCount(); ++j) {
+                dumpSuggestionsInfoInternal(
+                        sb, ssi.getSuggestionsInfoAt(j), ssi.getOffsetAt(j), ssi.getLengthAt(j));
+            }
         }
         runOnUiThread(new Runnable() {
             @Override
diff --git a/samples/SpellChecker/SampleSpellCheckerService/Android.mk b/samples/SpellChecker/SampleSpellCheckerService/Android.mk
index adf65d9..4f6b421 100755
--- a/samples/SpellChecker/SampleSpellCheckerService/Android.mk
+++ b/samples/SpellChecker/SampleSpellCheckerService/Android.mk
@@ -5,8 +5,9 @@
 
 LOCAL_SRC_FILES := $(call all-subdir-java-files)
 
+# TODO: Change sdk version to 16
 LOCAL_SDK_VERSION := current
 
-LOCAL_PACKAGE_NAME := SampleSpellChecker
+LOCAL_PACKAGE_NAME := SampleSpellCheckerService
 
 include $(BUILD_PACKAGE)
diff --git a/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
index dc85587..e0abb4c 100644
--- a/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
+++ b/samples/SpellChecker/SampleSpellCheckerService/src/com/example/android/samplespellcheckerservice/SampleSpellCheckerService.java
@@ -16,26 +16,46 @@
 
 package com.example.android.samplespellcheckerservice;
 
+import android.os.Build;
 import android.service.textservice.SpellCheckerService;
 import android.util.Log;
+import android.view.textservice.SentenceSuggestionsInfo;
 import android.view.textservice.SuggestionsInfo;
 import android.view.textservice.TextInfo;
 
+import java.util.ArrayList;
+
 public class SampleSpellCheckerService extends SpellCheckerService {
     private static final String TAG = SampleSpellCheckerService.class.getSimpleName();
     private static final boolean DBG = true;
+
     @Override
     public Session createSession() {
         return new AndroidSpellCheckerSession();
     }
 
     private static class AndroidSpellCheckerSession extends Session {
+
+        private boolean isSentenceSpellCheckApiSupported() {
+            // Note that the sentence level spell check APIs work on Jelly Bean or later.
+            return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
+        }
+
         private String mLocale;
         @Override
         public void onCreate() {
             mLocale = getLocale();
         }
 
+        /**
+         * This method should have a concrete implementation in all spell checker services.
+         * Please note that the default implementation of
+         * {@link SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)}
+         * calls up this method. You may want to override
+         * {@link SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)}
+         * by your own implementation if you'd like to provide an optimized implementation for
+         * {@link SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)}.
+         */
         @Override
         public SuggestionsInfo onGetSuggestions(TextInfo textInfo, int suggestionsLimit) {
             if (DBG) {
@@ -51,5 +71,70 @@
             return new SuggestionsInfo(flags,
                     new String[] {"aaa", "bbb", "Candidate for " + input, mLocale});
         }
+
+        /**
+         * Please consider providing your own implementation of sentence level spell checking.
+         * Please note that this sample implementation is just a mock to demonstrate how a sentence
+         * level spell checker returns the result.
+         * If you don't override this method, the framework converts queries of
+         * {@link SpellCheckerService.Session#onGetSentenceSuggestionsMultiple(TextInfo[], int)}
+         * to queries of
+         * {@link SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)}
+         * by the default implementation.
+         */
+        @Override
+        public SentenceSuggestionsInfo[] onGetSentenceSuggestionsMultiple(
+                TextInfo[] textInfos, int suggestionsLimit) {
+            if (!isSentenceSpellCheckApiSupported()) {
+                Log.e(TAG, "Sentence spell check is not supported on this platform, "
+                        + "but accidentially called.");
+                return null;
+            }
+            final ArrayList<SentenceSuggestionsInfo> retval =
+                    new ArrayList<SentenceSuggestionsInfo>();
+            for (int i = 0; i < textInfos.length; ++i) {
+                final TextInfo ti = textInfos[i];
+                if (DBG) {
+                    Log.d(TAG, "onGetSentenceSuggestionsMultiple: " + ti.getText());
+                }
+                final String input = ti.getText();
+                final int length = input.length();
+                final SuggestionsInfo[] sis;
+                final int[] lengths;
+                final int[] offsets;
+                if (input.equalsIgnoreCase("I wold like to here form you")) {
+                    // Return sentence level suggestion for this fixed input
+                    final int flags0 = SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO;
+                    final int flags1 = SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
+                            | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO;
+                    final int flags2 = flags1;
+                    final SuggestionsInfo si0 = new SuggestionsInfo(
+                            flags0, new String[] { "would" });
+                    final SuggestionsInfo si1 = new SuggestionsInfo(
+                            flags1, new String[] { "hear" });
+                    final SuggestionsInfo si2 = new SuggestionsInfo(
+                            flags2, new String[] { "from" });
+                    sis = new SuggestionsInfo[] {si0, si1, si2};
+                    offsets = new int[] { 2, 15, 20 };
+                    lengths = new int[] { 4, 4, 4 };
+                } else {
+                    // Just a mock logic:
+                    // length <= 3 for short words that we assume are in the fake dictionary
+                    // length > 20 for too long words that we assume can't be recognized
+                    // (such as CJK words)
+                    final int flags = length <= 3 ? SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY
+                            : length <= 20 ? SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO : 0;
+                    final SuggestionsInfo si = new SuggestionsInfo(flags,
+                            new String[] {"aaa", "bbb", "Candidate for " + input, mLocale});
+                    sis = new SuggestionsInfo[] { si };
+                    offsets = new int[] { 0 };
+                    lengths = new int[] { ti.getText().length() };
+                }
+                final SentenceSuggestionsInfo ssi =
+                        new SentenceSuggestionsInfo(sis, lengths, offsets);
+                retval.add(ssi);
+            }
+            return retval.toArray(new SentenceSuggestionsInfo[0]);
+        }
     }
 }
diff --git a/samples/Support13Demos/src/com/example/android/supportv13/app/CursorFragment.java b/samples/Support13Demos/src/com/example/android/supportv13/app/CursorFragment.java
index 38be247..57f0e10 100644
--- a/samples/Support13Demos/src/com/example/android/supportv13/app/CursorFragment.java
+++ b/samples/Support13Demos/src/com/example/android/supportv13/app/CursorFragment.java
@@ -74,7 +74,8 @@
         // Place an action bar item for searching.
         MenuItem item = menu.add("Search");
         item.setIcon(android.R.drawable.ic_menu_search);
-        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
+                | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
         SearchView sv = new SearchView(getActivity());
         sv.setOnQueryTextListener(this);
         item.setActionView(sv);
diff --git a/samples/Support4Demos/AndroidManifest.xml b/samples/Support4Demos/AndroidManifest.xml
index 6d71b03..1aa2107 100644
--- a/samples/Support4Demos/AndroidManifest.xml
+++ b/samples/Support4Demos/AndroidManifest.xml
@@ -198,6 +198,14 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".app.LoaderRetainedSupport"
+                android:label="@string/loader_retained_support">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.example.android.supportv4.SUPPORT4_SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+        
         <activity android:name=".app.LoaderCustomSupport"
                 android:label="@string/loader_custom_support">
             <intent-filter>
@@ -242,5 +250,26 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".app.SharingSupport"
+                  android:label="@string/sharing_support_title">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="com.example.android.supportv4.SUPPORT4_SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.SharingReceiverSupport"
+                  android:label="@string/sharing_receiver_title">
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <action android:name="android.intent.action.SEND_MULTIPLE" />
+                <data android:mimeType="text/plain" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <provider android:authorities="com.example.supportv4.content.sharingsupportprovider"
+                  android:name=".content.SharingSupportProvider" />
+
     </application>
 </manifest>
diff --git a/samples/Support4Demos/res/layout/sharing_receiver_support.xml b/samples/Support4Demos/res/layout/sharing_receiver_support.xml
new file mode 100644
index 0000000..a7b4c38
--- /dev/null
+++ b/samples/Support4Demos/res/layout/sharing_receiver_support.xml
@@ -0,0 +1,31 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="vertical"
+              android:padding="16dp"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
+    <TextView android:id="@+id/app_info"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:gravity="center_vertical"/>
+    <ScrollView android:layout_width="match_parent"
+                android:layout_height="match_parent">
+        <TextView android:id="@+id/text"
+                  android:layout_width="match_parent"
+                  android:layout_height="wrap_content" />
+    </ScrollView>
+</LinearLayout>
diff --git a/samples/Support4Demos/res/layout/sharing_support.xml b/samples/Support4Demos/res/layout/sharing_support.xml
new file mode 100644
index 0000000..8b88dca
--- /dev/null
+++ b/samples/Support4Demos/res/layout/sharing_support.xml
@@ -0,0 +1,36 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="vertical"
+              android:padding="16dp"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
+    <Button android:id="@+id/share_text"
+            android:text="@string/share_text"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:onClick="onShareTextClick" />
+    <Button android:id="@+id/share_file"
+            android:text="@string/share_file"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:onClick="onShareFileClick" />
+    <Button android:id="@+id/share_multiple_file"
+            android:text="@string/share_multiple_file"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:onClick="onShareMultipleFileClick" />
+</LinearLayout>
diff --git a/samples/Support4Demos/res/values/strings.xml b/samples/Support4Demos/res/values/strings.xml
index f8f4a4f..e17974d 100644
--- a/samples/Support4Demos/res/values/strings.xml
+++ b/samples/Support4Demos/res/values/strings.xml
@@ -91,7 +91,9 @@
     <string name="fragment_state_pager_support">Fragment/State Pager</string>
 
     <string name="loader_cursor_support">Loader/Cursor</string>
-    
+
+    <string name="loader_retained_support">Loader/Retained</string>
+
     <string name="loader_custom_support">Loader/Custom</string>
 
     <string name="loader_throttle_support">Loader/Throttle</string>
@@ -123,4 +125,10 @@
     <string name="accessibility_delegate_button">Button</string>
     <string name="accessibility_delegate_custom_text_added">Custom text added via an accessibility delegate.</string>
 
+    <string name="share_text">Share some text</string>
+    <string name="share_file">Share a file</string>
+    <string name="share_multiple_file">Share multiple files</string>
+    <string name="sharing_support_title">ShareCompat Demo</string>
+    <string name="sharing_receiver_title">ShareCompat Receiver</string>
+
 </resources>
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCursorSupport.java b/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCursorSupport.java
index dd4237b..bc74b6d 100644
--- a/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCursorSupport.java
+++ b/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCursorSupport.java
@@ -99,7 +99,8 @@
             // Place an action bar item for searching.
             MenuItem item = menu.add("Search");
             item.setIcon(android.R.drawable.ic_menu_search);
-            MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
+            MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS
+                    | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
             View searchView = SearchViewCompat.newSearchView(getActivity());
             if (searchView != null) {
                 SearchViewCompat.setOnQueryTextListener(searchView,
@@ -109,7 +110,16 @@
                         // Called when the action bar search text has changed.  Update
                         // the search filter, and restart the loader to do a new query
                         // with this filter.
-                        mCurFilter = !TextUtils.isEmpty(newText) ? newText : null;
+                        String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
+                        // Don't do anything if the filter hasn't actually changed.
+                        // Prevents restarting the loader when restoring state.
+                        if (mCurFilter == null && newFilter == null) {
+                            return true;
+                        }
+                        if (mCurFilter != null && mCurFilter.equals(newFilter)) {
+                            return true;
+                        }
+                        mCurFilter = newFilter;
                         getLoaderManager().restartLoader(0, null, CursorLoaderListFragment.this);
                         return true;
                     }
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCustomSupport.java b/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCustomSupport.java
index ec59738..b735e65 100644
--- a/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCustomSupport.java
+++ b/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderCustomSupport.java
@@ -438,7 +438,8 @@
             // Place an action bar item for searching.
             MenuItem item = menu.add("Search");
             item.setIcon(android.R.drawable.ic_menu_search);
-            MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
+            MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM
+                    | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
             View searchView = SearchViewCompat.newSearchView(getActivity());
             if (searchView != null) {
                 SearchViewCompat.setOnQueryTextListener(searchView,
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderRetainedSupport.java b/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderRetainedSupport.java
new file mode 100644
index 0000000..8ea47e3
--- /dev/null
+++ b/samples/Support4Demos/src/com/example/android/supportv4/app/LoaderRetainedSupport.java
@@ -0,0 +1,187 @@
+/*
+ * 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.
+ */
+
+package com.example.android.supportv4.app;
+
+import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.ListFragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v4.widget.SearchViewCompat;
+import android.support.v4.widget.SearchViewCompat.OnQueryTextListenerCompat;
+import android.support.v4.widget.SimpleCursorAdapter;
+
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.BaseColumns;
+import android.provider.Contacts.People;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
+
+/**
+ * Demonstration of the use of a CursorLoader to load and display contacts
+ * data in a fragment.
+ */
+@SuppressWarnings("all")
+public class LoaderRetainedSupport extends FragmentActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        FragmentManager fm = getSupportFragmentManager();
+
+        // Create the list fragment and add it as our sole content.
+        if (fm.findFragmentById(android.R.id.content) == null) {
+            CursorLoaderListFragment list = new CursorLoaderListFragment();
+            fm.beginTransaction().add(android.R.id.content, list).commit();
+        }
+    }
+
+//BEGIN_INCLUDE(fragment_cursor)
+    public static class CursorLoaderListFragment extends ListFragment
+            implements LoaderManager.LoaderCallbacks<Cursor> {
+
+        // This is the Adapter being used to display the list's data.
+        SimpleCursorAdapter mAdapter;
+
+        // If non-null, this is the current filter the user has provided.
+        String mCurFilter;
+
+        @Override public void onActivityCreated(Bundle savedInstanceState) {
+            super.onActivityCreated(savedInstanceState);
+
+            // In this sample we are going to use a retained fragment.
+            setRetainInstance(true);
+
+            // Give some text to display if there is no data.  In a real
+            // application this would come from a resource.
+            setEmptyText("No phone numbers");
+
+            // We have a menu item to show in action bar.
+            setHasOptionsMenu(true);
+
+            // Create an empty adapter we will use to display the loaded data.
+            mAdapter = new SimpleCursorAdapter(getActivity(),
+                    android.R.layout.simple_list_item_1, null,
+                    new String[] { People.DISPLAY_NAME },
+                    new int[] { android.R.id.text1}, 0);
+            setListAdapter(mAdapter);
+
+            // Start out with a progress indicator.
+            setListShown(false);
+
+            // Prepare the loader.  Either re-connect with an existing one,
+            // or start a new one.
+            getLoaderManager().initLoader(0, null, this);
+        }
+
+        @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+            // Place an action bar item for searching.
+            MenuItem item = menu.add("Search");
+            item.setIcon(android.R.drawable.ic_menu_search);
+            MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS
+                    | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
+            View searchView = SearchViewCompat.newSearchView(getActivity());
+            if (searchView != null) {
+                SearchViewCompat.setOnQueryTextListener(searchView,
+                        new OnQueryTextListenerCompat() {
+                    @Override
+                    public boolean onQueryTextChange(String newText) {
+                        // Called when the action bar search text has changed.  Update
+                        // the search filter, and restart the loader to do a new query
+                        // with this filter.
+                        String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
+                        // Don't do anything if the filter hasn't actually changed.
+                        // Prevents restarting the loader when restoring state.
+                        if (mCurFilter == null && newFilter == null) {
+                            return true;
+                        }
+                        if (mCurFilter != null && mCurFilter.equals(newFilter)) {
+                            return true;
+                        }
+                        mCurFilter = newFilter;
+                        getLoaderManager().restartLoader(0, null, CursorLoaderListFragment.this);
+                        return true;
+                    }
+                });
+                MenuItemCompat.setActionView(item, searchView);
+            }
+        }
+
+        @Override public void onListItemClick(ListView l, View v, int position, long id) {
+            // Insert desired behavior here.
+            Log.i("FragmentComplexList", "Item clicked: " + id);
+        }
+
+        // These are the Contacts rows that we will retrieve.
+        static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
+            People._ID,
+            People.DISPLAY_NAME,
+        };
+
+        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+            // This is called when a new Loader needs to be created.  This
+            // sample only has one Loader, so we don't care about the ID.
+            // First, pick the base URI to use depending on whether we are
+            // currently filtering.
+            Uri baseUri;
+            if (mCurFilter != null) {
+                baseUri = Uri.withAppendedPath(People.CONTENT_FILTER_URI, Uri.encode(mCurFilter));
+            } else {
+                baseUri = People.CONTENT_URI;
+            }
+
+            // Now create and return a CursorLoader that will take care of
+            // creating a Cursor for the data being displayed.
+            String select = "((" + People.DISPLAY_NAME + " NOTNULL) AND ("
+                    + People.DISPLAY_NAME + " != '' ))";
+            return new CursorLoader(getActivity(), baseUri,
+                    CONTACTS_SUMMARY_PROJECTION, select, null,
+                    People.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
+        }
+
+        public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
+            // Swap the new cursor in.  (The framework will take care of closing the
+            // old cursor once we return.)
+            mAdapter.swapCursor(data);
+
+            // The list should now be shown.
+            if (isResumed()) {
+                setListShown(true);
+            } else {
+                setListShownNoAnimation(true);
+            }
+        }
+
+        public void onLoaderReset(Loader<Cursor> loader) {
+            // This is called when the last Cursor provided to onLoadFinished()
+            // above is about to be closed.  We need to make sure we are no
+            // longer using it.
+            mAdapter.swapCursor(null);
+        }
+    }
+//END_INCLUDE(fragment_cursor)
+}
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/app/SharingReceiverSupport.java b/samples/Support4Demos/src/com/example/android/supportv4/app/SharingReceiverSupport.java
new file mode 100644
index 0000000..d1efa2d
--- /dev/null
+++ b/samples/Support4Demos/src/com/example/android/supportv4/app/SharingReceiverSupport.java
@@ -0,0 +1,90 @@
+/*
+ * 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.supportv4.app;
+
+import com.example.android.supportv4.R;
+
+import android.app.Activity;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.ShareCompat;
+import android.util.Log;
+import android.widget.TextView;
+
+import java.io.BufferedReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+/**
+ * This example shows a simple way to handle data shared with your app through the
+ * use of the support library's ShareCompat features. It will display shared text
+ * content as well as the application label and icon of the app that shared the content.
+ */
+public class SharingReceiverSupport extends Activity {
+    private static final String TAG = "SharingReceiverSupport";
+    private static final int ICON_SIZE = 32; // dip
+
+    @Override
+    protected void onCreate(Bundle b) {
+        super.onCreate(b);
+        setContentView(R.layout.sharing_receiver_support);
+
+        final float density = getResources().getDisplayMetrics().density;
+        final int iconSize = (int) (ICON_SIZE * density + 0.5f);
+
+        ShareCompat.IntentReader intentReader = ShareCompat.IntentReader.from(this);
+
+        // The following provides attribution for the app that shared the data with us.
+        TextView info = (TextView) findViewById(R.id.app_info);
+        Drawable d = intentReader.getCallingActivityIcon();
+        d.setBounds(0, 0, iconSize, iconSize);
+        info.setCompoundDrawables(d, null, null, null);
+        info.setText(intentReader.getCallingApplicationLabel());
+
+        TextView tv = (TextView) findViewById(R.id.text);
+        StringBuilder txt = new StringBuilder("Received share!\nText was: ");
+
+        txt.append(intentReader.getText());
+        txt.append("\n");
+
+        txt.append("Streams included:\n");
+        final int N = intentReader.getStreamCount();
+        for (int i = 0; i < N; i++) {
+            Uri uri = intentReader.getStream(i);
+            txt.append("Share included stream " + i + ": " + uri + "\n");
+            try {
+                BufferedReader reader = new BufferedReader(new InputStreamReader(
+                        getContentResolver().openInputStream(uri)));
+                try {
+                    txt.append(reader.readLine() + "\n");
+                } catch (IOException e) {
+                    Log.e(TAG, "Reading stream threw exception", e);
+                } finally {
+                    reader.close();
+                }
+            } catch (FileNotFoundException e) {
+                Log.e(TAG, "File not found from share.", e);
+            } catch (IOException e) {
+                Log.d(TAG, "I/O Error", e);
+            }
+        }
+
+        tv.setText(txt.toString());
+    }
+}
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/app/SharingSupport.java b/samples/Support4Demos/src/com/example/android/supportv4/app/SharingSupport.java
new file mode 100644
index 0000000..ec099a8
--- /dev/null
+++ b/samples/Support4Demos/src/com/example/android/supportv4/app/SharingSupport.java
@@ -0,0 +1,113 @@
+/*
+ * 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.supportv4.app;
+
+import com.example.android.supportv4.R;
+import com.example.android.supportv4.content.SharingSupportProvider;
+
+import android.app.Activity;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v4.app.ShareCompat;
+import android.support.v4.view.MenuItemCompat;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+
+/**
+ * This example illustrates the use of the ShareCompat feature of the support library.
+ * ShareCompat offers several pieces of functionality to assist in sharing content between
+ * apps and is especially suited for sharing content to social apps that the user has installed.
+ *
+ * <p>Two other classes are relevant to this code sample: {@link SharingReceiverSupport} is
+ * an activity that has been configured to receive ACTION_SEND and ACTION_SEND_MULTIPLE
+ * sharing intents with a type of text/plain. It provides an example of writing a sharing
+ * target using ShareCompat features. {@link SharingSupportProvider} is a simple
+ * {@link android.content.ContentProvider} that provides access to two text files
+ * created by this app to share as content streams.</p>
+ */
+public class SharingSupport extends Activity {
+    @Override
+    protected void onCreate(Bundle b) {
+        super.onCreate(b);
+        setContentView(R.layout.sharing_support);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        ShareCompat.IntentBuilder b = ShareCompat.IntentBuilder.from(this);
+        b.setType("text/plain").setText("Share from menu");
+        MenuItem item = menu.add("Share");
+        ShareCompat.configureMenuItem(item, b);
+        MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
+        return true;
+    }
+
+    public void onShareTextClick(View v) {
+        ShareCompat.IntentBuilder.from(this)
+                .setType("text/plain")
+                .setText("I'm sharing!")
+                .startChooser();
+    }
+
+    public void onShareFileClick(View v) {
+        try {
+            // This file will be accessed by the target of the share through
+            // the ContentProvider SharingSupportProvider.
+            FileWriter fw = new FileWriter(getFilesDir() + "/foo.txt");
+            fw.write("This is a file share");
+            fw.close();
+
+            ShareCompat.IntentBuilder.from(this)
+                    .setType("text/plain")
+                    .setStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/foo.txt"))
+                    .startChooser();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public void onShareMultipleFileClick(View v) {
+        try {
+            // These files will be accessed by the target of the share through
+            // the ContentProvider SharingSupportProvider.
+            FileWriter fw = new FileWriter(getFilesDir() + "/foo.txt");
+            fw.write("This is a file share");
+            fw.close();
+
+            fw = new FileWriter(getFilesDir() + "/bar.txt");
+            fw.write("This is another file share");
+            fw.close();
+
+            ShareCompat.IntentBuilder.from(this)
+                    .setType("text/plain")
+                    .addStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/foo.txt"))
+                    .addStream(Uri.parse(SharingSupportProvider.CONTENT_URI + "/bar.txt"))
+                    .startChooser();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/content/SharingSupportProvider.java b/samples/Support4Demos/src/com/example/android/supportv4/content/SharingSupportProvider.java
new file mode 100644
index 0000000..596fd6c
--- /dev/null
+++ b/samples/Support4Demos/src/com/example/android/supportv4/content/SharingSupportProvider.java
@@ -0,0 +1,89 @@
+/*
+ * 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.supportv4.content;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+
+/**
+ * This simple ContentProvider provides access to the two example files shared
+ * by the ShareCompat example {@link com.example.android.supportv4.app.SharingSupport}.
+ */
+public class SharingSupportProvider extends ContentProvider {
+    public static final Uri CONTENT_URI =
+            Uri.parse("content://com.example.supportv4.content.sharingsupportprovider");
+
+    private static final String TAG = "SharingSupportProvider";
+
+    @Override
+    public boolean onCreate() {
+        return true;
+    }
+
+    @Override
+    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+            String sortOrder) {
+        return null;
+    }
+
+    @Override
+    public String getType(Uri uri) {
+        if (uri.equals(Uri.withAppendedPath(CONTENT_URI, "foo.txt")) ||
+                uri.equals(Uri.withAppendedPath(CONTENT_URI, "bar.txt"))) {
+            return "text/plain";
+        }
+        return null;
+    }
+
+    @Override
+    public Uri insert(Uri uri, ContentValues values) {
+        return null;
+    }
+
+    @Override
+    public int delete(Uri uri, String selection, String[] selectionArgs) {
+        return 0;
+    }
+
+    @Override
+    public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+        return 0;
+    }
+
+    @Override
+    public ParcelFileDescriptor openFile(Uri uri, String mode) {
+        String path = uri.getPath();
+        if (mode.equals("r") &&
+                (path.equals("/foo.txt") || path.equals("/bar.txt"))) {
+            try {
+                return ParcelFileDescriptor.open(
+                        new File(getContext().getFilesDir() + path),
+                        ParcelFileDescriptor.MODE_READ_ONLY);
+            } catch (FileNotFoundException e) {
+                Log.e(TAG, "Bad file " + uri);
+            }
+        }
+        return null;
+    }
+}
diff --git a/samples/NFCDemo/Android.mk b/samples/SupportAppNavigation/Android.mk
similarity index 68%
rename from samples/NFCDemo/Android.mk
rename to samples/SupportAppNavigation/Android.mk
index 60815a2..6a30e1f 100644
--- a/samples/NFCDemo/Android.mk
+++ b/samples/SupportAppNavigation/Android.mk
@@ -3,16 +3,17 @@
 
 LOCAL_MODULE_TAGS := samples tests
 
-LOCAL_STATIC_JAVA_LIBRARIES := guava
-
-# Only compile source java files in this apk.
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
-LOCAL_PACKAGE_NAME := NFCDemo
+LOCAL_PACKAGE_NAME := SupportAppNavigation
+
+LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
 
 LOCAL_SDK_VERSION := current
 
 include $(BUILD_PACKAGE)
 
+LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+
 # Use the following include to make our test apk.
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/samples/SupportAppNavigation/AndroidManifest.xml b/samples/SupportAppNavigation/AndroidManifest.xml
new file mode 100644
index 0000000..c8e4fa8
--- /dev/null
+++ b/samples/SupportAppNavigation/AndroidManifest.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<manifest android:versionCode="1"
+        android:versionName="1"
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.support.appnavigation">
+
+    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
+
+    <application android:label="@string/app_name">
+        <activity android:name=".app.AppNavHomeActivity"
+                android:label="@string/app_nav_home_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.SimpleUpActivity"
+                  android:label="@string/simple_up_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.PeerActivity"
+                  android:label="@string/peer_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.ViewFromOtherTaskActivity"
+                  android:label="@string/view_from_other_task_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.OutsideTaskActivity"
+                  android:label="@string/outside_task_label"
+                  android:theme="@style/Theme.Light"
+                  android:taskAffinity="com.example.android.appnavigation.outsidetask">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.ContentViewActivity"
+                  android:label="@string/content_view_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.intent.action.VIEW" />
+                <data android:mimeType="application/x-example" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.ContentCategoryActivity" />
+        </activity>
+
+        <activity android:name=".app.ContentCategoryActivity"
+                  android:label="@string/content_category_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.NotificationsActivity"
+                  android:label="@string/notifications_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.InterstitialMessageActivity"
+                  android:label="@string/interstitial_label"
+                  android:theme="@style/Theme.Dialog"
+                  android:launchMode="singleTask"
+                  android:excludeFromRecents="true"
+                  android:taskAffinity="">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/SupportAppNavigation/res/layout/content_category.xml b/samples/SupportAppNavigation/res/layout/content_category.xml
new file mode 100644
index 0000000..2727260
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/content_category.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/intermediate_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_content_view"
+            android:onClick="onViewContent" />
+</LinearLayout>
diff --git a/samples/SupportAppNavigation/res/layout/content_view.xml b/samples/SupportAppNavigation/res/layout/content_view.xml
new file mode 100644
index 0000000..eabd2eb
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/content_view.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/content_view_description" />
+    <TextView android:id="@+id/status_text"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:layout_marginTop="8dp"
+              android:text="@string/default_status_text" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/SupportAppNavigation/res/layout/interstitial_message.xml b/samples/SupportAppNavigation/res/layout/interstitial_message.xml
new file mode 100644
index 0000000..d957ecd
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/interstitial_message.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical"
+              style="@style/InterstitialDialogLayout">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/interstitial_description"
+              android:layout_marginTop="16dp"
+              android:layout_marginBottom="16dp"
+              android:layout_marginLeft="16dp"
+              android:layout_marginRight="16dp"/>
+    <LinearLayout android:layout_width="match_parent"
+                  android:layout_height="wrap_content"
+                  style="@style/ButtonBar">
+        <Button android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/launch_content_view"
+                android:onClick="onViewContent"
+                style="@style/ButtonBarButton"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/samples/SupportAppNavigation/res/layout/notifications.xml b/samples/SupportAppNavigation/res/layout/notifications.xml
new file mode 100644
index 0000000..10112f3
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/notifications.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/notifications_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/post_direct_notification"
+            android:onClick="onPostDirect" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/post_interstitial_notification"
+            android:onClick="onPostInterstitial" />
+</LinearLayout>
diff --git a/samples/SupportAppNavigation/res/layout/outside_task.xml b/samples/SupportAppNavigation/res/layout/outside_task.xml
new file mode 100644
index 0000000..00c78aa
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/outside_task.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/outside_task_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_content_view"
+            android:onClick="onViewContent" />
+</LinearLayout>
diff --git a/samples/SupportAppNavigation/res/layout/peer.xml b/samples/SupportAppNavigation/res/layout/peer.xml
new file mode 100644
index 0000000..ee706b3
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/peer.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/peer_description" />
+    <TextView android:id="@+id/peer_counter"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:layout_marginTop="8dp"
+              android:text="@string/peer_count" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_peer"
+            android:onClick="onLaunchPeer" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/SupportAppNavigation/res/layout/simple_up.xml
similarity index 66%
copy from samples/NFCDemo/res/layout/tag_divider.xml
copy to samples/SupportAppNavigation/res/layout/simple_up.xml
index b6b1b7c..2897d84 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/SupportAppNavigation/res/layout/simple_up.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -14,9 +13,8 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+          android:layout_width="match_parent"
+          android:layout_height="match_parent"
+          android:text="@string/simple_up_description"
+          android:padding="16dp" />
diff --git a/samples/SupportAppNavigation/res/layout/view_from_other_task.xml b/samples/SupportAppNavigation/res/layout/view_from_other_task.xml
new file mode 100644
index 0000000..941d74c
--- /dev/null
+++ b/samples/SupportAppNavigation/res/layout/view_from_other_task.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/view_from_other_task_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_other_task"
+            android:onClick="onLaunchOtherTask" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/SupportAppNavigation/res/values-v11/styles.xml b/samples/SupportAppNavigation/res/values-v11/styles.xml
new file mode 100644
index 0000000..e61e9d4
--- /dev/null
+++ b/samples/SupportAppNavigation/res/values-v11/styles.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<resources>
+    <style name="InterstitialDialogLayout">
+        <item name="android:divider">?android:attr/dividerHorizontal</item>
+        <item name="android:showDividers">middle</item>
+    </style>
+
+    <style name="ButtonBar" parent="@android:style/Holo.ButtonBar.AlertDialog" />
+    <style name="ButtonBarButton" parent="@android:style/Widget.Holo.Button.Borderless" />
+
+</resources>
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/SupportAppNavigation/res/values-v11/themes.xml
similarity index 69%
copy from samples/NFCDemo/res/layout/tag_divider.xml
copy to samples/SupportAppNavigation/res/values-v11/themes.xml
index b6b1b7c..b9f7fdb 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/SupportAppNavigation/res/values-v11/themes.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -14,9 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+<resources>
+    <style name="Theme.Light" parent="@android:style/Theme.Holo.Light" />
+    <style name="Theme.Dialog" parent="@android:style/Theme.Holo.Dialog" />
+</resources>
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/SupportAppNavigation/res/values-v14/themes.xml
similarity index 69%
copy from samples/NFCDemo/res/layout/tag_divider.xml
copy to samples/SupportAppNavigation/res/values-v14/themes.xml
index b6b1b7c..79fabda 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/SupportAppNavigation/res/values-v14/themes.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -14,9 +13,6 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+<resources>
+    <style name="Theme.Light" parent="@android:style/Theme.DeviceDefault.Light" />
+</resources>
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/SupportAppNavigation/res/values/ids.xml
similarity index 69%
copy from samples/NFCDemo/res/layout/tag_divider.xml
copy to samples/SupportAppNavigation/res/values/ids.xml
index b6b1b7c..c143cf7 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/SupportAppNavigation/res/values/ids.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -14,9 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+<resources>
+    <item type="id" name="direct_notification" />
+    <item type="id" name="interstitial_notification" />
+</resources>
diff --git a/samples/SupportAppNavigation/res/values/strings.xml b/samples/SupportAppNavigation/res/values/strings.xml
new file mode 100644
index 0000000..e939b3f
--- /dev/null
+++ b/samples/SupportAppNavigation/res/values/strings.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<resources>
+    <string name="app_name">Support App Navigation Sample</string>
+    <string name="app_nav_home_label">Support App Navigation</string>
+
+    <string name="simple_up_label">Simple Up Navigation</string>
+    <string name="simple_up_description">This demo shows the simple case of up navigation that does not ever need to cross across different tasks. Press the up button on the action bar to return to the demo list. For simple drill-down navigation, the application up and system back buttons will navigate to the same location, leaving the task\'s back stack in the same state.</string>
+
+    <string name="peer_label">Peer Activities</string>
+    <string name="peer_description">This is an activity that shows content with many navigation peers. Think of a content browser that offers links to related content items. Pressing back from this activity will return to the previously viewed content item if you reached this point through a related link. If you reached it from the app nav example home activity, back will return there. Navigating up from this activity will always return to the app nav example home activity and clean up the back stack along the way.</string>
+    <string name="launch_peer">Link to another peer activity</string>
+    <string name="peer_count">Peer count: </string>
+
+    <string name="view_from_other_task_label">View from other task</string>
+    <string name="view_from_other_task_description">This combined demo shows how to handle up navigation when another task has launched your app\'s activity on its own task stack. Navigating up in this scenario should synthesize a task stack representing the most common or direct navigation path to the parent activity. The code example shows how to handle this using helper code from the support library. Press the button below to launch a separate task and begin the demo.</string>
+    <string name="launch_other_task">Launch new task</string>
+
+    <string name="outside_task_label">Outside Task</string>
+    <string name="outside_task_description">This activity has been launched in a new task. You can confirm this by pressing the Recents button now and switching back to the app navigation example task. This activity will view content with the fake mimetype \"application/x-example\" which will be received by another code example activity to continue the demo. Press the View button below.</string>
+
+    <string name="content_view_label">Content Viewer</string>
+    <string name="content_view_description">This activity can receive ACTION_VIEW intents with the mimetype \"application/x-example\", sent by the outside task component of this demo. If you launched the activity this way then it will be on the viewing activity\'s task stack. Press the back button to finish this activity and return to the activity that wanted to view the content. Press the up button in the action bar to jump back into the main demo task with a synthesized back stack. This matches the pattern for content viewers such as a photo gallery or video player.</string>
+    <string name="default_status_text">Navigated here from category</string>
+
+    <string name="content_category_label">Content Category</string>
+    <string name="intermediate_description">This activity is a parent for the example content viewer activity. Navigating up from the content viewer will lead here. Navigating up from here will lead back to the app navigation home activity. Note that if you reached this activity by navigating up from the example content viewer activity, you are back on the main app navigation example task. Press the button below to navigate to the content viewer activity.</string>
+    <string name="launch_content_view">Launch content view activity</string>
+
+    <string name="notifications_label">Notifications</string>
+    <string name="notifications_description">There are two classes of notifications: notifications that deep-link into an app directly, (e.g. an incoming SMS) and notifications that present an interstitial/summary of multiple collapsed notifications before linking into the app itself. (e.g. Calendar event notifications.) The buttons below will create notifications of each type.</string>
+    <string name="post_direct_notification">Post direct notification</string>
+    <string name="post_interstitial_notification">Post interstitial notification</string>
+
+    <string name="interstitial_label">Interstitial</string>
+    <string name="interstitial_description">This is an interstitial activity running in response to a notification. It presents a summary of info in a lightweight manner that does not exist as a task in Recents. Tap the button below to jump to the primary content.</string>
+
+</resources>
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/SupportAppNavigation/res/values/styles.xml
similarity index 69%
copy from samples/NFCDemo/res/layout/tag_divider.xml
copy to samples/SupportAppNavigation/res/values/styles.xml
index b6b1b7c..d869170 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/SupportAppNavigation/res/values/styles.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -14,9 +13,10 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
+<resources>
+    <style name="InterstitialDialogLayout" />
 
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+    <style name="ButtonBar" parent="@android:style/ButtonBar" />
+    <style name="ButtonBarButton" parent="@android:style/Widget.Button" />
+
+</resources>
diff --git a/samples/NFCDemo/res/layout/tag_divider.xml b/samples/SupportAppNavigation/res/values/themes.xml
similarity index 69%
rename from samples/NFCDemo/res/layout/tag_divider.xml
rename to samples/SupportAppNavigation/res/values/themes.xml
index b6b1b7c..beebacf 100644
--- a/samples/NFCDemo/res/layout/tag_divider.xml
+++ b/samples/SupportAppNavigation/res/values/themes.xml
@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2010 The Android Open Source Project
+<!-- 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.
@@ -14,9 +13,7 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-
-<View xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/listDivider"
-/>
\ No newline at end of file
+<resources>
+    <style name="Theme.Light" parent="@android:style/Theme.Light" />
+    <style name="Theme.Dialog" parent="@android:style/Theme.Dialog" />
+</resources>
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ActionBarCompat.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ActionBarCompat.java
similarity index 96%
rename from samples/AppNavigation/src/com/example/android/appnavigation/app/ActionBarCompat.java
rename to samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ActionBarCompat.java
index 0822336..6f22280 100644
--- a/samples/AppNavigation/src/com/example/android/appnavigation/app/ActionBarCompat.java
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ActionBarCompat.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.appnavigation.app;
+package com.example.android.support.appnavigation.app;
 
 import android.app.Activity;
 import android.os.Build;
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/AppNavHomeActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/AppNavHomeActivity.java
new file mode 100644
index 0000000..17f4d5b
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/AppNavHomeActivity.java
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Home activity for app navigation code samples.
+ */
+public class AppNavHomeActivity extends ListActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setListAdapter(new SampleAdapter(querySampleActivities()));
+    }
+
+    @Override
+    protected void onListItemClick(ListView lv, View v, int pos, long id) {
+        SampleInfo info = (SampleInfo) getListAdapter().getItem(pos);
+        startActivity(info.intent);
+    }
+
+    protected List<SampleInfo> querySampleActivities() {
+        Intent intent = new Intent(Intent.ACTION_MAIN, null);
+        intent.setPackage(getPackageName());
+        intent.addCategory(Intent.CATEGORY_SAMPLE_CODE);
+
+        PackageManager pm = getPackageManager();
+        List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
+
+        ArrayList<SampleInfo> samples = new ArrayList<SampleInfo>();
+
+        final int count = infos.size();
+        for (int i = 0; i < count; i++) {
+            final ResolveInfo info = infos.get(i);
+            final CharSequence labelSeq = info.loadLabel(pm);
+            String label = labelSeq != null ? labelSeq.toString() : info.activityInfo.name;
+
+            Intent target = new Intent();
+            target.setClassName(info.activityInfo.applicationInfo.packageName,
+                    info.activityInfo.name);
+            SampleInfo sample = new SampleInfo(label, target);
+            samples.add(sample);
+        }
+
+        return samples;
+    }
+
+    static class SampleInfo {
+        String name;
+        Intent intent;
+
+        SampleInfo(String name, Intent intent) {
+            this.name = name;
+            this.intent = intent;
+        }
+    }
+
+    class SampleAdapter extends BaseAdapter {
+        private List<SampleInfo> mItems;
+
+        public SampleAdapter(List<SampleInfo> items) {
+            mItems = items;
+        }
+
+        @Override
+        public int getCount() {
+            return mItems.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return mItems.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = getLayoutInflater().inflate(android.R.layout.simple_list_item_1,
+                        parent, false);
+                convertView.setTag(convertView.findViewById(android.R.id.text1));
+            }
+            TextView tv = (TextView) convertView.getTag();
+            tv.setText(mItems.get(position).name);
+            return convertView;
+        }
+
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ContentCategoryActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ContentCategoryActivity.java
new file mode 100644
index 0000000..d93482c
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ContentCategoryActivity.java
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+import android.view.View;
+
+public class ContentCategoryActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.content_category);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void onViewContent(View v) {
+        Intent target = new Intent(this, ContentViewActivity.class);
+        startActivity(target);
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ContentViewActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ContentViewActivity.java
new file mode 100644
index 0000000..42e25ea
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ContentViewActivity.java
@@ -0,0 +1,67 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.support.v4.app.ShareCompat;
+import android.support.v4.app.TaskStackBuilder;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class ContentViewActivity extends Activity {
+    public static final String EXTRA_TEXT = "com.example.android.appnavigation.EXTRA_TEXT";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.content_view);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+
+        Intent intent = getIntent();
+        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
+            TextView tv = (TextView) findViewById(R.id.status_text);
+            tv.setText("Viewing content from ACTION_VIEW");
+        } else if (intent.hasExtra(EXTRA_TEXT)) {
+            TextView tv = (TextView) findViewById(R.id.status_text);
+            tv.setText(intent.getStringExtra(EXTRA_TEXT));
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            Intent upIntent = NavUtils.getParentActivityIntent(this);
+            if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
+                TaskStackBuilder.from(this)
+                        .addParentStack(this)
+                        .startActivities();
+                finish();
+            } else {
+                NavUtils.navigateUpTo(this, upIntent);
+            }
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/InterstitialMessageActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/InterstitialMessageActivity.java
new file mode 100644
index 0000000..72c3565
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/InterstitialMessageActivity.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.TaskStackBuilder;
+import android.view.View;
+
+public class InterstitialMessageActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.interstitial_message);
+    }
+
+    public void onViewContent(View v) {
+        TaskStackBuilder.from(this)
+                .addParentStack(ContentViewActivity.class)
+                .addNextIntent(new Intent(this, ContentViewActivity.class)
+                        .putExtra(ContentViewActivity.EXTRA_TEXT, "From Interstitial Notification"))
+                .startActivities();
+        finish();
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/NotificationsActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/NotificationsActivity.java
new file mode 100644
index 0000000..0f80938
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/NotificationsActivity.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.Activity;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.TaskStackBuilder;
+import android.view.MenuItem;
+import android.view.View;
+
+public class NotificationsActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.notifications);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void onPostDirect(View v) {
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+                .setTicker("Direct Notification")
+                .setSmallIcon(android.R.drawable.stat_notify_chat)
+                .setContentTitle("Direct Notification")
+                .setContentText("This will open the content viewer")
+                .setAutoCancel(true)
+                .setContentIntent(TaskStackBuilder.from(this)
+                        .addParentStack(ContentViewActivity.class)
+                        .addNextIntent(new Intent(this, ContentViewActivity.class)
+                                .putExtra(ContentViewActivity.EXTRA_TEXT, "From Notification"))
+                        .getPendingIntent(0, 0));
+        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        nm.notify("direct_tag", R.id.direct_notification, builder.getNotification());
+    }
+
+    public void onPostInterstitial(View v) {
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+                .setTicker("Interstitial Notification")
+                .setSmallIcon(android.R.drawable.stat_notify_chat)
+                .setContentTitle("Interstitial Notification")
+                .setContentText("This will show a detail page")
+                .setAutoCancel(true)
+                .setContentIntent(PendingIntent.getActivity(this, 0,
+                        new Intent(this, InterstitialMessageActivity.class)
+                                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+                                        Intent.FLAG_ACTIVITY_CLEAR_TASK), 0));
+        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        nm.notify("interstitial_tag", R.id.interstitial_notification, builder.getNotification());
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/OutsideTaskActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/OutsideTaskActivity.java
new file mode 100644
index 0000000..2f75d6b
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/OutsideTaskActivity.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+
+public class OutsideTaskActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.outside_task);
+    }
+
+    public void onViewContent(View v) {
+        Intent intent = new Intent(Intent.ACTION_VIEW)
+                .setType("application/x-example")
+                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+        startActivity(intent);
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/PeerActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/PeerActivity.java
new file mode 100644
index 0000000..a6dbca4
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/PeerActivity.java
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.TextView;
+
+public class PeerActivity extends Activity {
+    private static final String EXTRA_PEER_COUNT =
+            "com.example.android.appnavigation.EXTRA_PEER_COUNT";
+
+    private int mPeerCount;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.peer);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+
+        mPeerCount = getIntent().getIntExtra(EXTRA_PEER_COUNT, 0) + 1;
+        TextView tv = (TextView) findViewById(R.id.peer_counter);
+        tv.setText(getResources().getText(R.string.peer_count).toString() + mPeerCount);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void onLaunchPeer(View v) {
+        Intent target = new Intent(this, PeerActivity.class);
+        target.putExtra(EXTRA_PEER_COUNT, mPeerCount);
+        startActivity(target);
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/SimpleUpActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/SimpleUpActivity.java
new file mode 100644
index 0000000..7c09051
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/SimpleUpActivity.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+
+public class SimpleUpActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.simple_up);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ViewFromOtherTaskActivity.java b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ViewFromOtherTaskActivity.java
new file mode 100644
index 0000000..46e6349
--- /dev/null
+++ b/samples/SupportAppNavigation/src/com/example/android/support/appnavigation/app/ViewFromOtherTaskActivity.java
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+package com.example.android.support.appnavigation.app;
+
+import com.example.android.support.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+import android.view.View;
+
+public class ViewFromOtherTaskActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.view_from_other_task);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return false;
+    }
+
+    public void onLaunchOtherTask(View v) {
+        Intent target = new Intent(this, OutsideTaskActivity.class)
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+                        Intent.FLAG_ACTIVITY_TASK_ON_HOME);
+        startActivity(target);
+    }
+}
diff --git a/samples/XmlAdapters/AndroidManifest.xml b/samples/XmlAdapters/AndroidManifest.xml
index e4ac4d8..7a48fb3 100644
--- a/samples/XmlAdapters/AndroidManifest.xml
+++ b/samples/XmlAdapters/AndroidManifest.xml
@@ -47,8 +47,7 @@
             </intent-filter>
         </activity>
 
-        <provider android:name="android.content.XmlDocumentProvider"
-           android:authorities="xmldocument" />
+        <provider android:name="XmlDocumentProvider" android:authorities="xmldocument" />
 
     </application>
 
diff --git a/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java b/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java
index eb91fcb..6e408cc 100644
--- a/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java
+++ b/samples/XmlAdapters/src/com/example/android/xmladapters/ImageDownloader.java
@@ -41,6 +41,7 @@
 import java.lang.ref.WeakReference;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
@@ -58,11 +59,11 @@
     private static final int DELAY_BEFORE_PURGE = 30 * 1000; // in milliseconds
 
     // Hard cache, with a fixed maximum capacity and a life duration
-    private final HashMap<String, Bitmap> sHardBitmapCache =
+    private final static HashMap<String, Bitmap> sHardBitmapCache =
         new LinkedHashMap<String, Bitmap>(HARD_CACHE_CAPACITY / 2, 0.75f, true) {
         private static final long serialVersionUID = -7190622541619388252L;
         @Override
-        protected boolean removeEldestEntry(LinkedHashMap.Entry<String, Bitmap> eldest) {
+        protected boolean removeEldestEntry(Map.Entry<String, Bitmap> eldest) {
             if (size() > HARD_CACHE_CAPACITY) {
                 // Entries push-out of hard reference cache are transferred to soft reference cache
                 sSoftBitmapCache.put(eldest.getKey(), new SoftReference<Bitmap>(eldest.getValue()));
diff --git a/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java b/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java
index d0ab0cf..bf3b7ea 100644
--- a/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java
+++ b/samples/XmlAdapters/src/com/example/android/xmladapters/XmlDocumentProvider.java
@@ -59,7 +59,7 @@
  * <p>To add this provider in your application, you should add its declaration to your application
  * manifest:
  * <pre class="prettyprint">
- * &lt;provider android:name="android.content.XmlDocumentProvider" android:authorities="xmldocument" /&gt;
+ * &lt;provider android:name="XmlDocumentProvider" android:authorities="xmldocument" /&gt;
  * </pre>
  * </p>
  *
diff --git a/scripts/reverse_tether.sh b/scripts/reverse_tether.sh
new file mode 100755
index 0000000..82f7c59
--- /dev/null
+++ b/scripts/reverse_tether.sh
@@ -0,0 +1,261 @@
+#!/bin/bash
+# Copyright 2010 Google Inc.
+# All right reserved.
+# Author: Szymon Jakubczak <szym@google.com>
+#
+# Configure the host and the Android phone for "reverse tethering".
+# (Route all network traffic via the host.)
+
+# default values
+: ${BRIDGE:=usbeth}
+: ${LAN_DEV:=eth0}          # LAN uplink on the host
+: ${HOST_DEV:=usb0}         # name of the RNDIS interface on the host
+: ${PHONE_DEV:=rndis0}        # name of the RNDIS interface on the phone
+
+: ${PHONE_IP:=192.168.77.2} # for NAT and tests
+: ${HOST_IP:=192.168.77.1}
+: ${NETMASK:=255.255.255.0}
+
+# location of the hwaddr utility
+: ${HWADDR:=/home/build/nonconf/google3/experimental/users/szym/moblat/hwaddr/hwaddr-armeabi}
+: ${PHONE_HW:=""}  # hardware (Ethernet) address for the interface (bridge only)
+
+# for NAT configuration
+: ${DNS1:=8.8.8.8}
+: ${DNS2:=8.8.4.4}
+
+# export ADB=/path/to/sdk/adb for custom adb
+ADB="${ADB:-adb} ${SERIAL:+-s $SERIAL}"
+
+set -e
+trap error ERR
+
+error() {
+  echo >&2 "Error occured: $?"
+}
+
+usage() {
+  echo "Usage: $0 <command>"
+  echo "    rndis      -- start RNDIS and test ping the phone"
+  echo "    nat        -- use host as NAT"
+  echo "    nat+secure -- nat + extra security"
+  echo "    bridge     -- use host as bridge"
+  echo "    stop       -- switch back to 3G"
+  echo "    stop-all   -- clean up everything"
+  echo
+  echo "Advanced Commands"
+  echo "  Host:"
+  echo "    nat_start "
+  echo "    nat_secure "
+  echo "    nat_stop "
+  echo "    bridge_start "
+  echo "    bridge_add "
+  echo "    bridge_stop "
+  echo "  Phone:"
+  echo "    rndis_start "
+  echo "    rndis_stop "
+  echo "    rndis_test "
+  echo "    route_nat "
+  echo "    route_bridge "
+  echo "    route_reset "
+  echo
+  echo "Options and Environment Variables:"
+  echo " -h|--help"
+  echo " -b bridge_name                 BRIDGE=$BRIDGE"
+  echo " -s serial_number               SERIAL=$SERIAL"
+  echo " -u host_usb_device             HOST_DEV=$HOST_DEV"
+  echo " -l host_lan_device             LAN_DEV=$LAN_DEV"
+  echo " -d dns1 dns2                   DNS1=$DNS1"
+  echo "                                DNS2=$DNS2"
+  echo " -p phone_ip                    PHONE_IP=$PHONE_IP"
+  echo " -a host_ip                     HOST_IP=$HOST_IP"
+  echo " -m netmask                     NETMASK=$NETMASK"
+  echo " -e hardware_addr               PHONE_HW=$PHONE_HW"
+  echo
+  echo " HWADDR=$HWADDR"
+  echo " ADB=$ADB"
+}
+
+##################################
+### PHONE configuration routines
+##################################
+rndis_start() {
+  echo "Starting RNDIS..."
+  $ADB wait-for-device
+  $ADB shell "svc usb setFunction rndis"
+  $ADB wait-for-device
+  $ADB shell "ifconfig $PHONE_DEV down"
+  if [[ -n "$PHONE_HW" ]]; then
+    $ADB push $HWADDR /data/local/hwaddr  # TODO(szym) handle failures?
+    $ADB shell "/data/local/hwaddr $PHONE_DEV $PHONE_HW"
+    $ADB shell "/data/local/hwaddr $PHONE_DEV"
+  fi
+}
+
+rndis_stop() {
+  $ADB shell "svc usb setFunction" #empty to clear
+}
+
+rndis_test() {
+  # configure some IPs, so that we can ping
+  $ADB shell "ifconfig $PHONE_DEV $PHONE_IP netmask $NETMASK up"
+  sudo ifconfig $HOST_DEV $HOST_IP netmask $NETMASK up
+  echo "Pinging the phone..."
+  ping -q -c 1 -W 1 $PHONE_IP
+  echo "Success!"
+}
+
+update_dns() {
+  $ADB shell 'setprop net.dnschange $((`getprop net.dnschange`+1))'
+}
+
+default_routes() {
+  $ADB shell 'cat /proc/net/route' | awk '{ if ($2==00000000) print $1 }'
+}
+
+route_none() {
+  $ADB shell "svc data disable"
+  $ADB shell "svc wifi disable"
+  # kill all default route interfaces (just in case something remains)
+  for dev in `default_routes`; do
+    $ADB shell "ifconfig $dev down"
+  done
+}
+route_nat() {
+  echo "Setting up phone routes and DNS..."
+  route_none
+  $ADB shell "ifconfig $PHONE_DEV $PHONE_IP netmask $NETMASK up"
+  $ADB shell "route add default gw $HOST_IP dev $PHONE_DEV"
+  $ADB shell "setprop net.dns1 $DNS1"
+  $ADB shell "setprop net.dns2 $DNS2"
+  update_dns
+}
+route_bridge() {
+  echo "Running DHCP on the phone..."
+  route_none
+  $ADB shell "ifconfig $PHONE_DEV up"
+  $ADB shell "netcfg $PHONE_DEV dhcp"
+  $ADB shell "ifconfig $PHONE_DEV"  # for diagnostics
+
+  DNS1=`$ADB shell getprop net.${PHONE_DEV}.dns1`
+  $ADB shell "setprop net.dns1 $DNS1"
+  DNS2=`$ADB shell getprop net.${PHONE_DEV}.dns2`
+  $ADB shell "setprop net.dns2 $DNS2"
+  update_dns
+}
+route_reset() {
+  route_none
+  $ADB shell "svc data enable"
+}
+
+#################################
+### HOST configuration routines
+#################################
+nat_start() {
+  echo "Configuring NAT..."
+  sudo sysctl -w net.ipv4.ip_forward=1
+  sudo iptables -F
+  sudo iptables -t nat -F
+  sudo iptables -t nat -A POSTROUTING -o $LAN_DEV -j MASQUERADE
+  sudo iptables -P FORWARD ACCEPT
+  sudo ifconfig $HOST_DEV $HOST_IP netmask $NETMASK up
+}
+nat_secure() {
+  echo "Making your NAT secure..."
+  sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
+  sudo iptables -A FORWARD -m state --state NEW -i $HOST_DEV -j ACCEPT
+  sudo iptables -P FORWARD DROP
+  sudo ifconfig usb0 $HOST_IP netmask $NETMASK up
+}
+nat_stop() {
+  sudo sysctl -w net.ipv4.ip_forward=0
+  sudo iptables -F
+  sudo iptables -t nat -F
+}
+
+bridge_start() {
+  echo "Configuring bridge..."
+  sudo brctl addbr $BRIDGE || return 0 # all good
+  sudo brctl setfd $BRIDGE 0
+  sudo ifconfig $LAN_DEV 0.0.0.0
+  sudo brctl addif $BRIDGE $LAN_DEV
+  sudo dhclient $BRIDGE || {
+    echo "DHCP failed. Recovering..."
+    bridge_stop
+    false
+  }
+}
+bridge_add() {
+  echo "Adding usb0 to the bridge"
+  sudo brctl delif $BRIDGE $HOST_DEV 2>/dev/null || true # ignore
+  sudo ifconfig $HOST_DEV 0.0.0.0
+  sudo brctl addif $BRIDGE $HOST_DEV
+}
+bridge_stop() {
+  sudo ifconfig $BRIDGE down || true # ignore errors
+  sudo brctl delbr $BRIDGE || true
+  sudo dhclient $LAN_DEV
+}
+
+### command-line interpreter
+if [ $# == "0" ]; then
+  usage
+fi
+
+while (( $# )); do
+case $1 in
+--help|-h)
+  usage
+  exit
+  ;;
+
+-b) shift; BRIDGE=$1 ;;
+-s) shift; SERIAL=$1 ;;
+-u) shift; HOST_DEV=$1 ;;
+-l) shift; LAN_DEV=$1 ;;
+-d) shift; DNS1=$1; shift; DNS2=$1 ;;
+-p) shift; PHONE_IP=$1 ;;
+-a) shift; HOST_IP=$1 ;;
+-m) shift; NETMASK=$1 ;;
+-e) shift; PHONE_HW=$1 ;;
+
+rndis)
+  rndis_start
+  rndis_test
+  ;;
+
+bridge)
+  ifconfig $HOST_DEV >/dev/null || $0 rndis
+  bridge_start
+  bridge_add
+  route_bridge
+  ;;
+
+nat)
+  ifconfig $HOST_DEV >/dev/null || $0 rndis
+  nat_start
+  route_nat
+  ;;
+
+nat+secure)
+  $0 nat
+  nat_secure
+  ;;
+
+stop)
+  route_reset
+  ;;
+
+stop-all)
+  bridge_stop
+  nat_stop
+  route_reset
+  rndis_stop
+  ;;
+
+*) # execute 'advanced command' by function name
+  $1
+  ;;
+esac
+shift
+done
diff --git a/sdk/api-versions.xml b/sdk/api-versions.xml
index e52fb1a..8e547d6 100644
--- a/sdk/api-versions.xml
+++ b/sdk/api-versions.xml
@@ -78,7 +78,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" />
@@ -90,6 +92,7 @@
 		<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" />
@@ -125,6 +128,7 @@
 		<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" />
@@ -136,21 +140,42 @@
 		<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="ACCOUNTS" />
+		<field name="AFFECTS_BATTERY" since="16" />
+		<field name="APP_INFO" since="16" />
+		<field name="AUDIO_SETTINGS" since="16" />
+		<field name="BLUETOOTH_NETWORK" since="16" />
+		<field name="BOOKMARKS" since="16" />
+		<field name="CALENDAR" since="16" />
+		<field name="CAMERA" since="16" />
 		<field name="COST_MONEY" />
 		<field name="DEVELOPMENT_TOOLS" />
+		<field name="DEVICE_ALARMS" since="16" />
+		<field name="DISPLAY" since="16" />
 		<field name="HARDWARE_CONTROLS" />
 		<field name="LOCATION" />
 		<field name="MESSAGES" />
+		<field name="MICROPHONE" since="16" />
 		<field name="NETWORK" />
 		<field name="PERSONAL_INFO" />
 		<field name="PHONE_CALLS" />
+		<field name="SCREENLOCK" since="16" />
+		<field name="SHORTRANGE_NETWORK" since="16" />
+		<field name="SOCIAL_INFO" since="16" />
+		<field name="STATUS_BAR" since="16" />
 		<field name="STORAGE" since="4" />
+		<field name="SYNC_SETTINGS" since="16" />
+		<field name="SYSTEM_CLOCK" since="16" />
 		<field name="SYSTEM_TOOLS" />
+		<field name="USER_DICTIONARY" since="16" />
+		<field name="VOICEMAIL" since="16" />
+		<field name="WALLPAPER" since="16" />
+		<field name="WRITE_USER_DICTIONARY" since="16" />
 	</class>
 	<class name="android/R" since="1">
 		<extends name="java/lang/Object" />
@@ -466,6 +491,7 @@
 		<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" />
@@ -536,6 +562,7 @@
 		<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" />
@@ -568,6 +595,7 @@
 		<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" />
@@ -586,6 +614,7 @@
 		<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" />
@@ -724,12 +753,14 @@
 		<field name="panelColorForeground" />
 		<field name="panelFullBackground" />
 		<field name="panelTextAppearance" />
+		<field name="parentActivityName" since="16" />
 		<field name="password" />
 		<field name="path" />
 		<field name="pathPattern" />
 		<field name="pathPrefix" />
 		<field name="permission" />
 		<field name="permissionGroup" />
+		<field name="permissionGroupFlags" since="16" />
 		<field name="persistent" />
 		<field name="persistentDrawingCache" />
 		<field name="phoneNumber" />
@@ -1979,11 +2010,34 @@
 	<class name="android/accessibilityservice/AccessibilityService" since="4">
 		<extends name="android/app/Service" />
 		<method name="&lt;init>()V" />
+		<method name="getRootInActiveWindow()Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
+		<method name="getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;" since="16" />
 		<method name="onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onGesture(I)Z" since="16" />
 		<method name="onInterrupt()V" />
 		<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_RECENTS" since="16" />
 		<field name="SERVICE_INTERFACE" />
 		<field name="SERVICE_META_DATA" since="14" />
 	</class>
@@ -1991,7 +2045,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="feedbackTypeToString(I)Ljava/lang/String;" since="14" />
 		<method name="flagToString(I)Ljava/lang/String;" since="14" />
 		<method name="getCanRetrieveWindowContent()Z" since="14" />
@@ -1999,7 +2052,7 @@
 		<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="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/String;" since="16" />
 		<field name="CREATOR" />
 		<field name="DEFAULT" />
 		<field name="FEEDBACK_ALL_MASK" since="14" />
@@ -2008,6 +2061,8 @@
 		<field name="FEEDBACK_HAPTIC" />
 		<field name="FEEDBACK_SPOKEN" />
 		<field name="FEEDBACK_VISUAL" />
+		<field name="FLAG_INCLUDE_NOT_IMPORTANT_VIEWS" since="16" />
+		<field name="FLAG_REQUEST_TOUCH_EXPLORATION_MODE" since="16" />
 		<field name="eventTypes" />
 		<field name="feedbackType" />
 		<field name="flags" />
@@ -2032,8 +2087,6 @@
 		<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="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="name" />
 		<field name="type" />
@@ -2047,15 +2100,14 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="describeContents()I" />
 		<method name="onError(ILjava/lang/String;)V" />
 		<method name="onRequestContinued()V" />
 		<method name="onResult(Landroid/os/Bundle;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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" />
@@ -2115,12 +2167,14 @@
 		<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()LV;" />
-		<method name="getResult(JLjava/util/concurrent/TimeUnit;)LV;" />
+		<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>
@@ -2136,9 +2190,7 @@
 		<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="describeContents()I" />
 		<method name="newKey(Ljava/lang/String;)Landroid/accounts/AuthenticatorDescription;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="accountPreferencesId" />
 		<field name="customTokens" since="11" />
@@ -2163,6 +2215,7 @@
 		<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">
@@ -2196,6 +2249,7 @@
 		<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" />
@@ -2210,29 +2264,22 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/animation/Animator$AnimatorListener" />
 		<method name="&lt;init>()V" />
-		<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/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="getDuration()J" />
-		<method name="getStartDelay()J" />
-		<method name="isRunning()Z" />
 		<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;" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
-		<method name="setStartDelay(J)V" />
 	</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;" />
@@ -2242,21 +2289,18 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/animation/TypeEvaluator" />
 		<method name="&lt;init>()V" />
-		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
 	</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" />
-		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
 	</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" />
-		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
 	</class>
 	<class name="android/animation/Keyframe" since="11">
 		<extends name="java/lang/Object" />
@@ -2283,6 +2327,8 @@
 		<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;" />
@@ -2290,8 +2336,10 @@
 		<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" />
@@ -2302,33 +2350,39 @@
 		<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="ofFloat(LT;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;" since="14" />
+		<method name="ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;" since="14" />
 		<method name="ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;" />
-		<method name="ofInt(LT;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="14" />
+		<method name="ofInt(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="14" />
 		<method name="ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;" />
-		<method name="ofObject(LT;Landroid/util/Property;Landroid/animation/TypeEvaluator;[LV;)Landroid/animation/ObjectAnimator;" since="14" />
+		<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/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" />
 		<method name="ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator;" />
+		<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/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" />
@@ -2337,7 +2391,7 @@
 		<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="ofObject(Landroid/util/Property;Landroid/animation/TypeEvaluator;[LV;)Landroid/animation/PropertyValuesHolder;" since="14" />
+		<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/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" />
 		<method name="setEvaluator(Landroid/animation/TypeEvaluator;)V" />
 		<method name="setFloatValues([F)V" />
@@ -2347,29 +2401,37 @@
 		<method name="setProperty(Landroid/util/Property;)V" since="14" />
 		<method name="setPropertyName(Ljava/lang/String;)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/TypeEvaluator" since="11">
-		<method name="evaluate(FLT;LT;)LT;" since="14" />
+		<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="getDuration()J" />
 		<method name="getFrameDelay()J" />
 		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" />
 		<method name="getRepeatCount()I" />
 		<method name="getRepeatMode()I" />
-		<method name="getStartDelay()J" />
 		<method name="getValues()[Landroid/animation/PropertyValuesHolder;" />
-		<method name="isRunning()Z" />
 		<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;" />
@@ -2383,19 +2445,28 @@
 		<method name="setFloatValues([F)V" />
 		<method name="setFrameDelay(J)V" />
 		<method name="setIntValues([I)V" />
-		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
 		<method name="setObjectValues([Ljava/lang/Object;)V" />
 		<method name="setRepeatCount(I)V" />
 		<method name="setRepeatMode(I)V" />
-		<method name="setStartDelay(J)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" />
@@ -2470,9 +2541,11 @@
 		<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">
@@ -2498,6 +2571,7 @@
 		<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" />
@@ -2505,29 +2579,24 @@
 	<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" />
-		<implements name="android/view/LayoutInflater$Factory2" since="11" />
-		<implements name="android/content/ComponentCallbacks2" since="14" />
 		<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="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="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="finishFromChild(Landroid/app/Activity;)V" />
 		<method name="getActionBar()Landroid/app/ActionBar;" since="11" />
 		<method name="getApplication()Landroid/app/Application;" />
@@ -2545,6 +2614,7 @@
 		<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" />
@@ -2561,67 +2631,48 @@
 		<method name="isTaskRoot()Z" />
 		<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="onActionModeFinished(Landroid/view/ActionMode;)V" since="11" />
-		<method name="onActionModeStarted(Landroid/view/ActionMode;)V" since="11" />
+		<method name="navigateUpTo(Landroid/content/Intent;)Z" since="16" />
+		<method name="navigateUpToFromChild(Landroid/app/Activity;Landroid/content/Intent;)Z" since="16" />
 		<method name="onActivityResult(IILandroid/content/Intent;)V" />
 		<method name="onAttachFragment(Landroid/app/Fragment;)V" since="11" />
-		<method name="onAttachedToWindow()V" since="5" />
 		<method name="onBackPressed()V" since="5" />
 		<method name="onChildTitleChanged(Landroid/app/Activity;Ljava/lang/CharSequence;)V" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
-		<method name="onContentChanged()V" />
 		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
 		<method name="onContextMenuClosed(Landroid/view/Menu;)V" />
 		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
 		<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="onCreatePanelMenu(ILandroid/view/Menu;)Z" />
-		<method name="onCreatePanelView(I)Landroid/view/View;" />
 		<method name="onCreateThumbnail(Landroid/graphics/Bitmap;Landroid/graphics/Canvas;)Z" />
-		<method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" since="11" />
-		<method name="onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" />
 		<method name="onDestroy()V" />
-		<method name="onDetachedFromWindow()V" since="5" />
 		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<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="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11" />
-		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
-		<method name="onLowMemory()V" />
-		<method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z" />
-		<method name="onMenuOpened(ILandroid/view/Menu;)Z" />
+		<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="onPanelClosed(ILandroid/view/Menu;)V" />
 		<method name="onPause()V" />
 		<method name="onPostCreate(Landroid/os/Bundle;)V" />
 		<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="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z" />
 		<method name="onRestart()V" />
 		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
 		<method name="onResume()V" />
 		<method name="onRetainNonConfigurationInstance()Ljava/lang/Object;" />
 		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
-		<method name="onSearchRequested()Z" />
 		<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="onTrimMemory(I)V" since="14" />
 		<method name="onUserInteraction()V" since="3" />
 		<method name="onUserLeaveHint()V" since="3" />
-		<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" />
 		<method name="openContextMenu(Landroid/view/View;)V" />
 		<method name="openOptionsMenu()V" />
 		<method name="overridePendingTransition(II)V" since="5" />
@@ -2654,17 +2705,25 @@
 		<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="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="startSearch(Ljava/lang/String;ZLandroid/os/Bundle;Z)V" />
 		<method name="stopManagingCursor(Landroid/database/Cursor;)V" />
 		<method name="takeKeyEvents(Z)V" />
@@ -2689,12 +2748,14 @@
 	</class>
 	<class name="android/app/ActivityManager" since="1">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<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;" />
@@ -2706,6 +2767,7 @@
 		<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="MOVE_TASK_NO_USER_ACTION" since="12" />
 		<field name="MOVE_TASK_WITH_HOME" since="11" />
@@ -2716,21 +2778,18 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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="describeContents()I" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CRASHED" />
 		<field name="CREATOR" />
 		<field name="NOT_RESPONDING" />
@@ -2749,9 +2808,7 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="baseIntent" />
 		<field name="description" since="11" />
@@ -2764,9 +2821,7 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;I[Ljava/lang/String;)V" />
-		<method name="describeContents()I" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="IMPORTANCE_BACKGROUND" />
 		<field name="IMPORTANCE_EMPTY" />
@@ -2781,6 +2836,7 @@
 		<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" />
@@ -2791,9 +2847,7 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="FLAG_FOREGROUND" since="5" />
 		<field name="FLAG_PERSISTENT_PROCESS" since="5" />
@@ -2818,9 +2872,7 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="baseActivity" />
 		<field name="description" />
@@ -2830,8 +2882,18 @@
 		<field name="thumbnail" />
 		<field name="topActivity" />
 	</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="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="setInexactRepeating(IJJLandroid/app/PendingIntent;)V" since="3" />
@@ -2926,15 +2988,13 @@
 		<implements name="android/content/ComponentCallbacks" />
 		<implements name="android/content/ComponentCallbacks2" since="14" />
 		<method name="&lt;init>()V" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
 		<method name="onCreate()V" />
-		<method name="onLowMemory()V" />
 		<method name="onTerminate()V" />
-		<method name="onTrimMemory(I)V" since="14" />
 		<method name="registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14" />
 		<method name="unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14" />
 	</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" />
@@ -2944,13 +3004,12 @@
 		<method name="onActivityStopped(Landroid/app/Activity;)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="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="TYPE_ANR" />
 		<field name="TYPE_BATTERY" />
@@ -2969,6 +3028,7 @@
 		<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" />
@@ -2978,6 +3038,7 @@
 		<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" />
@@ -2988,6 +3049,7 @@
 		<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" />
@@ -3002,6 +3064,7 @@
 		<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" />
@@ -3011,16 +3074,15 @@
 	</class>
 	<class name="android/app/DatePickerDialog" since="1">
 		<extends name="android/app/AlertDialog" />
-		<implements name="android/widget/DatePicker$OnDateChangedListener" />
 		<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="onClick(Landroid/content/DialogInterface;I)V" />
-		<method name="onDateChanged(Landroid/widget/DatePicker;III)V" />
 		<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">
@@ -3033,15 +3095,7 @@
 		<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="cancel()V" />
 		<method name="closeOptionsMenu()V" />
-		<method name="dismiss()V" />
-		<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="findViewById(I)Landroid/view/View;" />
 		<method name="getActionBar()Landroid/app/ActionBar;" since="11" />
 		<method name="getContext()Landroid/content/Context;" />
@@ -3053,42 +3107,22 @@
 		<method name="hide()V" />
 		<method name="invalidateOptionsMenu()V" since="11" />
 		<method name="isShowing()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="onBackPressed()V" since="5" />
-		<method name="onContentChanged()V" />
 		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
 		<method name="onContextMenuClosed(Landroid/view/Menu;)V" />
 		<method name="onCreate(Landroid/os/Bundle;)V" />
-		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
 		<method name="onCreateOptionsMenu(Landroid/view/Menu;)Z" />
-		<method name="onCreatePanelMenu(ILandroid/view/Menu;)Z" />
-		<method name="onCreatePanelView(I)Landroid/view/View;" />
-		<method name="onDetachedFromWindow()V" since="5" />
 		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
-		<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="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11" />
-		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
-		<method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z" />
-		<method name="onMenuOpened(ILandroid/view/Menu;)Z" />
 		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
 		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
-		<method name="onPanelClosed(ILandroid/view/Menu;)V" />
 		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z" />
-		<method name="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z" />
 		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
 		<method name="onSaveInstanceState()Landroid/os/Bundle;" />
-		<method name="onSearchRequested()Z" />
 		<method name="onStart()V" />
 		<method name="onStop()V" />
 		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
 		<method name="onTrackballEvent(Landroid/view/MotionEvent;)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" />
 		<method name="openContextMenu(Landroid/view/View;)V" />
 		<method name="openOptionsMenu()V" />
 		<method name="registerForContextMenu(Landroid/view/View;)V" />
@@ -3127,9 +3161,7 @@
 		<method name="getShowsDialog()Z" />
 		<method name="getTheme()I" />
 		<method name="isCancelable()Z" />
-		<method name="onCancel(Landroid/content/DialogInterface;)V" />
 		<method name="onCreateDialog(Landroid/os/Bundle;)Landroid/app/Dialog;" />
-		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
 		<method name="setCancelable(Z)V" />
 		<method name="setShowsDialog(Z)V" />
 		<method name="setStyle(II)V" />
@@ -3142,6 +3174,7 @@
 	</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" />
@@ -3201,6 +3234,7 @@
 		<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;" />
@@ -3220,18 +3254,15 @@
 	</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" />
-		<implements name="android/view/View$OnCreateContextMenuListener" />
 		<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="onChildClick(Landroid/widget/ExpandableListView;Landroid/view/View;IIJ)Z" />
-		<method name="onGroupCollapse(I)V" />
-		<method name="onGroupExpand(I)V" />
 		<method name="setListAdapter(Landroid/widget/ExpandableListAdapter;)V" />
 		<method name="setSelectedChild(IIZ)Z" />
 		<method name="setSelectedGroup(I)V" />
@@ -3239,11 +3270,10 @@
 	<class name="android/app/Fragment" since="11">
 		<extends name="java/lang/Object" />
 		<implements name="android/content/ComponentCallbacks" />
-		<implements name="android/view/View$OnCreateContextMenuListener" />
 		<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="equals(Ljava/lang/Object;)Z" />
 		<method name="getActivity()Landroid/app/Activity;" />
 		<method name="getArguments()Landroid/os/Bundle;" />
 		<method name="getFragmentManager()Landroid/app/FragmentManager;" />
@@ -3259,7 +3289,6 @@
 		<method name="getText(I)Ljava/lang/CharSequence;" />
 		<method name="getUserVisibleHint()Z" since="15" />
 		<method name="getView()Landroid/view/View;" />
-		<method name="hashCode()I" />
 		<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" />
@@ -3272,11 +3301,9 @@
 		<method name="onActivityCreated(Landroid/os/Bundle;)V" />
 		<method name="onActivityResult(IILandroid/content/Intent;)V" />
 		<method name="onAttach(Landroid/app/Activity;)V" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
 		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
 		<method name="onCreate(Landroid/os/Bundle;)V" />
 		<method name="onCreateAnimator(IZI)Landroid/animation/Animator;" />
-		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
 		<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" />
@@ -3286,7 +3313,6 @@
 		<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="onLowMemory()V" />
 		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
 		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
 		<method name="onPause()V" />
@@ -3295,7 +3321,6 @@
 		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
 		<method name="onStart()V" />
 		<method name="onStop()V" />
-		<method name="onTrimMemory(I)V" since="14" />
 		<method name="onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V" since="13" />
 		<method name="registerForContextMenu(Landroid/view/View;)V" />
 		<method name="setArguments(Landroid/os/Bundle;)V" />
@@ -3306,7 +3331,9 @@
 		<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">
@@ -3316,8 +3343,7 @@
 	<class name="android/app/Fragment$SavedState" since="13">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="&lt;init>()V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/app/FragmentBreadCrumbs" since="11">
@@ -3326,8 +3352,6 @@
 		<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="onBackStackChanged()V" />
-		<method name="onLayout(ZIIII)V" />
 		<method name="setActivity(Landroid/app/Activity;)V" />
 		<method name="setMaxVisible(I)V" />
 		<method name="setOnBreadCrumbClickListener(Landroid/app/FragmentBreadCrumbs$OnBreadCrumbClickListener;)V" since="12" />
@@ -3335,6 +3359,7 @@
 		<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">
@@ -3363,6 +3388,7 @@
 		<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;" />
@@ -3371,6 +3397,7 @@
 		<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">
@@ -3492,22 +3519,24 @@
 	<class name="android/app/IntentService" since="3">
 		<extends name="android/app/Service" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<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="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">
@@ -3522,7 +3551,7 @@
 	</class>
 	<class name="android/app/LauncherActivity$IconResizer" since="3">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
+		<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">
@@ -3571,8 +3600,9 @@
 		<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;LD;)V" />
+		<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">
@@ -3597,13 +3627,6 @@
 		<implements name="android/view/SurfaceHolder$Callback2" />
 		<implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener" />
 		<method name="&lt;init>()V" />
-		<method name="onGlobalLayout()V" />
-		<method name="onInputQueueCreated(Landroid/view/InputQueue;)V" />
-		<method name="onInputQueueDestroyed(Landroid/view/InputQueue;)V" />
-		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
-		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
-		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
-		<method name="surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" />
 		<field name="META_DATA_FUNC_NAME" />
 		<field name="META_DATA_LIB_NAME" />
 	</class>
@@ -3614,9 +3637,7 @@
 		<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="describeContents()I" />
 		<method name="setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="DEFAULT_ALL" />
 		<field name="DEFAULT_LIGHTS" />
@@ -3630,8 +3651,15 @@
 		<field name="FLAG_ONGOING_EVENT" />
 		<field name="FLAG_ONLY_ALERT_ONCE" />
 		<field name="FLAG_SHOW_LIGHTS" />
+		<field name="KIND_PROMO" since="16" />
+		<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="audioStreamType" />
+		<field name="bigContentView" since="16" />
 		<field name="contentIntent" />
 		<field name="contentView" />
 		<field name="defaults" />
@@ -3645,15 +3673,34 @@
 		<field name="ledOffMS" />
 		<field name="ledOnMS" />
 		<field name="number" />
+		<field name="priority" since="16" />
 		<field name="sound" />
 		<field name="tickerText" />
 		<field name="tickerView" since="11" />
 		<field name="vibrate" />
 		<field name="when" />
 	</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="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="build()Landroid/app/Notification;" since="16" />
 		<method name="getNotification()Landroid/app/Notification;" />
 		<method name="setAutoCancel(Z)Landroid/app/Notification$Builder;" />
 		<method name="setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" />
@@ -3669,18 +3716,42 @@
 		<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="setSmallIcon(I)Landroid/app/Notification$Builder;" />
 		<method name="setSmallIcon(II)Landroid/app/Notification$Builder;" />
 		<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="setWhen(J)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$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/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" />
@@ -3690,10 +3761,12 @@
 	<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="describeContents()I" />
 		<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="getIntentSender()Landroid/content/IntentSender;" since="4" />
 		<method name="getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
@@ -3706,7 +3779,6 @@
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="FLAG_CANCEL_CURRENT" />
 		<field name="FLAG_NO_CREATE" />
@@ -3720,6 +3792,7 @@
 		<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/ProgressDialog" since="1">
@@ -3732,7 +3805,6 @@
 		<method name="incrementProgressBy(I)V" />
 		<method name="incrementSecondaryProgressBy(I)V" />
 		<method name="isIndeterminate()Z" />
-		<method name="onStart()V" />
 		<method name="setIndeterminate(Z)V" />
 		<method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V" />
 		<method name="setMax(I)V" />
@@ -3753,10 +3825,10 @@
 		<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="onCancel(Landroid/content/DialogInterface;)V" />
-		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
 		<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" />
@@ -3776,6 +3848,7 @@
 		<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" />
@@ -3803,16 +3876,18 @@
 		<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="describeContents()I" />
 		<method name="getHintId()I" />
 		<method name="getImeOptions()I" />
 		<method name="getInputType()I" />
@@ -3836,7 +3911,6 @@
 		<method name="shouldIncludeInGlobalSearch()Z" />
 		<method name="shouldRewriteQueryFromData()Z" />
 		<method name="shouldRewriteQueryFromText()Z" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/app/Service" since="1">
@@ -3847,15 +3921,12 @@
 		<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="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
 		<method name="onCreate()V" />
 		<method name="onDestroy()V" />
-		<method name="onLowMemory()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="onTrimMemory(I)V" since="14" />
 		<method name="onUnbind(Landroid/content/Intent;)Z" />
 		<method name="setForeground(Z)V" />
 		<method name="startForeground(ILandroid/app/Notification;)V" since="5" />
@@ -3879,21 +3950,38 @@
 		<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="onClick(Landroid/content/DialogInterface;I)V" />
-		<method name="onTimeChanged(Landroid/widget/TimePicker;II)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/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" />
@@ -3913,7 +4001,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
-		<method name="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="getComponent()Landroid/content/ComponentName;" />
 		<method name="getPackageName()Ljava/lang/String;" />
@@ -3925,11 +4012,11 @@
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
@@ -3948,17 +4035,18 @@
 		<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_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="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="getActivityInfo()Landroid/content/pm/ActivityInfo;" />
 		<method name="getComponent()Landroid/content/ComponentName;" />
@@ -3970,7 +4058,6 @@
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="USES_ENCRYPTED_STORAGE" since="11" />
 		<field name="USES_POLICY_DISABLE_CAMERA" since="14" />
@@ -3993,7 +4080,6 @@
 		<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="onReceive(Landroid/content/Context;Landroid/content/Intent;)V" />
 		<field name="ACTION_DEVICE_ADMIN_DISABLED" />
 		<field name="ACTION_DEVICE_ADMIN_DISABLE_REQUESTED" />
 		<field name="ACTION_DEVICE_ADMIN_ENABLED" />
@@ -4006,6 +4092,7 @@
 	</class>
 	<class name="android/app/admin/DevicePolicyManager" since="8">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<method name="getActiveAdmins()Ljava/util/List;" />
 		<method name="getCameraDisabled(Landroid/content/ComponentName;)Z" since="14" />
 		<method name="getCurrentFailedPasswordAttempts()I" />
@@ -4082,11 +4169,10 @@
 		<extends name="android/app/backup/BackupAgent" />
 		<method name="&lt;init>()V" />
 		<method name="addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V" />
-		<method name="onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)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" />
@@ -4095,16 +4181,18 @@
 	</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="read()I" />
 		<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" />
@@ -4120,14 +4208,15 @@
 		<extends name="android/app/backup/FileBackupHelperBase" />
 		<implements name="android/app/backup/BackupHelper" />
 		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;)V" />
-		<method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)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" />
@@ -4140,8 +4229,6 @@
 		<extends name="android/app/backup/FileBackupHelperBase" />
 		<implements name="android/app/backup/BackupHelper" />
 		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;)V" />
-		<method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
-		<method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)V" />
 	</class>
 	<class name="android/appwidget/AppWidgetHost" since="3">
 		<extends name="java/lang/Object" />
@@ -4169,12 +4256,17 @@
 		<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="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" />
@@ -4184,26 +4276,35 @@
 		<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_OPTIONS_CHANGED" since="16" />
 		<field name="ACTION_APPWIDGET_PICK" />
 		<field name="ACTION_APPWIDGET_UPDATE" />
 		<field name="EXTRA_APPWIDGET_ID" />
 		<field name="EXTRA_APPWIDGET_IDS" />
+		<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="INVALID_APPWIDGET_ID" />
 		<field name="META_DATA_APPWIDGET_PROVIDER" />
+		<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="onReceive(Landroid/content/Context;Landroid/content/Intent;)V" />
 		<method name="onUpdate(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;[I)V" />
 	</class>
 	<class name="android/appwidget/AppWidgetProviderInfo" since="3">
@@ -4211,8 +4312,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="RESIZE_BOTH" since="12" />
 		<field name="RESIZE_HORIZONTAL" since="12" />
@@ -4235,9 +4334,7 @@
 	<class name="android/bluetooth/BluetoothA2dp" since="11">
 		<extends name="java/lang/Object" />
 		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="getConnectedDevices()Ljava/util/List;" />
-		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
-		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
+		<method name="&lt;init>()V" />
 		<method name="isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z" />
 		<field name="ACTION_CONNECTION_STATE_CHANGED" />
 		<field name="ACTION_PLAYING_STATE_CHANGED" />
@@ -4246,6 +4343,7 @@
 	</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" />
@@ -4258,6 +4356,7 @@
 		<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" />
@@ -4297,6 +4396,7 @@
 	</class>
 	<class name="android/bluetooth/BluetoothAssignedNumbers" since="11">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<field name="ACCEL_SEMICONDUCTOR" />
 		<field name="ALCATEL" />
 		<field name="APPLE" />
@@ -4398,11 +4498,10 @@
 	<class name="android/bluetooth/BluetoothClass" since="5">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getDeviceClass()I" />
 		<method name="getMajorDeviceClass()I" />
 		<method name="hasService(I)Z" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/bluetooth/BluetoothClass$Device" since="5">
@@ -4490,16 +4589,15 @@
 	<class name="android/bluetooth/BluetoothDevice" since="5">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
 		<method name="createInsecureRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" since="10" />
 		<method name="createRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" />
-		<method name="describeContents()I" />
 		<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="getUuids()[Landroid/os/ParcelUuid;" since="15" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACTION_ACL_CONNECTED" />
 		<field name="ACTION_ACL_DISCONNECTED" />
 		<field name="ACTION_ACL_DISCONNECT_REQUESTED" />
@@ -4524,9 +4622,7 @@
 	<class name="android/bluetooth/BluetoothHeadset" since="11">
 		<extends name="java/lang/Object" />
 		<implements name="android/bluetooth/BluetoothProfile" />
-		<method name="getConnectedDevices()Ljava/util/List;" />
-		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
-		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
+		<method name="&lt;init>()V" />
 		<method name="isAudioConnected(Landroid/bluetooth/BluetoothDevice;)Z" />
 		<method name="startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z" />
 		<method name="stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z" />
@@ -4547,12 +4643,11 @@
 		<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="getConnectedDevices()Ljava/util/List;" />
-		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
-		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
 		<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" />
@@ -4570,20 +4665,22 @@
 		<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="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getDataType()I" />
 		<method name="getName()Ljava/lang/String;" />
 		<method name="getRole()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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/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;" />
@@ -4598,20 +4695,21 @@
 		<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;" />
-		<method name="close()V" />
 	</class>
 	<class name="android/bluetooth/BluetoothSocket" since="5">
 		<extends name="java/lang/Object" />
 		<implements name="java/io/Closeable" />
-		<method name="close()V" />
+		<method name="&lt;init>()V" />
 		<method name="connect()V" />
 		<method name="getInputStream()Ljava/io/InputStream;" />
 		<method name="getOutputStream()Ljava/io/OutputStream;" />
@@ -4663,15 +4761,17 @@
 	</class>
 	<class name="android/content/AsyncQueryHandler$WorkerHandler" since="1">
 		<extends name="android/os/Handler" />
-		<method name="&lt;init>(Landroid/os/Looper;)V" />
+		<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="loadInBackground()LD;" />
-		<method name="onCanceled(LD;)V" />
-		<method name="onLoadInBackground()LD;" />
+		<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">
@@ -4698,6 +4798,7 @@
 	</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" />
@@ -4710,21 +4811,33 @@
 		<method name="setResultData(Ljava/lang/String;)V" />
 		<method name="setResultExtras(Landroid/os/Bundle;)V" />
 	</class>
+	<class name="android/content/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/content/CancellationSignal$OnCancelListener;)V" />
+		<method name="throwIfCanceled()V" />
+	</class>
+	<class name="android/content/CancellationSignal$OnCancelListener" since="16">
+		<extends name="java/lang/Object" />
+		<method name="onCancel()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="describeContents()I" />
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/content/ClipData$Item" since="11">
@@ -4733,7 +4846,12 @@
 		<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;" />
@@ -4744,57 +4862,59 @@
 		<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="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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="getText()Ljava/lang/CharSequence;" />
 		<method name="hasPrimaryClip()Z" />
-		<method name="hasText()Z" />
 		<method name="removePrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V" />
 		<method name="setPrimaryClip(Landroid/content/ClipData;)V" />
-		<method name="setText(Ljava/lang/CharSequence;)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/Comparable" since="4" />
 		<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="describeContents()I" />
 		<method name="flattenToShortString()Ljava/lang/String;" />
 		<method name="flattenToString()Ljava/lang/String;" />
 		<method name="getClassName()Ljava/lang/String;" />
@@ -4804,7 +4924,6 @@
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/content/ContentProvider" since="1">
@@ -4825,16 +4944,14 @@
 		<method name="getWritePermission()Ljava/lang/String;" />
 		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
 		<method name="isTemporary()Z" />
-		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
 		<method name="onCreate()Z" />
-		<method name="onLowMemory()V" />
-		<method name="onTrimMemory(I)V" since="14" />
 		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3" />
 		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
 		<method name="openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
-		<method name="openPipeHelper(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;LT;Landroid/content/ContentProvider$PipeDataWriter;)Landroid/os/ParcelFileDescriptor;" since="11" />
+		<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="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" />
@@ -4842,10 +4959,12 @@
 		<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">
-		<method name="writeDataToPipe(Landroid/os/ParcelFileDescriptor;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;LT;)V" />
+		<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="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
@@ -4857,14 +4976,15 @@
 		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
 		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
 		<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="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="describeContents()I" />
 		<method name="getUri()Landroid/net/Uri;" />
 		<method name="isReadOperation()Z" />
 		<method name="isWriteOperation()Z" />
@@ -4875,11 +4995,11 @@
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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;" />
@@ -4896,8 +5016,6 @@
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Landroid/net/Uri;)V" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="count" />
 		<field name="uri" />
@@ -4916,6 +5034,8 @@
 		<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" />
@@ -4945,6 +5065,7 @@
 		<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="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="removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="8" />
 		<method name="removeStatusChangeListener(Ljava/lang/Object;)V" since="5" />
@@ -4991,7 +5112,6 @@
 		<method name="&lt;init>(Landroid/content/ContentValues;)V" />
 		<method name="clear()V" />
 		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="describeContents()I" />
 		<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;" />
@@ -5017,7 +5137,6 @@
 		<method name="remove(Ljava/lang/String;)V" />
 		<method name="size()I" />
 		<method name="valueSet()Ljava/util/Set;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="TAG" />
 	</class>
@@ -5099,9 +5218,12 @@
 		<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" />
@@ -5129,16 +5251,19 @@
 		<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="KEYGUARD_SERVICE" />
 		<field name="LAYOUT_INFLATER_SERVICE" />
 		<field name="LOCATION_SERVICE" />
 		<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="SEARCH_SERVICE" />
 		<field name="SENSOR_SERVICE" />
@@ -5157,80 +5282,9 @@
 		<extends name="android/content/Context" />
 		<method name="&lt;init>(Landroid/content/Context;)V" />
 		<method name="attachBaseContext(Landroid/content/Context;)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="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="getBaseContext()Landroid/content/Context;" />
-		<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="getExternalCacheDir()Ljava/io/File;" since="8" />
-		<method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8" />
-		<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="getPackageCodePath()Ljava/lang/String;" />
-		<method name="getPackageManager()Landroid/content/pm/PackageManager;" />
-		<method name="getPackageName()Ljava/lang/String;" />
 		<method name="getPackageResourcePath()Ljava/lang/String;" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;" />
-		<method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;" />
-		<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="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="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="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="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="sendStickyBroadcast(Landroid/content/Intent;)V" />
-		<method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" />
-		<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="startActivity(Landroid/content/Intent;)V" />
-		<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="startService(Landroid/content/Intent;)Landroid/content/ComponentName;" />
-		<method name="stopService(Landroid/content/Intent;)Z" />
-		<method name="unbindService(Landroid/content/ServiceConnection;)V" />
-		<method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V" />
 	</class>
 	<class name="android/content/CursorLoader" since="11">
 		<extends name="android/content/AsyncTaskLoader" />
@@ -5251,6 +5305,7 @@
 		<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" />
@@ -5261,21 +5316,27 @@
 		<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">
@@ -5292,6 +5353,7 @@
 		<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" />
@@ -5308,10 +5370,8 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="cloneFilter()Landroid/content/Intent;" />
 		<method name="createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;" />
-		<method name="describeContents()I" />
 		<method name="fillIn(Landroid/content/Intent;I)I" />
 		<method name="filterEquals(Landroid/content/Intent;)Z" />
 		<method name="filterHashCode()I" />
@@ -5327,6 +5387,7 @@
 		<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;" />
@@ -5346,7 +5407,7 @@
 		<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;)LT;" />
+		<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;" />
@@ -5363,6 +5424,7 @@
 		<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" />
@@ -5409,22 +5471,26 @@
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACTION_AIRPLANE_MODE_CHANGED" />
 		<field name="ACTION_ALL_APPS" />
 		<field name="ACTION_ANSWER" />
 		<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" />
@@ -5570,6 +5636,7 @@
 		<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" />
@@ -5592,6 +5659,7 @@
 		<field name="EXTRA_UID" />
 		<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" />
@@ -5601,6 +5669,7 @@
 		<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_CLOSE_SYSTEM_DIALOGS" since="16" />
 		<field name="FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS" />
 		<field name="FLAG_ACTIVITY_FORWARD_RESULT" />
 		<field name="FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY" />
@@ -5620,6 +5689,7 @@
 		<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_REGISTERED_ONLY" />
 		<field name="FLAG_RECEIVER_REPLACE_PENDING" since="8" />
 		<field name="METADATA_DOCK_HOME" since="5" />
@@ -5634,9 +5704,7 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="fromContext(Landroid/content/Context;I)Landroid/content/Intent$ShortcutIconResource;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="packageName" />
 		<field name="resourceName" />
@@ -5664,7 +5732,6 @@
 		<method name="countDataSchemes()I" />
 		<method name="countDataTypes()I" />
 		<method name="create(Ljava/lang/String;Ljava/lang/String;)Landroid/content/IntentFilter;" />
-		<method name="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="getAction(I)Ljava/lang/String;" />
 		<method name="getCategory(I)Ljava/lang/String;" />
@@ -5690,7 +5757,6 @@
 		<method name="schemesIterator()Ljava/util/Iterator;" />
 		<method name="setPriority(I)V" />
 		<method name="typesIterator()Ljava/util/Iterator;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<method name="writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V" />
 		<field name="CREATOR" />
 		<field name="MATCH_ADJUSTMENT_MASK" />
@@ -5724,16 +5790,16 @@
 	<class name="android/content/IntentSender" since="4">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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">
@@ -5746,8 +5812,10 @@
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>(Landroid/content/Context;)V" />
 		<method name="abandon()V" />
-		<method name="dataToString(LD;)Ljava/lang/String;" />
-		<method name="deliverResult(LD;)V" />
+		<method name="cancelLoad()Z" since="16" />
+		<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;" />
@@ -5756,24 +5824,32 @@
 		<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="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>()V" />
+		<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">
-		<method name="onLoadComplete(Landroid/content/Loader;LD;)V" />
+		<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" />
@@ -5790,12 +5866,15 @@
 		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
 		<method name="getNumSuccessfulYieldPoints()I" />
 	</class>
+	<class name="android/content/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/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" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="account" />
 		<field name="authority" />
@@ -5809,21 +5888,17 @@
 	<class name="android/content/SearchRecentSuggestionsProvider" since="1">
 		<extends name="android/content/ContentProvider" />
 		<method name="&lt;init>()V" />
-		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
-		<method name="onCreate()Z" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
 		<method name="setupSuggestions(Ljava/lang/String;I)V" />
-		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
 		<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;" />
@@ -5837,6 +5912,7 @@
 		<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" />
@@ -5849,6 +5925,7 @@
 		<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">
@@ -5857,13 +5934,11 @@
 		<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="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="accountType" />
 		<field name="authority" />
@@ -5871,14 +5946,14 @@
 	</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="describeContents()I" since="11" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="11" />
+		<method name="&lt;init>()V" />
 		<field name="account" />
 		<field name="authority" />
 		<field name="startTime" />
@@ -5888,13 +5963,11 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="clear()V" />
-		<method name="describeContents()I" />
 		<method name="hasError()Z" />
 		<method name="hasHardError()Z" />
 		<method name="hasSoftError()Z" />
 		<method name="madeSomeProgress()Z" />
 		<method name="toDebugString()Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ALREADY_IN_PROGRESS" />
 		<field name="CREATOR" />
 		<field name="databaseError" />
@@ -5913,8 +5986,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" />
 		<method name="clear()V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="numAuthExceptions" />
 		<field name="numConflictDetectedExceptions" />
@@ -5927,6 +5998,7 @@
 		<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">
@@ -5941,7 +6013,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/ActivityInfo;)V" />
-		<method name="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="getThemeResource()I" />
 		<field name="CONFIG_FONT_SCALE" />
@@ -5988,6 +6059,7 @@
 		<field name="configChanges" />
 		<field name="flags" />
 		<field name="launchMode" />
+		<field name="parentActivityName" since="16" />
 		<field name="permission" />
 		<field name="screenOrientation" />
 		<field name="softInputMode" since="3" />
@@ -6001,7 +6073,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/ApplicationInfo;)V" />
-		<method name="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
 		<field name="CREATOR" />
@@ -6073,9 +6144,7 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/ConfigurationInfo;)V" />
-		<method name="describeContents()I" />
 		<method name="getGlEsVersion()Ljava/lang/String;" since="4" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="GL_ES_VERSION_UNDEFINED" since="4" />
 		<field name="INPUT_FEATURE_FIVE_WAY_NAV" />
@@ -6091,9 +6160,7 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/FeatureInfo;)V" />
-		<method name="describeContents()I" />
 		<method name="getGlEsVersion()Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="FLAG_REQUIRED" />
 		<field name="GL_ES_VERSION_UNDEFINED" />
@@ -6102,6 +6169,7 @@
 		<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>
@@ -6109,16 +6177,13 @@
 		<extends name="android/os/Binder" />
 		<implements name="android/content/pm/IPackageInstallObserver" />
 		<method name="&lt;init>()V" />
-		<method name="asBinder()Landroid/os/IBinder;" />
 		<method name="asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver;" />
-		<method name="onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
 	</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" />
-		<method name="describeContents()I" />
 		<field name="CREATOR" />
 		<field name="dataDir" />
 		<field name="functionalTest" />
@@ -6145,9 +6210,9 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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" />
@@ -6161,6 +6226,7 @@
 		<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" />
@@ -6301,6 +6367,7 @@
 		<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" />
@@ -6376,8 +6443,6 @@
 		<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" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="cacheSize" />
 		<field name="codeSize" />
@@ -6402,21 +6467,26 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/PermissionGroupInfo;)V" />
-		<method name="describeContents()I" />
 		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
 		<field name="CREATOR" />
+		<field name="FLAG_PERSONAL_INFO" since="16" />
 		<field name="descriptionRes" />
+		<field name="flags" since="16" />
 		<field name="nonLocalizedDescription" />
+		<field name="priority" since="16" />
 	</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="describeContents()I" />
 		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
 		<field name="CREATOR" />
 		<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" />
@@ -6430,7 +6500,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/ProviderInfo;)V" />
-		<method name="describeContents()I" />
 		<field name="CREATOR" />
 		<field name="authority" />
 		<field name="grantUriPermissions" />
@@ -6446,12 +6515,10 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="activityInfo" />
 		<field name="filter" />
@@ -6477,9 +6544,9 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/pm/ServiceInfo;)V" />
-		<method name="describeContents()I" />
 		<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_STOP_WITH_TASK" since="14" />
 		<field name="flags" since="14" />
 		<field name="permission" />
@@ -6489,12 +6556,10 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>([B)V" />
-		<method name="describeContents()I" />
 		<method name="toByteArray()[B" />
 		<method name="toChars()[C" />
 		<method name="toChars([C[I)[C" />
 		<method name="toCharsString()Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/content/res/AssetFileDescriptor" since="1">
@@ -6504,13 +6569,11 @@
 		<method name="close()V" />
 		<method name="createInputStream()Ljava/io/FileInputStream;" since="3" />
 		<method name="createOutputStream()Ljava/io/FileOutputStream;" since="3" />
-		<method name="describeContents()I" since="3" />
 		<method name="getDeclaredLength()J" since="3" />
 		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
 		<method name="getLength()J" />
 		<method name="getParcelFileDescriptor()Landroid/os/ParcelFileDescriptor;" />
 		<method name="getStartOffset()J" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 		<field name="CREATOR" since="3" />
 		<field name="UNKNOWN_LENGTH" since="3" />
 	</class>
@@ -6524,6 +6587,7 @@
 	</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;" />
@@ -6541,39 +6605,28 @@
 	</class>
 	<class name="android/content/res/AssetManager$AssetInputStream" since="1">
 		<extends name="java/io/InputStream" />
-		<method name="available()I" />
-		<method name="close()V" />
+		<method name="&lt;init>(Landroid/content/res/AssetManager;)V" />
 		<method name="getAssetInt()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="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="describeContents()I" />
 		<method name="getColorForState([II)I" />
 		<method name="getDefaultColor()I" />
 		<method name="isStateful()Z" />
 		<method name="valueOf(I)Landroid/content/res/ColorStateList;" />
 		<method name="withAlpha(I)Landroid/content/res/ColorStateList;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/content/res/Configuration" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<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="describeContents()I" />
 		<method name="diff(Landroid/content/res/Configuration;)I" />
 		<method name="equals(Landroid/content/res/Configuration;)Z" />
 		<method name="isLayoutSizeAtLeast(I)Z" since="11" />
@@ -6582,7 +6635,6 @@
 		<method name="setTo(Landroid/content/res/Configuration;)V" since="8" />
 		<method name="setToDefaults()V" />
 		<method name="updateFrom(Landroid/content/res/Configuration;)I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="HARDKEYBOARDHIDDEN_NO" since="3" />
 		<field name="HARDKEYBOARDHIDDEN_UNDEFINED" since="3" />
@@ -6627,6 +6679,7 @@
 		<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" />
@@ -6653,8 +6706,7 @@
 	<class name="android/content/res/ObbInfo" since="9">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="&lt;init>()V" />
 		<field name="CREATOR" />
 		<field name="OBB_OVERLAY" />
 		<field name="filename" />
@@ -6664,6 +6716,7 @@
 	</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">
@@ -6724,6 +6777,7 @@
 	</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="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;" />
@@ -6734,6 +6788,7 @@
 	</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;" />
@@ -6763,6 +6818,7 @@
 		<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="org/xmlpull/v1/XmlPullParser" />
 		<method name="close()V" />
@@ -6772,52 +6828,10 @@
 		<implements name="android/database/CrossProcessCursor" />
 		<method name="&lt;init>()V" />
 		<method name="checkPosition()V" />
-		<method name="close()V" />
-		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
-		<method name="deactivate()V" />
-		<method name="fillWindow(ILandroid/database/CursorWindow;)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="11" />
-		<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="getUpdatedField(I)Ljava/lang/Object;" />
-		<method name="getWantsAllOnMoveCalls()Z" />
-		<method name="getWindow()Landroid/database/CursorWindow;" />
-		<method name="isAfterLast()Z" />
-		<method name="isBeforeFirst()Z" />
-		<method name="isClosed()Z" />
 		<method name="isFieldUpdated(I)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="onChange(Z)V" />
-		<method name="onMove(II)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="mClosed" />
 		<field name="mContentResolver" />
 		<field name="mCurrentRowID" />
@@ -6832,17 +6846,10 @@
 	<class name="android/database/AbstractWindowedCursor" since="1">
 		<extends name="android/database/AbstractCursor" />
 		<method name="&lt;init>()V" />
-		<method name="getDouble(I)D" />
-		<method name="getFloat(I)F" />
-		<method name="getInt(I)I" />
-		<method name="getLong(I)J" />
-		<method name="getShort(I)S" />
-		<method name="getString(I)Ljava/lang/String;" />
 		<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="isNull(I)Z" />
 		<method name="isString(I)Z" since="5" />
 		<method name="setWindow(Landroid/database/CursorWindow;)V" />
 		<field name="mWindow" />
@@ -6858,6 +6865,7 @@
 		<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>
@@ -6866,9 +6874,12 @@
 		<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;" />
@@ -6878,11 +6889,10 @@
 		<extends name="android/database/CursorWrapper" />
 		<implements name="android/database/CrossProcessCursor" />
 		<method name="&lt;init>(Landroid/database/Cursor;)V" />
-		<method name="fillWindow(ILandroid/database/CursorWindow;)V" />
-		<method name="getWindow()Landroid/database/CursorWindow;" />
-		<method name="onMove(II)Z" />
 	</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" />
@@ -6938,10 +6948,7 @@
 		<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="hasNext()Z" />
-		<method name="iterator()Ljava/util/Iterator;" />
 		<method name="next()Landroid/database/CursorJoiner$Result;" />
-		<method name="remove()V" />
 	</class>
 	<class name="android/database/CursorJoiner$Result" since="1">
 		<extends name="java/lang/Enum" />
@@ -6960,7 +6967,6 @@
 		<method name="clear()V" />
 		<method name="close()V" />
 		<method name="copyStringToBuffer(IILandroid/database/CharArrayBuffer;)V" />
-		<method name="describeContents()I" />
 		<method name="freeLastRow()V" />
 		<method name="getBlob(II)[B" />
 		<method name="getDouble(II)D" />
@@ -6978,7 +6984,6 @@
 		<method name="isNull(II)Z" />
 		<method name="isString(II)Z" since="5" />
 		<method name="newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;" />
-		<method name="onAllReferencesReleased()V" />
 		<method name="putBlob([BII)Z" />
 		<method name="putDouble(DII)Z" />
 		<method name="putLong(JII)Z" />
@@ -6986,53 +6991,13 @@
 		<method name="putString(Ljava/lang/String;II)Z" />
 		<method name="setNumColumns(I)Z" />
 		<method name="setStartPosition(I)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;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="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="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="getWrappedCursor()Landroid/database/Cursor;" since="11" />
-		<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" />
 	</class>
 	<class name="android/database/DataSetObservable" since="1">
 		<extends name="android/database/Observable" />
@@ -7047,6 +7012,7 @@
 		<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">
@@ -7134,7 +7100,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/database/DatabaseErrorHandler" />
 		<method name="&lt;init>()V" />
-		<method name="onCorruption(Landroid/database/sqlite/SQLiteDatabase;)V" />
 	</class>
 	<class name="android/database/MatrixCursor" since="1">
 		<extends name="android/database/AbstractCursor" />
@@ -7142,46 +7107,30 @@
 		<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="getColumnNames()[Ljava/lang/String;" />
-		<method name="getCount()I" />
-		<method name="getDouble(I)D" />
-		<method name="getFloat(I)F" />
-		<method name="getInt(I)I" />
-		<method name="getLong(I)J" />
-		<method name="getShort(I)S" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="isNull(I)Z" />
 		<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;" />
 	</class>
 	<class name="android/database/MergeCursor" since="1">
 		<extends name="android/database/AbstractCursor" />
 		<method name="&lt;init>([Landroid/database/Cursor;)V" />
-		<method name="getColumnNames()[Ljava/lang/String;" />
-		<method name="getCount()I" />
-		<method name="getDouble(I)D" />
-		<method name="getFloat(I)F" />
-		<method name="getInt(I)I" />
-		<method name="getLong(I)J" />
-		<method name="getShort(I)S" />
-		<method name="getString(I)Ljava/lang/String;" />
-		<method name="isNull(I)Z" />
 	</class>
 	<class name="android/database/Observable" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="registerObserver(LT;)V" />
+		<method name="registerObserver(Ljava/lang/Object;)V" />
 		<method name="unregisterAll()V" />
-		<method name="unregisterObserver(LT;)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" />
@@ -7215,6 +7164,7 @@
 	</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" />
@@ -7231,12 +7181,11 @@
 		<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="getColumnNames()[Ljava/lang/String;" />
-		<method name="getCount()I" />
 		<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" />
@@ -7245,6 +7194,7 @@
 	</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" />
@@ -7253,6 +7203,8 @@
 		<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" />
@@ -7273,10 +7225,10 @@
 		<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="onAllReferencesReleased()V" />
 		<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;" />
@@ -7285,12 +7237,17 @@
 		<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" />
@@ -7310,6 +7267,7 @@
 		<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" />
@@ -7317,6 +7275,7 @@
 		<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">
@@ -7348,6 +7307,7 @@
 		<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" />
@@ -7367,10 +7327,12 @@
 		<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" />
@@ -7379,6 +7341,7 @@
 	</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" />
@@ -7396,13 +7359,13 @@
 		<method name="native_bind_string(ILjava/lang/String;)V" />
 		<method name="native_compile(Ljava/lang/String;)V" />
 		<method name="native_finalize()V" />
-		<method name="onAllReferencesReleased()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" />
@@ -7419,6 +7382,7 @@
 		<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" />
@@ -7432,6 +7396,7 @@
 	</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" />
@@ -7445,6 +7410,7 @@
 		<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" />
@@ -7558,6 +7524,7 @@
 		<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" />
@@ -7569,13 +7536,16 @@
 		<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">
@@ -7607,6 +7577,7 @@
 		<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" />
@@ -7644,6 +7615,7 @@
 		<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" />
@@ -7655,12 +7627,14 @@
 	</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;" />
@@ -7670,8 +7644,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="addStroke(Landroid/gesture/GestureStroke;)V" />
-		<method name="clone()Ljava/lang/Object;" since="8" />
-		<method name="describeContents()I" />
 		<method name="getBoundingBox()Landroid/graphics/RectF;" />
 		<method name="getID()J" />
 		<method name="getLength()F" />
@@ -7683,11 +7655,11 @@
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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;" />
@@ -7764,22 +7736,24 @@
 		<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" />
-		<method name="clone()Ljava/lang/Object;" since="8" />
 		<field name="timestamp" />
 		<field name="x" />
 		<field name="y" />
@@ -7811,7 +7785,6 @@
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>(Ljava/util/ArrayList;)V" />
 		<method name="clearPath()V" />
-		<method name="clone()Ljava/lang/Object;" since="8" />
 		<method name="computeOrientedBoundingBox()Landroid/gesture/OrientedBoundingBox;" />
 		<method name="getPath()Landroid/graphics/Path;" />
 		<method name="toPath(FFI)Landroid/graphics/Path;" />
@@ -7821,6 +7794,7 @@
 	</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" />
@@ -7829,6 +7803,7 @@
 	</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" />
@@ -7838,6 +7813,7 @@
 	</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>
@@ -7855,6 +7831,7 @@
 	<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" />
@@ -7866,7 +7843,6 @@
 		<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="describeContents()I" />
 		<method name="eraseColor(I)V" />
 		<method name="extractAlpha()Landroid/graphics/Bitmap;" />
 		<method name="extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap;" />
@@ -7896,7 +7872,6 @@
 		<method name="setHasAlpha(Z)V" since="12" />
 		<method name="setPixel(III)V" />
 		<method name="setPixels([IIIIIII)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="DENSITY_NONE" since="4" />
 	</class>
@@ -7957,6 +7932,7 @@
 	</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" />
@@ -7989,6 +7965,9 @@
 		<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" />
@@ -8319,6 +8298,7 @@
 	</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;" />
@@ -8635,13 +8615,11 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(II)V" />
 		<method name="&lt;init>(Landroid/graphics/Point;)V" />
-		<method name="describeContents()I" since="13" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="13" />
 		<field name="CREATOR" since="13" />
 		<field name="x" />
 		<field name="y" />
@@ -8652,7 +8630,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(FF)V" />
 		<method name="&lt;init>(Landroid/graphics/Point;)V" />
-		<method name="describeContents()I" since="13" />
 		<method name="equals(FF)Z" />
 		<method name="length()F" />
 		<method name="length(FF)F" />
@@ -8661,7 +8638,6 @@
 		<method name="readFromParcel(Landroid/os/Parcel;)V" since="13" />
 		<method name="set(FF)V" />
 		<method name="set(Landroid/graphics/PointF;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="13" />
 		<field name="CREATOR" since="13" />
 		<field name="x" />
 		<field name="y" />
@@ -8721,7 +8697,6 @@
 		<method name="contains(II)Z" />
 		<method name="contains(IIII)Z" />
 		<method name="contains(Landroid/graphics/Rect;)Z" />
-		<method name="describeContents()I" />
 		<method name="exactCenterX()F" />
 		<method name="exactCenterY()F" />
 		<method name="flattenToString()Ljava/lang/String;" since="7" />
@@ -8746,7 +8721,6 @@
 		<method name="union(IIII)V" />
 		<method name="union(Landroid/graphics/Rect;)V" />
 		<method name="width()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="bottom" />
 		<field name="left" />
@@ -8765,7 +8739,6 @@
 		<method name="contains(FF)Z" />
 		<method name="contains(FFFF)Z" />
 		<method name="contains(Landroid/graphics/RectF;)Z" />
-		<method name="describeContents()I" since="3" />
 		<method name="height()F" />
 		<method name="inset(FF)V" />
 		<method name="intersect(FFFF)Z" />
@@ -8789,7 +8762,6 @@
 		<method name="union(FFFF)V" />
 		<method name="union(Landroid/graphics/RectF;)V" />
 		<method name="width()F" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 		<field name="CREATOR" since="3" />
 		<field name="bottom" />
 		<field name="left" />
@@ -8804,7 +8776,6 @@
 		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
 		<method name="&lt;init>(Landroid/graphics/Region;)V" />
 		<method name="contains(II)Z" />
-		<method name="describeContents()I" />
 		<method name="getBoundaryPath()Landroid/graphics/Path;" />
 		<method name="getBoundaryPath(Landroid/graphics/Path;)Z" />
 		<method name="getBounds()Landroid/graphics/Rect;" />
@@ -8830,7 +8801,6 @@
 		<method name="translate(II)V" />
 		<method name="translate(IILandroid/graphics/Region;)V" />
 		<method name="union(Landroid/graphics/Rect;)Z" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/graphics/Region$Op" since="1">
@@ -8870,6 +8840,8 @@
 	<class name="android/graphics/SurfaceTexture" since="11">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>(I)V" />
+		<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" />
@@ -8878,6 +8850,7 @@
 		<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">
@@ -8892,6 +8865,7 @@
 	</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;" />
@@ -8926,14 +8900,15 @@
 		<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/AnimationDrawable" since="1">
 		<extends name="android/graphics/drawable/DrawableContainer" />
-		<implements name="java/lang/Runnable" />
 		<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" />
@@ -8941,7 +8916,6 @@
 		<method name="getNumberOfFrames()I" />
 		<method name="isOneShot()Z" />
 		<method name="isRunning()Z" />
-		<method name="run()V" />
 		<method name="setOneShot(Z)V" />
 		<method name="start()V" />
 		<method name="stop()V" />
@@ -8956,17 +8930,12 @@
 		<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="draw(Landroid/graphics/Canvas;)V" />
 		<method name="getBitmap()Landroid/graphics/Bitmap;" />
-		<method name="getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;" />
 		<method name="getGravity()I" />
-		<method name="getOpacity()I" />
 		<method name="getPaint()Landroid/graphics/Paint;" />
 		<method name="getTileModeX()Landroid/graphics/Shader$TileMode;" />
 		<method name="getTileModeY()Landroid/graphics/Shader$TileMode;" />
-		<method name="setAlpha(I)V" />
 		<method name="setAntiAlias(Z)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 		<method name="setGravity(I)V" />
 		<method name="setTargetDensity(I)V" since="4" />
 		<method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4" />
@@ -8979,13 +8948,6 @@
 		<extends name="android/graphics/drawable/Drawable" />
 		<implements name="android/graphics/drawable/Drawable$Callback" />
 		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;II)V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 		<field name="HORIZONTAL" />
 		<field name="VERTICAL" />
 	</class>
@@ -8993,13 +8955,9 @@
 		<extends name="android/graphics/drawable/Drawable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
 		<method name="getAlpha()I" />
 		<method name="getColor()I" since="11" />
-		<method name="getOpacity()I" />
-		<method name="setAlpha(I)V" />
 		<method name="setColor(I)V" since="11" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 	</class>
 	<class name="android/graphics/drawable/Drawable" since="1">
 		<extends name="java/lang/Object" />
@@ -9054,6 +9012,7 @@
 		<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" />
@@ -9069,24 +9028,17 @@
 		<extends name="android/graphics/drawable/Drawable" />
 		<implements name="android/graphics/drawable/Drawable$Callback" />
 		<method name="&lt;init>()V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
 		<method name="selectDrawable(I)Z" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 		<method name="setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V" />
 		<method name="setEnterFadeDuration(I)V" since="11" />
 		<method name="setExitFadeDuration(I)V" since="11" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 	</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="getChangingConfigurations()I" />
 		<method name="getChildCount()I" />
 		<method name="getChildren()[Landroid/graphics/drawable/Drawable;" />
 		<method name="getConstantHeight()I" />
@@ -9109,16 +9061,15 @@
 		<extends name="android/graphics/drawable/Drawable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
-		<method name="setAlpha(I)V" />
+		<method name="getOrientation()Landroid/graphics/drawable/GradientDrawable$Orientation;" since="16" />
 		<method name="setColor(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<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" />
@@ -9150,33 +9101,19 @@
 		<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="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 	</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="draw(Landroid/graphics/Canvas;)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="getOpacity()I" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 		<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="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 	</class>
 	<class name="android/graphics/drawable/LevelListDrawable" since="1">
 		<extends name="android/graphics/drawable/DrawableContainer" />
@@ -9189,11 +9126,7 @@
 		<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="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
 		<method name="getPaint()Landroid/graphics/Paint;" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 		<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" />
@@ -9208,52 +9141,30 @@
 	<class name="android/graphics/drawable/PictureDrawable" since="1">
 		<extends name="android/graphics/drawable/Drawable" />
 		<method name="&lt;init>(Landroid/graphics/Picture;)V" />
-		<method name="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
 		<method name="getPicture()Landroid/graphics/Picture;" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 		<method name="setPicture(Landroid/graphics/Picture;)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="draw(Landroid/graphics/Canvas;)V" />
 		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" />
-		<method name="getOpacity()I" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 	</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="draw(Landroid/graphics/Canvas;)V" />
 		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" />
-		<method name="getOpacity()I" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
-		<method name="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 	</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="draw(Landroid/graphics/Canvas;)V" />
-		<method name="getOpacity()I" />
 		<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="setAlpha(I)V" />
-		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
 		<method name="setIntrinsicHeight(I)V" />
 		<method name="setIntrinsicWidth(I)V" />
 		<method name="setPadding(IIII)V" />
@@ -9274,6 +9185,7 @@
 	<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" />
@@ -9292,17 +9204,18 @@
 	<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="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)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="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)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" />
@@ -9318,6 +9231,7 @@
 	</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" />
@@ -9329,6 +9243,7 @@
 		<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" />
@@ -9354,13 +9269,19 @@
 		<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" />
@@ -9370,9 +9291,11 @@
 		<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" />
@@ -9382,13 +9305,16 @@
 		<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" />
@@ -9537,17 +9463,20 @@
 		<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>(II)V" />
+		<method name="&lt;init>(Landroid/hardware/Camera;II)V" />
 		<field name="height" />
 		<field name="width" />
 	</class>
@@ -9564,6 +9493,7 @@
 	</class>
 	<class name="android/hardware/Sensor" since="3">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<method name="getMaximumRange()F" />
 		<method name="getMinDelay()I" since="9" />
 		<method name="getName()Ljava/lang/String;" />
@@ -9589,21 +9519,25 @@
 	</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/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="getAltitude(FF)F" since="9" />
 		<method name="getAngleChange([F[F[F)V" since="9" />
 		<method name="getDefaultSensor(I)Landroid/hardware/Sensor;" since="3" />
@@ -9681,17 +9615,32 @@
 		<field name="SENSOR_TRICORDER" />
 		<field name="STANDARD_GRAVITY" />
 	</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/usb/UsbAccessory" since="12">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/hardware/usb/UsbConstants" since="12">
@@ -9734,7 +9683,7 @@
 	<class name="android/hardware/usb/UsbDevice" since="12">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getDeviceClass()I" />
 		<method name="getDeviceId()I" />
 		<method name="getDeviceId(Ljava/lang/String;)I" />
@@ -9746,11 +9695,11 @@
 		<method name="getInterfaceCount()I" />
 		<method name="getProductId()I" />
 		<method name="getVendorId()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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="claimInterface(Landroid/hardware/usb/UsbInterface;Z)Z" />
 		<method name="close()V" />
@@ -9764,7 +9713,7 @@
 	<class name="android/hardware/usb/UsbEndpoint" since="12">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getAddress()I" />
 		<method name="getAttributes()I" />
 		<method name="getDirection()I" />
@@ -9772,24 +9721,23 @@
 		<method name="getInterval()I" />
 		<method name="getMaxPacketSize()I" />
 		<method name="getType()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/hardware/usb/UsbInterface" since="12">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<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="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
@@ -9822,7 +9770,6 @@
 		<implements name="android/view/KeyEvent$Callback" />
 		<method name="&lt;init>()V" />
 		<method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<method name="onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;" />
 		<method name="onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;" />
 		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
@@ -9830,17 +9777,12 @@
 	<class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" since="3">
 		<extends name="java/lang/Object" />
 		<implements name="android/view/inputmethod/InputMethod" />
-		<method name="&lt;init>()V" />
-		<method name="createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V" />
-		<method name="revokeSession(Landroid/view/inputmethod/InputMethodSession;)V" />
-		<method name="setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V" />
+		<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>()V" />
-		<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="&lt;init>(Landroid/inputmethodservice/AbstractInputMethodService;)V" />
 		<method name="isEnabled()Z" />
 		<method name="isRevoked()Z" />
 		<method name="revokeSelf()V" />
@@ -9880,8 +9822,6 @@
 		<method name="onConfigureWindow(Landroid/view/Window;ZZ)V" />
 		<method name="onCreateCandidatesView()Landroid/view/View;" />
 		<method name="onCreateExtractTextView()Landroid/view/View;" />
-		<method name="onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;" />
-		<method name="onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;" />
 		<method name="onCreateInputView()Landroid/view/View;" />
 		<method name="onCurrentInputMethodSubtypeChanged(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
 		<method name="onDisplayCompletions([Landroid/view/inputmethod/CompletionInfo;)V" />
@@ -9896,10 +9836,6 @@
 		<method name="onFinishInput()V" />
 		<method name="onFinishInputView(Z)V" />
 		<method name="onInitializeInterface()V" />
-		<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" />
 		<method name="onShowInputRequested(IZ)Z" />
 		<method name="onStartCandidatesView(Landroid/view/inputmethod/EditorInfo;Z)V" />
 		<method name="onStartInput(Landroid/view/inputmethod/EditorInfo;Z)V" />
@@ -9934,27 +9870,11 @@
 	</class>
 	<class name="android/inputmethodservice/InputMethodService$InputMethodImpl" since="3">
 		<extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" />
-		<method name="&lt;init>()V" />
-		<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="hideSoftInput(ILandroid/os/ResultReceiver;)V" />
-		<method name="restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="showSoftInput(ILandroid/os/ResultReceiver;)V" />
-		<method name="startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
-		<method name="unbindInput()V" />
+		<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>()V" />
-		<method name="appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)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="updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V" />
-		<method name="updateSelection(IIIIII)V" />
-		<method name="viewClicked(Z)V" since="14" />
+		<method name="&lt;init>(Landroid/inputmethodservice/InputMethodService;)V" />
 	</class>
 	<class name="android/inputmethodservice/InputMethodService$Insets" since="3">
 		<extends name="java/lang/Object" />
@@ -10056,12 +9976,7 @@
 		<method name="isPreviewEnabled()Z" />
 		<method name="isProximityCorrectionEnabled()Z" />
 		<method name="isShifted()Z" />
-		<method name="onClick(Landroid/view/View;)V" />
-		<method name="onDetachedFromWindow()V" />
-		<method name="onDraw(Landroid/graphics/Canvas;)V" />
 		<method name="onLongPress(Landroid/inputmethodservice/Keyboard$Key;)Z" />
-		<method name="onMeasure(II)V" />
-		<method name="onSizeChanged(IIII)V" />
 		<method name="setKeyboard(Landroid/inputmethodservice/Keyboard;)V" />
 		<method name="setOnKeyboardActionListener(Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;)V" />
 		<method name="setPopupOffset(II)V" />
@@ -10076,6 +9991,7 @@
 		<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" />
@@ -10091,7 +10007,6 @@
 		<method name="&lt;init>(Ljava/util/Locale;)V" />
 		<method name="clearLatitude()V" />
 		<method name="clearLongitude()V" />
-		<method name="describeContents()I" />
 		<method name="getAddressLine(I)Ljava/lang/String;" />
 		<method name="getAdminArea()Ljava/lang/String;" />
 		<method name="getCountryCode()Ljava/lang/String;" />
@@ -10130,7 +10045,6 @@
 		<method name="setSubThoroughfare(Ljava/lang/String;)V" since="4" />
 		<method name="setThoroughfare(Ljava/lang/String;)V" />
 		<method name="setUrl(Ljava/lang/String;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/location/Criteria" since="1">
@@ -10138,7 +10052,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/location/Criteria;)V" />
-		<method name="describeContents()I" />
 		<method name="getAccuracy()I" />
 		<method name="getBearingAccuracy()I" since="9" />
 		<method name="getHorizontalAccuracy()I" since="9" />
@@ -10159,7 +10072,6 @@
 		<method name="setSpeedAccuracy(I)V" since="9" />
 		<method name="setSpeedRequired(Z)V" />
 		<method name="setVerticalAccuracy(I)V" since="9" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACCURACY_COARSE" />
 		<field name="ACCURACY_FINE" />
 		<field name="ACCURACY_HIGH" since="9" />
@@ -10182,6 +10094,7 @@
 	</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" />
@@ -10192,6 +10105,7 @@
 	</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" />
@@ -10201,9 +10115,11 @@
 		<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">
@@ -10214,7 +10130,6 @@
 		<method name="bearingTo(Landroid/location/Location;)F" />
 		<method name="convert(DI)Ljava/lang/String;" />
 		<method name="convert(Ljava/lang/String;)D" />
-		<method name="describeContents()I" />
 		<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" />
@@ -10246,13 +10161,13 @@
 		<method name="setProvider(Ljava/lang/String;)V" />
 		<method name="setSpeed(F)V" />
 		<method name="setTime(J)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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" />
@@ -10260,6 +10175,7 @@
 	</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" />
@@ -10305,6 +10221,7 @@
 	</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" />
@@ -10374,6 +10291,7 @@
 	</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" />
@@ -10488,12 +10406,14 @@
 		<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" />
@@ -10512,6 +10432,7 @@
 		<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" />
@@ -10523,6 +10444,7 @@
 		<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>
@@ -10580,11 +10502,13 @@
 		<field name="SUCCESS" />
 	</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" />
@@ -10679,6 +10603,7 @@
 	</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" />
@@ -10690,8 +10615,8 @@
 	</class>
 	<class name="android/media/JetPlayer" since="3">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<method name="clearQueue()Z" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="closeJetFile()Z" />
 		<method name="getJetPlayer()Landroid/media/JetPlayer;" />
 		<method name="getMaxTracks()I" />
@@ -10710,11 +10635,296 @@
 		<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="dequeueInputBuffer(J)I" />
+		<method name="dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I" />
+		<method name="flush()V" />
+		<method name="getInputBuffers()[Ljava/nio/ByteBuffer;" />
+		<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(IZ)V" />
+		<method name="setVideoScalingMode(I)V" />
+		<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="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" />
+	</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" />
+		<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_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="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="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="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/MediaExtractor" since="16">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="advance()Z" />
+		<method name="getCachedDuration()J" />
+		<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="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_I_FRAME_INTERVAL" />
+		<field name="KEY_MAX_INPUT_SIZE" />
+		<field name="KEY_MIME" />
+		<field name="KEY_SAMPLE_RATE" />
+		<field name="KEY_WIDTH" />
+	</class>
 	<class name="android/media/MediaMetadataRetriever" since="10">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
@@ -10759,13 +10969,19 @@
 	<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" />
@@ -10776,6 +10992,7 @@
 		<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" />
@@ -10786,15 +11003,18 @@
 		<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" />
@@ -10809,28 +11029,53 @@
 		<field name="MEDIA_INFO_NOT_SEEKABLE" since="3" />
 		<field name="MEDIA_INFO_UNKNOWN" since="3" />
 		<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="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" />
@@ -10873,13 +11118,17 @@
 	</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" />
@@ -10890,13 +11139,17 @@
 		<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" />
@@ -10906,6 +11159,7 @@
 	</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" />
@@ -10913,6 +11167,7 @@
 	</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" />
 	</class>
@@ -10923,20 +11178,31 @@
 		<method name="connect()V" />
 		<method name="disconnect()V" />
 		<method name="isConnected()Z" />
-		<method name="onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V" />
-		<method name="onServiceDisconnected(Landroid/content/ComponentName;)V" />
 		<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/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;" />
@@ -10961,6 +11227,8 @@
 		<field name="PLAYSTATE_STOPPED" />
 	</class>
 	<class name="android/media/RemoteControlClient$MetadataEditor" since="14">
+		<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;" />
@@ -10970,6 +11238,7 @@
 	</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" />
@@ -11038,6 +11307,7 @@
 		<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">
@@ -11048,9 +11318,16 @@
 		<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" />
@@ -11157,8 +11434,15 @@
 		<field name="TONE_SUP_RADIO_NOTAVAIL" />
 		<field name="TONE_SUP_RINGTONE" />
 	</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" />
@@ -11200,11 +11484,19 @@
 		<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" />
@@ -11218,6 +11510,7 @@
 		<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">
@@ -11264,6 +11557,7 @@
 		<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">
@@ -11310,6 +11604,7 @@
 		<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">
@@ -11320,6 +11615,12 @@
 		<field name="curPreset" />
 		<field name="numBands" />
 	</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" />
@@ -11338,6 +11639,7 @@
 		<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">
@@ -11359,6 +11661,7 @@
 		<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">
@@ -11376,11 +11679,13 @@
 		<method name="getFft([B)I" />
 		<method name="getMaxCaptureRate()I" />
 		<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="setScalingMode(I)I" since="16" />
 		<field name="ALREADY_EXISTS" />
 		<field name="ERROR" />
 		<field name="ERROR_BAD_VALUE" />
@@ -11388,16 +11693,20 @@
 		<field name="ERROR_INVALID_OPERATION" />
 		<field name="ERROR_NO_INIT" />
 		<field name="ERROR_NO_MEMORY" />
+		<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$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;" />
@@ -11406,11 +11715,15 @@
 		<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" />
@@ -11442,6 +11755,7 @@
 		<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/mtp/MtpConstants" since="12">
@@ -11531,6 +11845,7 @@
 	</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;" />
@@ -11538,6 +11853,7 @@
 	</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" />
@@ -11561,6 +11877,7 @@
 	</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" />
@@ -11569,11 +11886,13 @@
 	</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="getNetworkInfo(I)Landroid/net/NetworkInfo;" />
 		<method name="getNetworkPreference()I" />
+		<method name="isActiveNetworkMetered()Z" since="16" />
 		<method name="isNetworkTypeValid(I)Z" />
 		<method name="requestRouteToHost(II)Z" />
 		<method name="setNetworkPreference(I)V" />
@@ -11610,8 +11929,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="dns1" />
 		<field name="dns2" />
 		<field name="gateway" />
@@ -11675,6 +11992,7 @@
 	</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;" />
@@ -11687,8 +12005,8 @@
 	<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="describeContents()I" />
 		<method name="getDetailedState()Landroid/net/NetworkInfo$DetailedState;" />
 		<method name="getExtraInfo()Ljava/lang/String;" />
 		<method name="getReason()Ljava/lang/String;" />
@@ -11702,7 +12020,6 @@
 		<method name="isConnectedOrConnecting()Z" />
 		<method name="isFailover()Z" />
 		<method name="isRoaming()Z" since="3" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 	</class>
 	<class name="android/net/NetworkInfo$DetailedState" since="1">
 		<extends name="java/lang/Enum" />
@@ -11719,6 +12036,7 @@
 		<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" />
@@ -11733,6 +12051,7 @@
 	</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">
@@ -11747,18 +12066,13 @@
 	<class name="android/net/SSLCertificateSocketFactory" since="1">
 		<extends name="javax/net/ssl/SSLSocketFactory" />
 		<method name="&lt;init>(I)V" />
-		<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="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
 		<method name="getDefault(I)Ljavax/net/SocketFactory;" />
 		<method name="getDefault(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8" />
-		<method name="getDefaultCipherSuites()[Ljava/lang/String;" />
 		<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="getSupportedCipherSuites()[Ljava/lang/String;" />
+		<method name="getNpnSelectedProtocol(Ljava/net/Socket;)[B" since="16" />
 		<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" />
 	</class>
 	<class name="android/net/SSLSessionCache" since="8">
@@ -11800,8 +12114,9 @@
 	</class>
 	<class name="android/net/Uri" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<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;" />
@@ -11834,8 +12149,8 @@
 		<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="toString()Ljava/lang/String;" />
 		<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" />
@@ -11901,7 +12216,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/net/UrlQuerySanitizer$ValueSanitizer" />
 		<method name="&lt;init>(I)V" />
-		<method name="sanitize(Ljava/lang/String;)Ljava/lang/String;" />
 		<field name="ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL" />
 		<field name="ALL_BUT_NUL_LEGAL" />
 		<field name="ALL_BUT_WHITESPACE_LEGAL" />
@@ -11927,17 +12241,17 @@
 	</class>
 	<class name="android/net/UrlQuerySanitizer$ParameterValuePair" since="1">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<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="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<method name="onRevoke()V" />
 		<method name="prepare(Landroid/content/Context;)Landroid/content/Intent;" />
 		<method name="protect(I)Z" />
@@ -11946,7 +12260,8 @@
 		<field name="SERVICE_INTERFACE" />
 	</class>
 	<class name="android/net/VpnService$Builder" since="14">
-		<method name="&lt;init>()V" />
+		<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;" />
@@ -11962,21 +12277,12 @@
 	<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="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;)LT;" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
-		<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;)LT;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
 		<method name="getCompressedEntity([BLandroid/content/ContentResolver;)Lorg/apache/http/entity/AbstractHttpEntity;" />
-		<method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
 		<method name="getMinGzipSize(Landroid/content/ContentResolver;)J" />
-		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
 		<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;" />
@@ -11984,20 +12290,18 @@
 		<method name="parseDate(Ljava/lang/String;)J" />
 		<field name="DEFAULT_SYNC_MIN_GZIP_BYTES" />
 	</class>
-	<class name="android/net/http/HttpResponseCache" since="13">
+	<class name="android/net/http/HttpResponseCache" since="14">
 		<extends name="java/net/ResponseCache" />
 		<implements name="java/io/Closeable" />
-		<method name="close()V" />
+		<method name="&lt;init>()V" />
 		<method name="delete()V" />
 		<method name="flush()V" />
-		<method name="get(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;)Ljava/net/CacheResponse;" />
 		<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="put(Ljava/net/URI;Ljava/net/URLConnection;)Ljava/net/CacheRequest;" />
 		<method name="size()J" />
 	</class>
 	<class name="android/net/http/SslCertificate" since="1">
@@ -12016,7 +12320,7 @@
 	</class>
 	<class name="android/net/http/SslCertificate$DName" since="1">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<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;" />
@@ -12041,8 +12345,90 @@
 		<field name="SSL_NOTYETVALID" />
 		<field name="SSL_UNTRUSTED" />
 	</class>
+	<class name="android/net/nsd/DnsSdServiceInfo" since="16">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="getHost()Ljava/net/InetAddress;" />
+		<method name="getPort()I" />
+		<method name="getServiceName()Ljava/lang/String;" />
+		<method name="getServiceType()Ljava/lang/String;" />
+		<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/nsd/DnsSdTxtRecord" since="16">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/nsd/DnsSdTxtRecord;)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="contains(Ljava/lang/String;)Z" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getRawData()[B" />
+		<method name="keyCount()I" />
+		<method name="remove(Ljava/lang/String;)I" />
+		<method name="set(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="size()I" />
+		<field name="CREATOR" />
+	</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="getHost()Ljava/net/InetAddress;" />
+		<method name="getPort()I" />
+		<method name="getServiceName()Ljava/lang/String;" />
+		<method name="getServiceType()Ljava/lang/String;" />
+		<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" />
@@ -12073,13 +12459,13 @@
 		<method name="getCodec()Landroid/net/rtp/AudioCodec;" />
 		<method name="getDtmfType()I" />
 		<method name="getGroup()Landroid/net/rtp/AudioGroup;" />
-		<method name="isBusy()Z" />
 		<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" />
@@ -12133,6 +12519,7 @@
 	</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" />
@@ -12156,6 +12543,7 @@
 	</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;" />
@@ -12182,10 +12570,10 @@
 	</class>
 	<class name="android/net/sip/SipProfile" since="9">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<implements name="android/os/Parcelable" />
 		<implements name="java/io/Serializable" />
-		<method name="describeContents()I" />
+		<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;" />
@@ -12198,7 +12586,6 @@
 		<method name="getSipDomain()Ljava/lang/String;" />
 		<method name="getUriString()Ljava/lang/String;" />
 		<method name="getUserName()Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/net/sip/SipProfile$Builder" since="9">
@@ -12218,12 +12605,14 @@
 		<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" />
@@ -12256,6 +12645,7 @@
 	</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" />
@@ -12272,8 +12662,7 @@
 	<class name="android/net/wifi/ScanResult" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="&lt;init>()V" />
 		<field name="BSSID" />
 		<field name="SSID" />
 		<field name="capabilities" />
@@ -12283,11 +12672,9 @@
 	<class name="android/net/wifi/SupplicantState" since="1">
 		<extends name="java/lang/Enum" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ASSOCIATED" />
 		<field name="ASSOCIATING" />
 		<field name="AUTHENTICATING" since="14" />
@@ -12306,8 +12693,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="BSSID" />
 		<field name="SSID" />
 		<field name="allowedAuthAlgorithms" />
@@ -12325,6 +12710,7 @@
 	</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" />
@@ -12333,6 +12719,7 @@
 	</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" />
@@ -12342,6 +12729,7 @@
 	</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" />
@@ -12351,6 +12739,7 @@
 	</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" />
@@ -12359,6 +12748,7 @@
 	</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" />
@@ -12366,6 +12756,7 @@
 	</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" />
@@ -12374,7 +12765,7 @@
 	<class name="android/net/wifi/WifiInfo" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getBSSID()Ljava/lang/String;" />
 		<method name="getDetailedStateOf(Landroid/net/wifi/SupplicantState;)Landroid/net/NetworkInfo$DetailedState;" />
 		<method name="getHiddenSSID()Z" />
@@ -12385,11 +12776,11 @@
 		<method name="getRssi()I" />
 		<method name="getSSID()Ljava/lang/String;" />
 		<method name="getSupplicantState()Landroid/net/wifi/SupplicantState;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
@@ -12442,6 +12833,7 @@
 	</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" />
@@ -12449,6 +12841,7 @@
 	</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" />
@@ -12456,11 +12849,10 @@
 		<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" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="DISPLAY" />
 		<field name="INVALID" />
@@ -12471,27 +12863,25 @@
 		<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" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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="describeContents()I" />
 		<method name="isGroupOwner()Z" />
 		<method name="isServiceDiscoveryCapable()Z" />
 		<method name="wpsDisplaySupported()Z" />
 		<method name="wpsKeypadSupported()Z" />
 		<method name="wpsPbcSupported()Z" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="AVAILABLE" />
 		<field name="CONNECTED" />
 		<field name="CREATOR" />
@@ -12505,57 +12895,72 @@
 		<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="describeContents()I" />
 		<method name="getDeviceList()Ljava/util/Collection;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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_WIFI_P2P_DEVICE" />
 		<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" />
@@ -12563,37 +12968,100 @@
 		<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="describeContents()I" />
+		<method name="getByteArrayLength()I" since="16" />
 		<method name="getRecords()[Landroid/nfc/NdefRecord;" />
 		<method name="toByteArray()[B" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/nfc/NdefRecord" since="9">
@@ -12602,15 +13070,17 @@
 		<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="createUri(Landroid/net/Uri;)Landroid/nfc/NdefRecord;" since="14" />
 		<method name="createUri(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14" />
-		<method name="describeContents()I" />
 		<method name="getId()[B" />
 		<method name="getPayload()[B" />
 		<method name="getTnf()S" />
 		<method name="getType()[B" />
 		<method name="toByteArray()[B" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<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" />
@@ -12629,6 +13099,7 @@
 	</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="enableForegroundDispatch(Landroid/app/Activity;Landroid/app/PendingIntent;[Landroid/content/IntentFilter;[[Ljava/lang/String;)V" since="10" />
@@ -12636,6 +13107,9 @@
 		<method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;" />
 		<method name="getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter;" since="10" />
 		<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" />
@@ -12646,26 +13120,34 @@
 		<field name="EXTRA_NDEF_MESSAGES" />
 		<field name="EXTRA_TAG" since="10" />
 	</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/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="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getId()[B" />
 		<method name="getTechList()[Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/nfc/TagLostException" since="10">
@@ -12676,23 +13158,23 @@
 	<class name="android/nfc/tech/BasicTagTechnology" since="10">
 		<extends name="java/lang/Object" />
 		<implements name="android/nfc/tech/TagTechnology" />
-		<method name="close()V" />
-		<method name="connect()V" />
-		<method name="getTag()Landroid/nfc/Tag;" />
-		<method name="isConnected()Z" />
+		<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" />
@@ -12728,6 +13210,7 @@
 	</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" />
@@ -12743,6 +13226,7 @@
 	</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;" />
@@ -12760,12 +13244,14 @@
 	</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" />
@@ -12776,6 +13262,7 @@
 	</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" />
@@ -12784,6 +13271,7 @@
 	</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" />
@@ -12794,6 +13282,7 @@
 	</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" />
@@ -12801,8 +13290,8 @@
 		<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="close()V" />
 		<method name="connect()V" />
 		<method name="getTag()Landroid/nfc/Tag;" />
 		<method name="isConnected()Z" />
@@ -14169,29 +14658,31 @@
 		<method name="setPreserveEGLContextOnPause(Z)V" since="11" />
 		<method name="setRenderMode(I)V" />
 		<method name="setRenderer(Landroid/opengl/GLSurfaceView$Renderer;)V" />
-		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
-		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
-		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)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" />
@@ -14208,6 +14699,7 @@
 	</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" />
@@ -14250,20 +14742,20 @@
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
 		<method name="cancel(Z)Z" />
-		<method name="doInBackground([LParams;)LResult;" />
+		<method name="doInBackground([Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="execute(Ljava/lang/Runnable;)V" since="11" />
-		<method name="execute([LParams;)Landroid/os/AsyncTask;" />
-		<method name="executeOnExecutor(Ljava/util/concurrent/Executor;[LParams;)Landroid/os/AsyncTask;" since="11" />
-		<method name="get()LResult;" />
-		<method name="get(JLjava/util/concurrent/TimeUnit;)LResult;" />
+		<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(LResult;)V" since="11" />
-		<method name="onPostExecute(LResult;)V" />
+		<method name="onCancelled(Ljava/lang/Object;)V" since="11" />
+		<method name="onPostExecute(Ljava/lang/Object;)V" />
 		<method name="onPreExecute()V" />
-		<method name="onProgressUpdate([LProgress;)V" />
-		<method name="publishProgress([LProgress;)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>
@@ -14315,21 +14807,12 @@
 		<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="dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="3" />
-		<method name="dumpAsync(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="13" />
 		<method name="flushPendingCommands()V" />
 		<method name="getCallingPid()I" />
 		<method name="getCallingUid()I" />
-		<method name="getInterfaceDescriptor()Ljava/lang/String;" />
-		<method name="isBinderAlive()Z" />
 		<method name="joinThreadPool()V" />
-		<method name="linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V" />
 		<method name="onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
-		<method name="pingBinder()Z" />
-		<method name="queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;" />
 		<method name="restoreCallingIdentity(J)V" />
-		<method name="transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
-		<method name="unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z" />
 	</class>
 	<class name="android/os/Build" since="1">
 		<extends name="java/lang/Object" />
@@ -14385,19 +14868,18 @@
 		<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" />
 	</class>
 	<class name="android/os/Bundle" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<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>(Ljava/lang/ClassLoader;)V" />
 		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="containsKey(Ljava/lang/String;)Z" />
-		<method name="describeContents()I" />
 		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
 		<method name="getBoolean(Ljava/lang/String;)Z" />
 		<method name="getBoolean(Ljava/lang/String;Z)Z" />
@@ -14427,7 +14909,7 @@
 		<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;)LT;" />
+		<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;" />
@@ -14476,10 +14958,21 @@
 		<method name="remove(Ljava/lang/String;)V" />
 		<method name="setClassLoader(Ljava/lang/ClassLoader;)V" />
 		<method name="size()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
@@ -14503,6 +14996,7 @@
 	</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" />
@@ -14584,7 +15078,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" since="5" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" since="5" />
 		<method name="getOtherLabel(I)Ljava/lang/String;" since="14" />
 		<method name="getOtherPrivateDirty(I)I" since="14" />
 		<method name="getOtherPss(I)I" since="14" />
@@ -14593,7 +15086,6 @@
 		<method name="getTotalPss()I" since="5" />
 		<method name="getTotalSharedDirty()I" since="5" />
 		<method name="readFromParcel(Landroid/os/Parcel;)V" since="5" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="5" />
 		<field name="CREATOR" since="5" />
 		<field name="dalvikPrivateDirty" />
 		<field name="dalvikPss" />
@@ -14630,13 +15122,11 @@
 		<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="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/os/Environment" since="1">
@@ -14727,6 +15217,7 @@
 		<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">
@@ -14739,6 +15230,7 @@
 		<method name="quit()Z" since="5" />
 	</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;" />
@@ -14758,13 +15250,16 @@
 		<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" />
@@ -14793,7 +15288,6 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
 		<method name="copyFrom(Landroid/os/Message;)V" />
-		<method name="describeContents()I" />
 		<method name="getCallback()Ljava/lang/Runnable;" />
 		<method name="getData()Landroid/os/Bundle;" />
 		<method name="getTarget()Landroid/os/Handler;" />
@@ -14811,7 +15305,6 @@
 		<method name="sendToTarget()V" />
 		<method name="setData(Landroid/os/Bundle;)V" />
 		<method name="setTarget(Landroid/os/Handler;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="arg1" />
 		<field name="arg2" />
@@ -14821,10 +15314,12 @@
 	</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">
@@ -14832,20 +15327,24 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Landroid/os/Handler;)V" />
 		<method name="&lt;init>(Landroid/os/IBinder;)V" />
-		<method name="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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;" />
@@ -14858,7 +15357,7 @@
 		<method name="createLongArray()[J" />
 		<method name="createStringArray()[Ljava/lang/String;" />
 		<method name="createStringArrayList()Ljava/util/ArrayList;" />
-		<method name="createTypedArray(Landroid/os/Parcelable$Creator;)[LT;" />
+		<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" />
@@ -14893,7 +15392,7 @@
 		<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;)LT;" />
+		<method name="readParcelable(Ljava/lang/ClassLoader;)Landroid/os/Parcelable;" />
 		<method name="readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os/Parcelable;" />
 		<method name="readSerializable()Ljava/io/Serializable;" />
 		<method name="readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;" />
@@ -14902,7 +15401,7 @@
 		<method name="readStringArray([Ljava/lang/String;)V" />
 		<method name="readStringList(Ljava/util/List;)V" />
 		<method name="readStrongBinder()Landroid/os/IBinder;" />
-		<method name="readTypedArray([LT;Landroid/os/Parcelable$Creator;)V" />
+		<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" />
@@ -14934,7 +15433,7 @@
 		<method name="writeMap(Ljava/util/Map;)V" />
 		<method name="writeNoException()V" />
 		<method name="writeParcelable(Landroid/os/Parcelable;I)V" />
-		<method name="writeParcelableArray([LT;I)V" />
+		<method name="writeParcelableArray([Landroid/os/Parcelable;I)V" />
 		<method name="writeSerializable(Ljava/io/Serializable;)V" />
 		<method name="writeSparseArray(Landroid/util/SparseArray;)V" />
 		<method name="writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V" />
@@ -14943,7 +15442,7 @@
 		<method name="writeStringList(Ljava/util/List;)V" />
 		<method name="writeStrongBinder(Landroid/os/IBinder;)V" />
 		<method name="writeStrongInterface(Landroid/os/IInterface;)V" />
-		<method name="writeTypedArray([LT;I)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" />
@@ -14951,11 +15450,11 @@
 	<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="close()V" />
 		<method name="createPipe()[Landroid/os/ParcelFileDescriptor;" since="9" />
-		<method name="describeContents()I" />
 		<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" />
@@ -14966,7 +15465,6 @@
 		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
 		<method name="getStatSize()J" since="3" />
 		<method name="open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="MODE_APPEND" since="3" />
 		<field name="MODE_CREATE" />
@@ -14994,36 +15492,35 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Ljava/util/UUID;)V" />
-		<method name="describeContents()I" />
 		<method name="fromString(Ljava/lang/String;)Landroid/os/ParcelUuid;" />
 		<method name="getUuid()Ljava/util/UUID;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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;)LT;" />
+		<method name="createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object;" />
 	</class>
 	<class name="android/os/Parcelable$Creator" since="1">
-		<method name="createFromParcel(Landroid/os/Parcel;)LT;" />
-		<method name="newArray(I)[LT;" />
+		<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="describeContents()I" />
 		<method name="getPath()Ljava/lang/String;" />
 		<method name="getType()I" />
 		<method name="match(Ljava/lang/String;)Z" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="PATTERN_LITERAL" />
 		<field name="PATTERN_PREFIX" />
@@ -15031,6 +15528,7 @@
 	</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="isScreenOn()Z" since="7" />
 		<method name="newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;" />
@@ -15045,6 +15543,7 @@
 	</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" />
@@ -15095,6 +15594,7 @@
 		<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">
@@ -15103,13 +15603,13 @@
 		<method name="beginBroadcast()I" />
 		<method name="finishBroadcast()V" />
 		<method name="getBroadcastCookie(I)Ljava/lang/Object;" since="4" />
-		<method name="getBroadcastItem(I)LE;" />
+		<method name="getBroadcastItem(I)Landroid/os/IInterface;" />
 		<method name="kill()V" />
-		<method name="onCallbackDied(LE;)V" />
-		<method name="onCallbackDied(LE;Ljava/lang/Object;)V" since="4" />
-		<method name="register(LE;)Z" />
-		<method name="register(LE;Ljava/lang/Object;)Z" since="4" />
-		<method name="unregister(LE;)Z" />
+		<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" />
@@ -15120,10 +15620,8 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Landroid/os/Handler;)V" />
-		<method name="describeContents()I" />
 		<method name="onReceiveResult(ILandroid/os/Bundle;)V" />
 		<method name="send(ILandroid/os/Bundle;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/os/StatFs" since="1">
@@ -15137,6 +15635,7 @@
 	</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" />
@@ -15148,6 +15647,7 @@
 	</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">
@@ -15174,6 +15674,7 @@
 	</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">
@@ -15184,6 +15685,7 @@
 		<method name="detectActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
 		<method name="detectAll()Landroid/os/StrictMode$VmPolicy$Builder;" />
 		<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;" />
@@ -15192,6 +15694,7 @@
 	</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="setCurrentTimeMillis(J)Z" />
@@ -15205,6 +15708,7 @@
 		<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" />
@@ -15215,6 +15719,7 @@
 	</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" />
@@ -15227,11 +15732,9 @@
 		<method name="&lt;init>(Landroid/os/WorkSource;)V" />
 		<method name="add(Landroid/os/WorkSource;)Z" />
 		<method name="clear()V" />
-		<method name="describeContents()I" />
 		<method name="diff(Landroid/os/WorkSource;)Z" />
 		<method name="remove(Landroid/os/WorkSource;)Z" />
 		<method name="set(Landroid/os/WorkSource;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/os/storage/OnObbStateChangeListener" since="9">
@@ -15249,6 +15752,7 @@
 	</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" />
@@ -15285,12 +15789,9 @@
 		<method name="getDialogTitle()Ljava/lang/CharSequence;" />
 		<method name="getNegativeButtonText()Ljava/lang/CharSequence;" />
 		<method name="getPositiveButtonText()Ljava/lang/CharSequence;" />
-		<method name="onActivityDestroy()V" />
 		<method name="onBindDialogView(Landroid/view/View;)V" />
-		<method name="onClick(Landroid/content/DialogInterface;I)V" />
 		<method name="onCreateDialogView()Landroid/view/View;" />
 		<method name="onDialogClosed(Z)V" />
-		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
 		<method name="onPrepareDialogBuilder(Landroid/app/AlertDialog$Builder;)V" />
 		<method name="setDialogIcon(I)V" />
 		<method name="setDialogIcon(Landroid/graphics/drawable/Drawable;)V" />
@@ -15437,9 +15938,11 @@
 		<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">
@@ -15463,7 +15966,6 @@
 		<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="onPreferenceStartFragment(Landroid/preference/PreferenceFragment;Landroid/preference/Preference;)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" />
@@ -15486,13 +15988,11 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="breadCrumbShortTitle" />
 		<field name="breadCrumbShortTitleRes" />
@@ -15527,6 +16027,7 @@
 		<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">
@@ -15549,6 +16050,7 @@
 	</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;" />
@@ -15563,24 +16065,26 @@
 		<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/widget/AdapterView$OnItemClickListener" />
 		<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;" />
-		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
-		<method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
 	</class>
 	<class name="android/preference/RingtonePreference" since="1">
 		<extends name="android/preference/Preference" />
@@ -15591,7 +16095,6 @@
 		<method name="getRingtoneType()I" />
 		<method name="getShowDefault()Z" />
 		<method name="getShowSilent()Z" />
-		<method name="onActivityResult(IILandroid/content/Intent;)Z" />
 		<method name="onPrepareRingtonePickerIntent(Landroid/content/Intent;)V" />
 		<method name="onRestoreRingtone()Landroid/net/Uri;" />
 		<method name="onSaveRingtone(Landroid/net/Uri;)V" />
@@ -15637,6 +16140,7 @@
 		<field name="EXTRA_SKIP_UI" since="11" />
 	</class>
 	<class name="android/provider/BaseColumns" since="1">
+		<extends name="java/lang/Object" />
 		<field name="_COUNT" />
 		<field name="_ID" />
 	</class>
@@ -15698,24 +16202,33 @@
 		<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" />
@@ -15737,14 +16250,17 @@
 		<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" />
@@ -15760,7 +16276,9 @@
 		<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" />
@@ -15769,10 +16287,12 @@
 		<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" />
@@ -15798,13 +16318,16 @@
 		<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" />
@@ -15817,19 +16340,24 @@
 		<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" />
@@ -15838,23 +16366,29 @@
 		<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" />
@@ -15867,7 +16401,10 @@
 		<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" />
@@ -15911,28 +16448,35 @@
 		<field name="TITLE" />
 	</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" />
@@ -15948,15 +16492,19 @@
 		<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" />
@@ -15965,6 +16513,7 @@
 		<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" />
@@ -15974,7 +16523,9 @@
 		<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">
@@ -16008,6 +16559,7 @@
 	</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" />
@@ -16021,6 +16573,7 @@
 		<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;" />
@@ -16048,6 +16601,7 @@
 		<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" />
@@ -16063,6 +16617,7 @@
 		<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" />
@@ -16070,6 +16625,7 @@
 		<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>
@@ -16077,6 +16633,7 @@
 		<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" />
@@ -16093,6 +16650,7 @@
 		<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" />
@@ -16102,6 +16660,7 @@
 		<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" />
@@ -16165,6 +16724,7 @@
 		<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" />
@@ -16179,6 +16739,7 @@
 		<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" />
@@ -16190,6 +16751,7 @@
 		<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;" />
@@ -16214,6 +16776,7 @@
 		<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>
@@ -16221,6 +16784,7 @@
 		<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" />
@@ -16230,10 +16794,12 @@
 		<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" />
@@ -16250,6 +16816,7 @@
 		<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" />
@@ -16260,6 +16827,7 @@
 		<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" />
@@ -16278,11 +16846,13 @@
 		<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" />
@@ -16291,6 +16861,7 @@
 		<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" />
@@ -16308,6 +16879,7 @@
 		<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" />
@@ -16316,6 +16888,7 @@
 		<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" />
@@ -16336,6 +16909,7 @@
 	<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" />
@@ -16347,6 +16921,7 @@
 		<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" />
@@ -16354,11 +16929,14 @@
 	</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$CommonColumns" since="5">
+		<extends name="java/lang/Object" />
 		<implements name="android/provider/ContactsContract$CommonDataKinds$BaseTypes" />
 		<field name="DATA" />
 		<field name="LABEL" />
@@ -16368,6 +16946,7 @@
 		<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" />
@@ -16386,6 +16965,7 @@
 		<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" />
@@ -16396,12 +16976,15 @@
 	<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" />
@@ -16410,6 +16993,7 @@
 		<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;" />
@@ -16435,6 +17019,7 @@
 		<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" />
@@ -16447,6 +17032,7 @@
 	<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>
@@ -16454,6 +17040,7 @@
 		<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" />
@@ -16471,12 +17058,14 @@
 		<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="TYPE_ASSISTANT" />
 		<field name="TYPE_CALLBACK" />
@@ -16502,6 +17091,7 @@
 	<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" />
@@ -16510,6 +17100,7 @@
 		<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" />
@@ -16533,6 +17124,7 @@
 		<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" />
@@ -16544,6 +17136,7 @@
 	<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" />
@@ -16559,6 +17152,7 @@
 		<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" />
@@ -16580,6 +17174,7 @@
 		<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" />
@@ -16591,6 +17186,7 @@
 		<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" />
@@ -16600,6 +17196,7 @@
 		<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" />
@@ -16607,6 +17204,7 @@
 		<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" />
@@ -16618,10 +17216,11 @@
 	<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" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
+		<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;" />
@@ -16642,15 +17241,17 @@
 	<class name="android/provider/ContactsContract$Contacts$AggregationSuggestions" since="5">
 		<extends name="java/lang/Object" />
 		<implements name="android/provider/BaseColumns" />
-		<implements name="android/provider/ContactsContract$ContactsColumns" />
 		<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">
@@ -16665,6 +17266,7 @@
 		<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" />
@@ -16674,16 +17276,20 @@
 		<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="DISPLAY_NAME" />
 		<field name="HAS_PHONE_NUMBER" />
 		<field name="IN_VISIBLE_GROUP" />
@@ -16697,11 +17303,13 @@
 	<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" />
 	</class>
 	<class name="android/provider/ContactsContract$DataColumns" since="5">
+		<extends name="java/lang/Object" />
 		<field name="DATA1" />
 		<field name="DATA10" />
 		<field name="DATA11" />
@@ -16729,17 +17337,20 @@
 		<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$RawContactsColumns" />
 		<implements name="android/provider/ContactsContract$StatusColumns" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
 	</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" />
@@ -16749,6 +17360,7 @@
 	<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" />
@@ -16776,6 +17388,7 @@
 		<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" />
@@ -16784,12 +17397,15 @@
 		<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" />
@@ -16802,6 +17418,7 @@
 		<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" />
@@ -16809,6 +17426,7 @@
 		<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" />
@@ -16872,14 +17490,18 @@
 		<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" />
 	</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" />
@@ -16890,6 +17512,7 @@
 		<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" />
@@ -16897,18 +17520,22 @@
 		<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;" />
@@ -16928,10 +17555,11 @@
 	<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" />
-		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
+		<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" />
@@ -16946,24 +17574,31 @@
 		<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" />
@@ -16976,6 +17611,7 @@
 		<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" />
@@ -16984,11 +17620,13 @@
 	<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" />
@@ -16999,6 +17637,7 @@
 		<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" />
@@ -17022,6 +17661,7 @@
 		<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" />
@@ -17030,11 +17670,14 @@
 		<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" />
@@ -17045,8 +17688,10 @@
 		<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" />
@@ -17055,13 +17700,16 @@
 		<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" />
@@ -17081,6 +17729,7 @@
 		<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" />
@@ -17091,6 +17740,7 @@
 	<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;" />
@@ -17101,6 +17751,7 @@
 	<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" />
@@ -17150,6 +17801,7 @@
 		<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" />
@@ -17173,6 +17825,7 @@
 		<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" />
@@ -17197,6 +17850,7 @@
 		<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" />
@@ -17241,6 +17895,7 @@
 		<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">
@@ -17282,6 +17937,7 @@
 		<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" />
@@ -17294,6 +17950,7 @@
 		<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" />
@@ -17310,6 +17967,7 @@
 		<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" />
@@ -17364,14 +18022,17 @@
 		<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" />
@@ -17411,6 +18072,7 @@
 		<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" />
@@ -17430,6 +18092,7 @@
 		<field name="TAGS" />
 	</class>
 	<class name="android/provider/OpenableColumns" since="1">
+		<extends name="java/lang/Object" />
 		<field name="DISPLAY_NAME" />
 		<field name="SIZE" />
 	</class>
@@ -17471,6 +18134,7 @@
 		<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_SETTINGS" since="16" />
 		<field name="ACTION_PRIVACY_SETTINGS" since="5" />
 		<field name="ACTION_QUICK_LAUNCH_SETTINGS" since="3" />
 		<field name="ACTION_SEARCH_SETTINGS" since="8" />
@@ -17523,6 +18187,7 @@
 		<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" />
@@ -17601,6 +18266,7 @@
 		<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" />
@@ -17708,6 +18374,7 @@
 		<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" />
@@ -17741,6 +18408,7 @@
 		<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" />
@@ -17750,10 +18418,13 @@
 		<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" />
@@ -17761,7 +18432,9 @@
 		<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" />
@@ -17782,8 +18455,10 @@
 		<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" />
@@ -17799,6 +18474,7 @@
 	</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(II[B)V" />
 		<method name="copy1DRangeFrom(II[F)V" />
@@ -17844,15 +18520,24 @@
 		<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="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" />
 	</class>
 	<class name="android/renderscript/Allocation$MipmapControl" since="11">
@@ -17865,6 +18550,7 @@
 	</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" />
@@ -17884,6 +18570,7 @@
 	</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" />
@@ -17913,12 +18600,14 @@
 		<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" />
@@ -17926,6 +18615,7 @@
 		<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" />
@@ -17935,6 +18625,7 @@
 	</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;" />
@@ -17947,6 +18638,7 @@
 		<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" />
@@ -17998,6 +18690,15 @@
 		<method name="U8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
 		<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>
@@ -18030,8 +18731,10 @@
 		<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" />
@@ -18108,6 +18811,7 @@
 	</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;" />
@@ -18124,6 +18828,7 @@
 	</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;" />
@@ -18155,6 +18860,7 @@
 	</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;" />
@@ -18286,6 +18992,7 @@
 	</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" />
@@ -18341,15 +19048,22 @@
 	</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" />
@@ -18365,6 +19079,7 @@
 	</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" />
@@ -18373,6 +19088,7 @@
 	</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" />
@@ -18402,9 +19118,12 @@
 	</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" />
@@ -18423,10 +19142,20 @@
 	</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" />
@@ -18479,6 +19208,9 @@
 	</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" />
@@ -18488,6 +19220,7 @@
 	</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">
@@ -18531,9 +19264,6 @@
 		<method name="pause()V" />
 		<method name="resume()V" />
 		<method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" />
-		<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/renderscript/RSTextureView" since="14">
 		<extends name="android/view/TextureView" />
@@ -18543,16 +19273,13 @@
 		<method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" />
 		<method name="destroyRenderScriptGL()V" />
 		<method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" />
-		<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" />
 		<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="destroy()V" />
@@ -18575,7 +19302,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/lang/Runnable" />
 		<method name="&lt;init>()V" />
-		<method name="run()V" />
 		<field name="mErrorMessage" />
 		<field name="mErrorNum" />
 	</class>
@@ -18583,7 +19309,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/lang/Runnable" />
 		<method name="&lt;init>()V" />
-		<method name="run()V" />
 		<field name="mData" />
 		<field name="mID" />
 		<field name="mLength" />
@@ -18614,12 +19339,18 @@
 	</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="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" />
@@ -18644,6 +19375,7 @@
 	</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="forEach(ILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;)V" since="14" />
 		<method name="invoke(I)V" />
@@ -18655,10 +19387,12 @@
 		<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" />
@@ -18703,6 +19437,7 @@
 	</class>
 	<class name="android/renderscript/Type" since="11">
 		<extends name="android/renderscript/BaseObj" />
+		<method name="&lt;init>()V" />
 		<method name="getCount()I" />
 		<method name="getElement()Landroid/renderscript/Element;" />
 		<method name="getX()I" />
@@ -18736,6 +19471,7 @@
 	</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;" />
@@ -18747,13 +19483,16 @@
 		<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">
@@ -18763,23 +19502,28 @@
 		<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;" />
+		<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">
@@ -18793,30 +19537,30 @@
 		<extends name="android/app/Service" />
 		<method name="&lt;init>()V" />
 		<method name="createSession()Landroid/service/textservice/SpellCheckerService$Session;" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<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/wallpaper/WallpaperService" since="7">
 		<extends name="android/app/Service" />
 		<method name="&lt;init>()V" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<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>()V" />
+		<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" />
@@ -18838,6 +19582,7 @@
 		<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" />
@@ -18851,7 +19596,6 @@
 	<class name="android/speech/RecognitionService" since="8">
 		<extends name="android/app/Service" />
 		<method name="&lt;init>()V" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<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" />
@@ -18860,6 +19604,7 @@
 	</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" />
@@ -18871,9 +19616,11 @@
 	</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" />
@@ -18889,6 +19636,7 @@
 		<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" />
@@ -18904,6 +19652,7 @@
 	</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" />
@@ -18914,6 +19663,7 @@
 	</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;" />
@@ -18935,6 +19685,7 @@
 		<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" />
@@ -18942,6 +19693,7 @@
 		<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="getCountry()Ljava/lang/String;" />
 		<method name="getLanguage()Ljava/lang/String;" />
@@ -18991,7 +19743,7 @@
 	</class>
 	<class name="android/speech/tts/TextToSpeech$Engine" since="4">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/speech/tts/TextToSpeech;)V" />
 		<field name="ACTION_CHECK_TTS_DATA" />
 		<field name="ACTION_INSTALL_TTS_DATA" />
 		<field name="ACTION_TTS_DATA_INSTALLED" />
@@ -19018,21 +19770,23 @@
 		<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="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<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" />
@@ -19041,6 +19795,7 @@
 		<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" />
@@ -19059,7 +19814,6 @@
 		<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="describeContents()I" />
 		<method name="getCid()I" />
 		<method name="getLac()I" since="5" />
 		<method name="getNetworkType()I" since="5" />
@@ -19067,7 +19821,6 @@
 		<method name="getRssi()I" />
 		<method name="setCid(I)V" />
 		<method name="setRssi(I)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="UNKNOWN_CID" />
 		<field name="UNKNOWN_RSSI" />
@@ -19076,9 +19829,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/text/TextWatcher" />
 		<method name="&lt;init>()V" />
-		<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/telephony/PhoneNumberUtils" since="1">
 		<extends name="java/lang/Object" />
@@ -19153,7 +19903,6 @@
 		<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="describeContents()I" />
 		<method name="getIsManualSelection()Z" />
 		<method name="getOperatorAlphaLong()Ljava/lang/String;" />
 		<method name="getOperatorAlphaShort()Ljava/lang/String;" />
@@ -19166,7 +19915,6 @@
 		<method name="setState(I)V" />
 		<method name="setStateOff()V" />
 		<method name="setStateOutOfService()V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="STATE_EMERGENCY_ONLY" />
 		<field name="STATE_IN_SERVICE" />
@@ -19176,7 +19924,7 @@
 	<class name="android/telephony/SignalStrength" since="7">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getCdmaDbm()I" />
 		<method name="getCdmaEcio()I" />
 		<method name="getEvdoDbm()I" />
@@ -19185,10 +19933,10 @@
 		<method name="getGsmBitErrorRate()I" />
 		<method name="getGsmSignalStrength()I" />
 		<method name="isGsm()Z" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 	</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" />
@@ -19206,6 +19954,7 @@
 	</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;" />
@@ -19259,11 +20008,13 @@
 	</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="getCallState()I" />
 		<method name="getCellLocation()Landroid/telephony/CellLocation;" />
 		<method name="getDataActivity()I" />
@@ -19360,6 +20111,7 @@
 	</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" />
@@ -19436,14 +20188,12 @@
 		<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="getActivity()LT;" />
 		<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="getActivity()LT;" />
 		<method name="setActivityInitialTouchMode(Z)V" />
 		<method name="setActivityIntent(Landroid/content/Intent;)V" />
 	</class>
@@ -19457,7 +20207,6 @@
 	<class name="android/test/ActivityUnitTestCase" since="1">
 		<extends name="android/test/ActivityTestCase" />
 		<method name="&lt;init>(Ljava/lang/Class;)V" />
-		<method name="getActivity()LT;" />
 		<method name="getFinishedActivityRequest()I" />
 		<method name="getRequestedOrientation()I" />
 		<method name="getStartedActivityIntent()Landroid/content/Intent;" />
@@ -19465,7 +20214,7 @@
 		<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;)LT;" />
+		<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" />
@@ -19488,7 +20237,6 @@
 		<method name="getTestCases()Ljava/util/List;" />
 		<method name="getTestClassName()Ljava/lang/String;" />
 		<method name="getTestResult()Ljunit/framework/TestResult;" />
-		<method name="runFailed(Ljava/lang/String;)V" />
 		<method name="runTest()V" />
 		<method name="runTest(Ljunit/framework/TestResult;)V" />
 		<method name="setContext(Landroid/content/Context;)V" />
@@ -19496,15 +20244,12 @@
 		<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" />
-		<method name="testEnded(Ljava/lang/String;)V" />
-		<method name="testFailed(ILjunit/framework/Test;Ljava/lang/Throwable;)V" />
-		<method name="testStarted(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()LT;" />
+		<method name="getApplication()Landroid/app/Application;" />
 		<method name="getSystemContext()Landroid/content/Context;" />
 		<method name="terminateApplication()V" />
 		<method name="testApplicationTestCaseSetUpProperly()V" />
@@ -19521,6 +20266,7 @@
 	<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" />
@@ -19528,8 +20274,8 @@
 		<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;)LT;" />
-		<method name="launchActivityWithIntent(Ljava/lang/String;Ljava/lang/Class;Landroid/content/Intent;)LT;" since="3" />
+		<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" />
@@ -19542,7 +20288,6 @@
 		<method name="getAllTests()Ljunit/framework/TestSuite;" />
 		<method name="getAndroidTestRunner()Landroid/test/AndroidTestRunner;" />
 		<method name="getLoader()Ljava/lang/ClassLoader;" />
-		<method name="getTestSuite()Ljunit/framework/TestSuite;" />
 		<field name="REPORT_KEY_NAME_CLASS" />
 		<field name="REPORT_KEY_NAME_TEST" />
 		<field name="REPORT_KEY_NUM_CURRENT" />
@@ -19568,10 +20313,11 @@
 	<class name="android/test/LoaderTestCase" since="11">
 		<extends name="android/test/AndroidTestCase" />
 		<method name="&lt;init>()V" />
-		<method name="getLoaderResultSynchronously(Landroid/content/Loader;)LT;" />
+		<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;" />
@@ -19610,10 +20356,12 @@
 		<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" />
@@ -19625,7 +20373,7 @@
 		<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()LT;" />
+		<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">
@@ -19633,7 +20381,7 @@
 		<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()LT;" />
+		<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">
@@ -19642,15 +20390,15 @@
 		<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;)LT;" />
-		<method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;Z)LT;" />
+		<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()LT;" />
+		<method name="getService()Landroid/app/Service;" />
 		<method name="getSystemContext()Landroid/content/Context;" />
 		<method name="setApplication(Landroid/app/Application;)V" />
 		<method name="setupService()V" />
@@ -19661,7 +20409,7 @@
 	<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()LT;" />
+		<method name="getActivity()Landroid/app/Activity;" />
 		<method name="testActivityTestCaseSetUpProperly()V" />
 	</class>
 	<class name="android/test/SyncBaseInstrumentation" since="1">
@@ -19671,6 +20419,7 @@
 		<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">
@@ -19714,6 +20463,7 @@
 	</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" />
@@ -19742,12 +20492,6 @@
 		<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" />
-		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
-		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
-		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
-		<method name="onCreate()Z" />
-		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
-		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
 	</class>
 	<class name="android/test/mock/MockContentResolver" since="1">
 		<extends name="android/content/ContentResolver" />
@@ -19757,129 +20501,19 @@
 	<class name="android/test/mock/MockContext" since="1">
 		<extends name="android/content/Context" />
 		<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="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="getExternalCacheDir()Ljava/io/File;" since="8" />
-		<method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8" />
-		<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="getPackageCodePath()Ljava/lang/String;" />
-		<method name="getPackageManager()Landroid/content/pm/PackageManager;" />
-		<method name="getPackageName()Ljava/lang/String;" />
 		<method name="getPackageResourcePath()Ljava/lang/String;" />
-		<method name="getResources()Landroid/content/res/Resources;" />
-		<method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;" />
-		<method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;" />
-		<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="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="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="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="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="sendStickyBroadcast(Landroid/content/Intent;)V" />
-		<method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" />
-		<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="startActivity(Landroid/content/Intent;)V" />
-		<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="startService(Landroid/content/Intent;)Landroid/content/ComponentName;" />
-		<method name="stopService(Landroid/content/Intent;)Z" />
-		<method name="unbindService(Landroid/content/ServiceConnection;)V" />
-		<method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V" />
 	</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="close()V" />
 		<method name="commitUpdates()Z" />
 		<method name="commitUpdates(Ljava/util/Map;)Z" />
-		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
-		<method name="deactivate()V" />
 		<method name="deleteRow()Z" />
-		<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="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="hasUpdates()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="supportsUpdates()Z" />
-		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
-		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
 		<method name="updateBlob(I[B)Z" />
 		<method name="updateDouble(ID)Z" />
 		<method name="updateFloat(IF)Z" />
@@ -19893,80 +20527,11 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/content/DialogInterface" />
 		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="dismiss()V" />
 	</class>
 	<class name="android/test/mock/MockPackageManager" since="1">
 		<extends name="android/content/pm/PackageManager" />
 		<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="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="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="getNameForUid(I)Ljava/lang/String;" />
-		<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="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;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="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" />
+		<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" />
@@ -19978,7 +20543,7 @@
 		<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;)LT;" />
+		<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;" />
@@ -20023,13 +20588,10 @@
 	</class>
 	<class name="android/text/AlteredCharSequence" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/CharSequence" />
 		<implements name="android/text/GetChars" />
-		<method name="charAt(I)C" />
-		<method name="getChars(II[CI)V" />
-		<method name="length()I" />
+		<implements name="java/lang/CharSequence" />
+		<method name="&lt;init>()V" />
 		<method name="make(Ljava/lang/CharSequence;[CII)Landroid/text/AlteredCharSequence;" />
-		<method name="subSequence(II)Ljava/lang/CharSequence;" />
 	</class>
 	<class name="android/text/AndroidCharacter" since="1">
 		<extends name="java/lang/Object" />
@@ -20051,14 +20613,12 @@
 		<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="describeContents()I" since="3" />
 		<method name="getKey()Ljava/lang/String;" />
-		<method name="getSpanTypeId()I" since="3" />
 		<method name="getValue()Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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>
@@ -20067,18 +20627,6 @@
 		<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="ellipsized(II)V" />
-		<method name="getBottomPadding()I" />
-		<method name="getEllipsisCount(I)I" />
-		<method name="getEllipsisStart(I)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="getLineStart(I)I" />
-		<method name="getLineTop(I)I" />
-		<method name="getParagraphDirection(I)I" />
-		<method name="getTopPadding()I" />
 		<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;" />
@@ -20093,7 +20641,7 @@
 	</class>
 	<class name="android/text/ClipboardManager" since="1">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" since="11" />
+		<method name="&lt;init>()V" />
 		<method name="getText()Ljava/lang/CharSequence;" />
 		<method name="hasText()Z" />
 		<method name="setText(Ljava/lang/CharSequence;)V" />
@@ -20103,23 +20651,13 @@
 		<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" />
-		<method name="getBottomPadding()I" />
-		<method name="getEllipsisCount(I)I" />
-		<method name="getEllipsisStart(I)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="getLineStart(I)I" />
-		<method name="getLineTop(I)I" />
-		<method name="getParagraphDirection(I)I" />
-		<method name="getTopPadding()I" />
 	</class>
 	<class name="android/text/Editable" since="1">
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
+		<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;" />
@@ -20140,37 +20678,42 @@
 		<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" />
-		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
 	</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" />
-		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
 	</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" />
@@ -20274,11 +20817,12 @@
 	</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="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
+		<method name="&lt;init>()V" />
 		<method name="isAllowed(C)Z" />
 		<method name="onInvalidCharacter(C)V" />
 		<method name="onStart()V" />
@@ -20288,21 +20832,19 @@
 		<extends name="android/text/LoginFilter" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Z)V" />
-		<method name="isAllowed(C)Z" />
 	</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" />
-		<method name="isAllowed(C)Z" />
 	</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" />
-		<method name="isAllowed(C)Z" />
 	</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" />
@@ -20310,11 +20852,13 @@
 		<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" />
@@ -20338,12 +20882,14 @@
 		<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" />
@@ -20356,69 +20902,52 @@
 	</class>
 	<class name="android/text/SpannableString" since="1">
 		<extends name="android/text/SpannableStringInternal" />
-		<implements name="java/lang/CharSequence" />
 		<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="removeSpan(Ljava/lang/Object;)V" />
-		<method name="setSpan(Ljava/lang/Object;III)V" />
-		<method name="subSequence(II)Ljava/lang/CharSequence;" />
 		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableString;" />
 	</class>
 	<class name="android/text/SpannableStringBuilder" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Appendable" />
-		<implements name="java/lang/CharSequence" />
 		<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="charAt(I)C" />
-		<method name="clear()V" />
-		<method name="clearSpans()V" />
 		<method name="delete(II)Landroid/text/SpannableStringBuilder;" />
-		<method name="getChars(II[CI)V" />
-		<method name="getFilters()[Landroid/text/InputFilter;" />
-		<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;)[LT;" />
 		<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="length()I" />
-		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
-		<method name="removeSpan(Ljava/lang/Object;)V" />
 		<method name="replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
 		<method name="replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
-		<method name="setFilters([Landroid/text/InputFilter;)V" />
-		<method name="setSpan(Ljava/lang/Object;III)V" />
-		<method name="subSequence(II)Ljava/lang/CharSequence;" />
 		<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;)[LT;" />
+		<method name="getSpans(IILjava/lang/Class;)[Ljava/lang/Object;" />
 		<method name="length()I" />
 		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
-		<method name="toString()Ljava/lang/String;" />
 	</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;)[LT;" />
+		<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" />
@@ -20439,11 +20968,10 @@
 	</class>
 	<class name="android/text/SpannedString" since="1">
 		<extends name="android/text/SpannableStringInternal" />
-		<implements name="java/lang/CharSequence" />
 		<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="subSequence(II)Ljava/lang/CharSequence;" />
 		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannedString;" />
 	</class>
 	<class name="android/text/StaticLayout" since="1">
@@ -20451,17 +20979,6 @@
 		<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" />
-		<method name="getBottomPadding()I" />
-		<method name="getEllipsisCount(I)I" />
-		<method name="getEllipsisStart(I)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="getLineStart(I)I" />
-		<method name="getLineTop(I)I" />
-		<method name="getParagraphDirection(I)I" />
-		<method name="getTopPadding()I" />
 	</class>
 	<class name="android/text/TextPaint" since="1">
 		<extends name="android/graphics/Paint" />
@@ -20477,6 +20994,7 @@
 	</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" />
@@ -20520,20 +21038,18 @@
 		<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="java/util/Iterator" />
 		<implements name="android/text/TextUtils$StringSplitter" />
+		<implements name="java/util/Iterator" />
 		<method name="&lt;init>(C)V" />
-		<method name="hasNext()Z" />
-		<method name="iterator()Ljava/util/Iterator;" />
 		<method name="next()Ljava/lang/String;" />
-		<method name="remove()V" />
-		<method name="setString(Ljava/lang/String;)V" />
 	</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>
@@ -20547,6 +21063,7 @@
 		<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" />
@@ -20712,19 +21229,11 @@
 		<field name="yearDay" />
 	</class>
 	<class name="android/text/method/ArrowKeyMovementMethod" since="1">
-		<extends name="java/lang/Object" />
 		<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="canSelectArbitrarily()Z" />
 		<method name="getInstance()Landroid/text/method/MovementMethod;" />
-		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
-		<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/BaseKeyListener" since="1">
 		<extends name="android/text/method/MetaKeyKeyListener" />
@@ -20732,30 +21241,20 @@
 		<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" />
-		<method name="onKeyOther(Landroid/view/View;Landroid/text/Editable;Landroid/view/KeyEvent;)Z" since="3" />
 	</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="canSelectArbitrarily()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="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
 		<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="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" />
-		<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" />
 		<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" />
@@ -20764,33 +21263,25 @@
 	</class>
 	<class name="android/text/method/CharacterPickerDialog" since="1">
 		<extends name="android/app/Dialog" />
-		<implements name="android/widget/AdapterView$OnItemClickListener" />
 		<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" />
-		<method name="onClick(Landroid/view/View;)V" />
-		<method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
 	</class>
 	<class name="android/text/method/DateKeyListener" since="1">
 		<extends name="android/text/method/NumberKeyListener" />
 		<method name="&lt;init>()V" />
-		<method name="getAcceptedChars()[C" />
-		<method name="getInputType()I" since="3" />
 		<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="getAcceptedChars()[C" />
-		<method name="getInputType()I" since="3" />
 		<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="getAcceptedChars()[C" />
-		<method name="getInputType()I" since="3" />
 		<method name="getInstance()Landroid/text/method/DialerKeyListener;" />
 		<field name="CHARACTERS" />
 	</class>
@@ -20798,8 +21289,6 @@
 		<extends name="android/text/method/NumberKeyListener" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(ZZ)V" />
-		<method name="getAcceptedChars()[C" />
-		<method name="getInputType()I" since="3" />
 		<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;" />
@@ -20808,10 +21297,9 @@
 		<extends name="android/text/method/ReplacementTransformationMethod" />
 		<method name="&lt;init>()V" />
 		<method name="getInstance()Landroid/text/method/HideReturnsTransformationMethod;" />
-		<method name="getOriginal()[C" />
-		<method name="getReplacement()[C" />
 	</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" />
@@ -20821,7 +21309,6 @@
 	<class name="android/text/method/LinkMovementMethod" since="1">
 		<extends name="android/text/method/ScrollingMovementMethod" />
 		<method name="&lt;init>()V" />
-		<method name="getInstance()Landroid/text/method/MovementMethod;" />
 	</class>
 	<class name="android/text/method/MetaKeyKeyListener" since="1">
 		<extends name="java/lang/Object" />
@@ -20852,6 +21339,7 @@
 		<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" />
@@ -20866,17 +21354,12 @@
 		<extends name="android/text/method/BaseKeyListener" />
 		<implements name="android/text/SpanWatcher" />
 		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
-		<method name="getInputType()I" since="3" />
 		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/MultiTapKeyListener;" />
-		<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/method/NumberKeyListener" since="1">
 		<extends name="android/text/method/BaseKeyListener" />
 		<implements name="android/text/InputFilter" />
 		<method name="&lt;init>()V" />
-		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
 		<method name="getAcceptedChars()[C" />
 		<method name="lookup(Landroid/view/KeyEvent;Landroid/text/Spannable;)I" />
 		<method name="ok([CC)Z" />
@@ -20886,17 +21369,11 @@
 		<implements name="android/text/TextWatcher" />
 		<implements name="android/text/method/TransformationMethod" />
 		<method name="&lt;init>()V" />
-		<method name="afterTextChanged(Landroid/text/Editable;)V" />
-		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
 		<method name="getInstance()Landroid/text/method/PasswordTransformationMethod;" />
-		<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" />
-		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
 	</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="getInputType()I" since="3" />
 		<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" />
@@ -20907,25 +21384,15 @@
 		<method name="&lt;init>()V" />
 		<method name="getOriginal()[C" />
 		<method name="getReplacement()[C" />
-		<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/method/ScrollingMovementMethod" since="1">
-		<extends name="java/lang/Object" />
 		<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="canSelectArbitrarily()Z" />
 		<method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
 		<method name="getInstance()Landroid/text/method/MovementMethod;" />
-		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
 		<method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
-		<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" />
 		<method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
 		<method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
 	</class>
@@ -20933,20 +21400,14 @@
 		<extends name="android/text/method/ReplacementTransformationMethod" />
 		<method name="&lt;init>()V" />
 		<method name="getInstance()Landroid/text/method/SingleLineTransformationMethod;" />
-		<method name="getOriginal()[C" />
-		<method name="getReplacement()[C" />
 	</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="getInputType()I" since="3" />
 		<method name="getInstance()Landroid/text/method/TextKeyListener;" />
 		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/TextKeyListener;" />
-		<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" />
 		<method name="release()V" />
 		<method name="shouldCap(Landroid/text/method/TextKeyListener$Capitalize;Ljava/lang/CharSequence;I)Z" />
 	</class>
@@ -20962,19 +21423,19 @@
 	<class name="android/text/method/TimeKeyListener" since="1">
 		<extends name="android/text/method/NumberKeyListener" />
 		<method name="&lt;init>()V" />
-		<method name="getAcceptedChars()[C" />
-		<method name="getInputType()I" since="3" />
 		<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>
@@ -20984,28 +21445,20 @@
 		<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="describeContents()I" since="3" />
 		<method name="getDip()Z" since="5" />
 		<method name="getSize()I" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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/style/AlignmentSpan" />
 		<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" />
-		<method name="describeContents()I" since="3" />
-		<method name="getAlignment()Landroid/text/Layout$Alignment;" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</class>
 	<class name="android/text/style/BackgroundColorSpan" since="1">
 		<extends name="android/text/style/CharacterStyle" />
@@ -21013,25 +21466,16 @@
 		<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="describeContents()I" since="3" />
 		<method name="getBackgroundColor()I" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</class>
 	<class name="android/text/style/BulletSpan" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="android/text/style/LeadingMarginSpan" />
 		<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" />
-		<method name="describeContents()I" since="3" />
-		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
-		<method name="getLeadingMargin(Z)I" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 		<field name="STANDARD_GAP_WIDTH" />
 	</class>
 	<class name="android/text/style/CharacterStyle" since="1">
@@ -21046,7 +21490,6 @@
 		<implements name="android/text/style/UpdateAppearance" since="3" />
 		<method name="&lt;init>()V" />
 		<method name="onClick(Landroid/view/View;)V" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
 	</class>
 	<class name="android/text/style/DrawableMarginSpan" since="1">
 		<extends name="java/lang/Object" />
@@ -21054,28 +21497,21 @@
 		<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" />
-		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V" />
-		<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/DynamicDrawableSpan" since="1">
 		<extends name="android/text/style/ReplacementSpan" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" since="3" />
-		<method name="draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V" />
 		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
-		<method name="getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I" />
 		<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="describeContents()I" />
-		<method name="getSpanTypeId()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 	</class>
 	<class name="android/text/style/ForegroundColorSpan" since="1">
 		<extends name="android/text/style/CharacterStyle" />
@@ -21083,11 +21519,7 @@
 		<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="describeContents()I" since="3" />
 		<method name="getForegroundColor()I" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</class>
 	<class name="android/text/style/IconMarginSpan" since="1">
 		<extends name="java/lang/Object" />
@@ -21095,9 +21527,6 @@
 		<implements name="android/text/style/LineHeightSpan" />
 		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
 		<method name="&lt;init>(Landroid/graphics/Bitmap;I)V" />
-		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V" />
-		<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/ImageSpan" since="1">
 		<extends name="android/text/style/DynamicDrawableSpan" />
@@ -21113,42 +21542,41 @@
 		<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="getDrawable()Landroid/graphics/drawable/Drawable;" />
 		<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/style/LeadingMarginSpan" />
 		<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" />
-		<method name="describeContents()I" since="3" />
-		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
-		<method name="getLeadingMargin(Z)I" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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>
@@ -21157,68 +21585,51 @@
 		<implements name="android/text/style/UpdateAppearance" since="3" />
 		<method name="&lt;init>(Landroid/graphics/MaskFilter;)V" />
 		<method name="getMaskFilter()Landroid/graphics/MaskFilter;" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
 	</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/style/LeadingMarginSpan" />
 		<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="describeContents()I" since="3" />
-		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
 		<method name="getColor()I" />
-		<method name="getLeadingMargin(Z)I" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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;" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
 	</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="describeContents()I" since="3" />
 		<method name="getSizeChange()F" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
 	</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="describeContents()I" since="3" />
 		<method name="getScaleX()F" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</class>
 	<class name="android/text/style/StrikethroughSpan" since="1">
 		<extends name="android/text/style/CharacterStyle" />
@@ -21226,33 +21637,19 @@
 		<implements name="android/text/style/UpdateAppearance" since="3" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="describeContents()I" since="3" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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="describeContents()I" since="3" />
-		<method name="getSpanTypeId()I" since="3" />
 		<method name="getStyle()I" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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" />
-		<method name="describeContents()I" since="3" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</class>
 	<class name="android/text/style/SuggestionSpan" since="14">
 		<extends name="android/text/style/CharacterStyle" />
@@ -21261,14 +21658,10 @@
 		<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="describeContents()I" />
 		<method name="getFlags()I" />
 		<method name="getLocale()Ljava/lang/String;" />
-		<method name="getSpanTypeId()I" />
 		<method name="getSuggestions()[Ljava/lang/String;" />
 		<method name="setFlags(I)V" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACTION_SUGGESTION_PICKED" />
 		<field name="CREATOR" />
 		<field name="FLAG_AUTO_CORRECTION" since="15" />
@@ -21284,13 +21677,9 @@
 		<implements name="android/text/ParcelableSpan" since="3" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="describeContents()I" since="3" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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>
@@ -21298,7 +21687,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/text/style/TabStopSpan" />
 		<method name="&lt;init>(I)V" />
-		<method name="getTabStop()I" />
 	</class>
 	<class name="android/text/style/TextAppearanceSpan" since="1">
 		<extends name="android/text/style/MetricAffectingSpan" />
@@ -21307,39 +21695,25 @@
 		<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="describeContents()I" since="3" />
 		<method name="getFamily()Ljava/lang/String;" />
 		<method name="getLinkTextColor()Landroid/content/res/ColorStateList;" />
-		<method name="getSpanTypeId()I" since="3" />
 		<method name="getTextColor()Landroid/content/res/ColorStateList;" />
 		<method name="getTextSize()I" />
 		<method name="getTextStyle()I" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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="describeContents()I" since="3" />
 		<method name="getFamily()Ljava/lang/String;" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</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="describeContents()I" since="3" />
-		<method name="getSpanTypeId()I" since="3" />
 		<method name="getURL()Ljava/lang/String;" />
-		<method name="onClick(Landroid/view/View;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
 	</class>
 	<class name="android/text/style/UnderlineSpan" since="1">
 		<extends name="android/text/style/CharacterStyle" />
@@ -21347,17 +21721,16 @@
 		<implements name="android/text/style/UpdateAppearance" since="3" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
-		<method name="describeContents()I" since="3" />
-		<method name="getSpanTypeId()I" since="3" />
-		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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">
@@ -21379,9 +21752,11 @@
 		<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">
@@ -21401,9 +21776,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/widget/MultiAutoCompleteTextView$Tokenizer" />
 		<method name="&lt;init>()V" />
-		<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;" />
 		<method name="tokenize(Ljava/lang/CharSequence;)[Landroid/text/util/Rfc822Token;" />
 		<method name="tokenize(Ljava/lang/CharSequence;Ljava/util/Collection;)V" since="8" />
 	</class>
@@ -21422,6 +21794,7 @@
 		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11" />
 	</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" />
@@ -21447,6 +21820,7 @@
 	</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" />
@@ -21498,6 +21872,7 @@
 		<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" />
 		<field name="densityDpi" since="4" />
 		<field name="heightPixels" />
@@ -21519,6 +21894,7 @@
 	</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" />
@@ -21534,11 +21910,13 @@
 	</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="floor(F)F" />
@@ -21551,7 +21929,6 @@
 		<method name="&lt;init>(Ljava/io/Reader;)V" />
 		<method name="beginArray()V" />
 		<method name="beginObject()V" />
-		<method name="close()V" />
 		<method name="endArray()V" />
 		<method name="endObject()V" />
 		<method name="hasNext()Z" />
@@ -21588,7 +21965,6 @@
 		<method name="&lt;init>(Ljava/io/Writer;)V" />
 		<method name="beginArray()Landroid/util/JsonWriter;" />
 		<method name="beginObject()Landroid/util/JsonWriter;" />
-		<method name="close()V" />
 		<method name="endArray()Landroid/util/JsonWriter;" />
 		<method name="endObject()Landroid/util/JsonWriter;" />
 		<method name="flush()V" />
@@ -21605,6 +21981,7 @@
 	</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" />
@@ -21633,27 +22010,46 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/util/Printer" />
 		<method name="&lt;init>(ILjava/lang/String;)V" />
-		<method name="println(Ljava/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(LK;)LV;" />
+		<method name="create(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="createCount()I" />
-		<method name="entryRemoved(ZLK;LV;LV;)V" />
+		<method name="entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" />
 		<method name="evictAll()V" />
 		<method name="evictionCount()I" />
-		<method name="get(LK;)LV;" />
+		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="hitCount()I" />
 		<method name="maxSize()I" />
 		<method name="missCount()I" />
-		<method name="put(LK;LV;)LV;" />
+		<method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="putCount()I" />
-		<method name="remove(LK;)LV;" />
+		<method name="remove(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="size()I" />
-		<method name="sizeOf(LK;LV;)I" />
+		<method name="sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I" />
 		<method name="snapshot()Ljava/util/Map;" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="android/util/MalformedJsonException" since="11">
 		<extends name="java/io/IOException" />
@@ -21683,13 +22079,14 @@
 	</class>
 	<class name="android/util/Pair" since="5">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>(LF;LS;)V" />
-		<method name="create(LA;LB;)Landroid/util/Pair;" />
+		<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" />
@@ -21706,46 +22103,46 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/util/Printer" />
 		<method name="&lt;init>(Ljava/io/PrintStream;)V" />
-		<method name="println(Ljava/lang/String;)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" />
-		<method name="println(Ljava/lang/String;)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(LT;)LV;" />
+		<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(LT;LV;)V" />
+		<method name="set(Ljava/lang/Object;Ljava/lang/Object;)V" />
 	</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(ILE;)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)LE;" />
-		<method name="get(ILE;)LE;" />
+		<method name="get(I)Ljava/lang/Object;" />
+		<method name="get(ILjava/lang/Object;)Ljava/lang/Object;" />
 		<method name="indexOfKey(I)I" />
-		<method name="indexOfValue(LE;)I" />
+		<method name="indexOfValue(Ljava/lang/Object;)I" />
 		<method name="keyAt(I)I" />
-		<method name="put(ILE;)V" />
+		<method name="put(ILjava/lang/Object;)V" />
 		<method name="remove(I)V" />
 		<method name="removeAt(I)V" since="11" />
-		<method name="setValueAt(ILE;)V" />
+		<method name="setValueAt(ILjava/lang/Object;)V" />
 		<method name="size()I" />
-		<method name="valueAt(I)LE;" />
+		<method name="valueAt(I)Ljava/lang/Object;" />
 	</class>
 	<class name="android/util/SparseBooleanArray" since="1">
 		<extends name="java/lang/Object" />
@@ -21799,10 +22196,10 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/util/Printer" />
 		<method name="&lt;init>(Ljava/lang/StringBuilder;)V" />
-		<method name="println(Ljava/lang/String;)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" />
@@ -21906,9 +22303,7 @@
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>(Landroid/os/Parcel;)V" />
 		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
-		<method name="describeContents()I" />
 		<method name="getSuperState()Landroid/os/Parcelable;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="EMPTY_STATE" />
 	</class>
@@ -21922,32 +22317,51 @@
 		<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="onCreateActionView()Landroid/view/View;" />
 		<method name="onPerformDefaultAction()Z" />
 		<method name="onPrepareSubMenu(Landroid/view/SubMenu;)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;" />
@@ -21957,6 +22371,7 @@
 		<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" />
@@ -21966,6 +22381,8 @@
 	</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="getHeight()I" />
 		<method name="getMetrics(Landroid/util/DisplayMetrics;)V" />
@@ -21981,7 +22398,7 @@
 	<class name="android/view/DragEvent" since="11">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getAction()I" />
 		<method name="getClipData()Landroid/content/ClipData;" />
 		<method name="getClipDescription()Landroid/content/ClipDescription;" />
@@ -21989,7 +22406,6 @@
 		<method name="getResult()Z" />
 		<method name="getX()F" />
 		<method name="getY()F" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACTION_DRAG_ENDED" />
 		<field name="ACTION_DRAG_ENTERED" />
 		<field name="ACTION_DRAG_EXITED" />
@@ -22000,6 +22416,7 @@
 	</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;" />
@@ -22018,11 +22435,13 @@
 		<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" />
@@ -22032,18 +22451,9 @@
 	</class>
 	<class name="android/view/GestureDetector$SimpleOnGestureListener" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="android/view/GestureDetector$OnGestureListener" />
 		<implements name="android/view/GestureDetector$OnDoubleTapListener" since="3" />
+		<implements name="android/view/GestureDetector$OnGestureListener" />
 		<method name="&lt;init>()V" />
-		<method name="onDoubleTap(Landroid/view/MotionEvent;)Z" since="3" />
-		<method name="onDoubleTapEvent(Landroid/view/MotionEvent;)Z" since="3" />
-		<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="onSingleTapConfirmed(Landroid/view/MotionEvent;)Z" since="3" />
-		<method name="onSingleTapUp(Landroid/view/MotionEvent;)Z" />
 	</class>
 	<class name="android/view/Gravity" since="1">
 		<extends name="java/lang/Object" />
@@ -22084,6 +22494,7 @@
 	</class>
 	<class name="android/view/HapticFeedbackConstants" since="3">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<field name="FLAG_IGNORE_GLOBAL_SETTING" />
 		<field name="FLAG_IGNORE_VIEW_SETTING" />
 		<field name="KEYBOARD_TAP" since="8" />
@@ -22100,7 +22511,8 @@
 	<class name="android/view/InputDevice" since="9">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<method name="&lt;init>()V" />
+		<method name="getDescriptor()Ljava/lang/String;" since="16" />
 		<method name="getDevice(I)Landroid/view/InputDevice;" />
 		<method name="getDeviceIds()[I" />
 		<method name="getId()I" />
@@ -22111,7 +22523,8 @@
 		<method name="getMotionRanges()Ljava/util/List;" since="12" />
 		<method name="getName()Ljava/lang/String;" />
 		<method name="getSources()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="getVibrator()Landroid/os/Vibrator;" since="16" />
+		<method name="isVirtual()Z" since="16" />
 		<field name="CREATOR" />
 		<field name="KEYBOARD_TYPE_ALPHABETIC" />
 		<field name="KEYBOARD_TYPE_NONE" />
@@ -22145,6 +22558,7 @@
 	</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" />
@@ -22156,21 +22570,26 @@
 	<class name="android/view/InputEvent" since="9">
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
-		<method name="describeContents()I" />
+		<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" />
 		<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" />
@@ -22189,6 +22608,7 @@
 		<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" />
@@ -22212,8 +22632,8 @@
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 	</class>
 	<class name="android/view/KeyEvent" since="1">
-		<extends name="java/lang/Object" />
 		<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" />
@@ -22228,7 +22648,6 @@
 		<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="describeContents()I" />
 		<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" />
@@ -22251,7 +22670,6 @@
 		<method name="getNumber()C" />
 		<method name="getRepeatCount()I" />
 		<method name="getScanCode()I" />
-		<method name="getSource()I" since="12" />
 		<method name="getUnicodeChar()I" />
 		<method name="getUnicodeChar(I)I" />
 		<method name="hasModifiers(I)Z" since="11" />
@@ -22279,7 +22697,6 @@
 		<method name="normalizeMetaState(I)I" since="11" />
 		<method name="setSource(I)V" since="12" />
 		<method name="startTracking()V" since="5" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACTION_DOWN" />
 		<field name="ACTION_MULTIPLE" />
 		<field name="ACTION_UP" />
@@ -22373,6 +22790,7 @@
 		<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" />
@@ -22401,12 +22819,15 @@
 		<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_LEFT_BRACKET" />
@@ -22429,6 +22850,7 @@
 		<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" />
@@ -22471,6 +22893,7 @@
 		<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" />
@@ -22503,7 +22926,9 @@
 		<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" />
@@ -22530,6 +22955,7 @@
 		<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" />
@@ -22567,16 +22993,20 @@
 		<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;" />
@@ -22617,6 +23047,7 @@
 		<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" />
@@ -22665,21 +23096,23 @@
 		<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="java/lang/Object" />
 		<extends name="android/view/InputEvent" since="9" />
+		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
 		<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="describeContents()I" />
 		<method name="findPointerIndex(I)I" since="5" />
 		<method name="getAction()I" />
 		<method name="getActionIndex()I" since="8" />
@@ -22728,7 +23161,6 @@
 		<method name="getRawY()F" />
 		<method name="getSize()F" />
 		<method name="getSize(I)F" since="5" />
-		<method name="getSource()I" since="12" />
 		<method name="getToolMajor()F" since="9" />
 		<method name="getToolMajor(I)F" since="9" />
 		<method name="getToolMinor()F" since="9" />
@@ -22758,7 +23190,6 @@
 		<method name="setLocation(FF)V" />
 		<method name="setSource(I)V" since="12" />
 		<method name="transform(Landroid/graphics/Matrix;)V" since="11" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ACTION_CANCEL" />
 		<field name="ACTION_DOWN" />
 		<field name="ACTION_HOVER_ENTER" since="14" />
@@ -22860,6 +23291,7 @@
 		<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" />
@@ -22884,9 +23316,7 @@
 		<method name="&lt;init>(Landroid/content/Context;I)V" since="3" />
 		<method name="disable()V" />
 		<method name="enable()V" />
-		<method name="onAccuracyChanged(II)V" />
 		<method name="onOrientationChanged(I)V" />
-		<method name="onSensorChanged(I[F)V" />
 		<field name="ORIENTATION_UNKNOWN" />
 	</class>
 	<class name="android/view/ScaleGestureDetector" since="8">
@@ -22907,6 +23337,7 @@
 		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
 	</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" />
@@ -22915,12 +23346,10 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/view/ScaleGestureDetector$OnScaleGestureListener" />
 		<method name="&lt;init>()V" />
-		<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/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" />
@@ -22929,6 +23358,7 @@
 		<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;" />
@@ -22943,8 +23373,8 @@
 	<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="describeContents()I" />
 		<method name="freeze()V" />
 		<method name="hide()V" />
 		<method name="isValid()Z" />
@@ -22964,7 +23394,6 @@
 		<method name="unfreeze()V" />
 		<method name="unlockCanvas(Landroid/graphics/Canvas;)V" />
 		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="FX_SURFACE_BLUR" />
 		<field name="FX_SURFACE_DIM" />
@@ -22992,6 +23421,7 @@
 		<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;" />
@@ -23016,11 +23446,13 @@
 		<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>
@@ -23039,7 +23471,6 @@
 		<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="draw(Landroid/graphics/Canvas;)V" />
 		<method name="getBitmap()Landroid/graphics/Bitmap;" />
 		<method name="getBitmap(II)Landroid/graphics/Bitmap;" />
 		<method name="getBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;" />
@@ -23049,13 +23480,14 @@
 		<method name="isAvailable()Z" />
 		<method name="lockCanvas()Landroid/graphics/Canvas;" />
 		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
-		<method name="onDraw(Landroid/graphics/Canvas;)V" />
 		<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" />
@@ -23072,6 +23504,7 @@
 	</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" />
@@ -23091,12 +23524,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="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" />
@@ -23145,6 +23580,7 @@
 		<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" />
@@ -23156,6 +23592,7 @@
 		<method name="fitsSystemWindows()Z" since="14" />
 		<method name="focusSearch(I)Landroid/view/View;" />
 		<method name="forceLayout()V" />
+		<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;" />
@@ -23164,6 +23601,7 @@
 		<method name="getBottom()I" />
 		<method name="getBottomFadingEdgeStrength()F" />
 		<method name="getBottomPaddingOffset()I" since="2" />
+		<method name="getCameraDistance()F" since="16" />
 		<method name="getContentDescription()Ljava/lang/CharSequence;" since="4" />
 		<method name="getContext()Landroid/content/Context;" />
 		<method name="getContextMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;" />
@@ -23176,6 +23614,7 @@
 		<method name="getDrawingRect(Landroid/graphics/Rect;)V" />
 		<method name="getDrawingTime()J" />
 		<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" />
@@ -23186,6 +23625,7 @@
 		<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="getLayerType()I" since="11" />
@@ -23202,6 +23642,8 @@
 		<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" />
@@ -23214,6 +23656,7 @@
 		<method name="getPaddingRight()I" />
 		<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;" />
@@ -23226,6 +23669,9 @@
 		<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" />
@@ -23249,6 +23695,7 @@
 		<method name="getVisibility()I" />
 		<method name="getWidth()I" />
 		<method name="getWindowAttachCount()I" />
+		<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" />
@@ -23257,6 +23704,8 @@
 		<method name="hasFocus()Z" />
 		<method name="hasFocusable()Z" />
 		<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" />
@@ -23264,7 +23713,6 @@
 		<method name="invalidate()V" />
 		<method name="invalidate(IIII)V" />
 		<method name="invalidate(Landroid/graphics/Rect;)V" />
-		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
 		<method name="isActivated()Z" since="11" />
 		<method name="isClickable()Z" />
 		<method name="isDirty()Z" since="11" />
@@ -23288,6 +23736,7 @@
 		<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" />
@@ -23322,18 +23771,15 @@
 		<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="onKeyDown(ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
-		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
 		<method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z" since="3" />
 		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" />
-		<method name="onKeyUp(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="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" />
@@ -23342,8 +23788,10 @@
 		<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" />
@@ -23355,10 +23803,15 @@
 		<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="requestFitSystemWindows()V" since="16" />
 		<method name="requestFocus()Z" />
 		<method name="requestFocus(I)Z" />
 		<method name="requestFocus(ILandroid/graphics/Rect;)Z" />
@@ -23370,15 +23823,13 @@
 		<method name="resolveSizeAndState(III)I" since="11" />
 		<method name="restoreHierarchyState(Landroid/util/SparseArray;)V" />
 		<method name="saveHierarchyState(Landroid/util/SparseArray;)V" />
-		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
 		<method name="scrollBy(II)V" />
 		<method name="scrollTo(II)V" />
-		<method name="sendAccessibilityEvent(I)V" since="4" />
-		<method name="sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V" since="4" />
 		<method name="setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V" since="14" />
 		<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" />
@@ -23397,10 +23848,12 @@
 		<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="setLayerType(ILandroid/graphics/Paint;)V" since="11" />
 		<method name="setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V" />
@@ -23437,6 +23890,9 @@
 		<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" />
@@ -23464,10 +23920,15 @@
 		<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="unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
 		<method name="verifyDrawable(Landroid/graphics/drawable/Drawable;)Z" />
 		<method name="willNotCacheDrawing()Z" />
 		<method name="willNotDraw()Z" />
+		<field name="ACCESSIBILITY_FOCUS_BACKWARD" since="16" />
+		<field name="ACCESSIBILITY_FOCUS_DOWN" since="16" />
+		<field name="ACCESSIBILITY_FOCUS_FORWARD" since="16" />
+		<field name="ACCESSIBILITY_FOCUS_LEFT" since="16" />
+		<field name="ACCESSIBILITY_FOCUS_RIGHT" since="16" />
+		<field name="ACCESSIBILITY_FOCUS_UP" since="16" />
 		<field name="ALPHA" since="14" />
 		<field name="DRAWING_CACHE_QUALITY_AUTO" />
 		<field name="DRAWING_CACHE_QUALITY_HIGH" />
@@ -23489,6 +23950,7 @@
 		<field name="FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
 		<field name="FOCUSED_STATE_SET" />
 		<field name="FOCUSED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="FOCUS_ACCESSIBILITY" since="16" />
 		<field name="FOCUS_BACKWARD" />
 		<field name="FOCUS_DOWN" />
 		<field name="FOCUS_FORWARD" />
@@ -23497,6 +23959,9 @@
 		<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_YES" since="16" />
 		<field name="INVISIBLE" />
 		<field name="KEEP_SCREEN_ON" />
 		<field name="LAYER_TYPE_HARDWARE" since="11" />
@@ -23530,6 +23995,8 @@
 		<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" />
@@ -23542,9 +24009,16 @@
 		<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_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_INHERIT" since="16" />
+		<field name="TEXT_ALIGNMENT_RESOLVED_DEFAULT" since="16" />
 		<field name="TRANSLATION_X" since="14" />
 		<field name="TRANSLATION_Y" since="14" />
 		<field name="VIEW_LOG_TAG" />
@@ -23554,12 +24028,15 @@
 		<field name="Y" since="14" />
 	</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>
@@ -23589,40 +24066,52 @@
 		<field name="UNSPECIFIED" />
 	</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/ViewConfiguration" since="1">
@@ -23679,14 +24168,26 @@
 	<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" />
@@ -23704,6 +24205,8 @@
 	<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" />
@@ -23729,17 +24232,13 @@
 		<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="addView(Landroid/view/View;Landroid/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="bringChildToFront(Landroid/view/View;)V" />
 		<method name="canAnimate()Z" />
 		<method name="checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z" />
-		<method name="childDrawableStateChanged(Landroid/view/View;)V" />
 		<method name="cleanupLayoutState(Landroid/view/View;)V" />
-		<method name="clearChildFocus(Landroid/view/View;)V" />
 		<method name="clearDisappearingChildren()V" />
 		<method name="debug(I)V" />
 		<method name="detachAllViewsFromParent()V" />
@@ -23747,13 +24246,9 @@
 		<method name="detachViewFromParent(Landroid/view/View;)V" />
 		<method name="detachViewsFromParent(II)V" />
 		<method name="dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V" />
-		<method name="dispatchSetActivated(Z)V" since="11" />
-		<method name="dispatchSetSelected(Z)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="focusSearch(Landroid/view/View;I)Landroid/view/View;" />
-		<method name="focusableViewAvailable(Landroid/view/View;)V" />
 		<method name="gatherTransparentRegion(Landroid/graphics/Region;)Z" />
 		<method name="generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;" />
 		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;" />
@@ -23763,7 +24258,6 @@
 		<method name="getChildDrawingOrder(II)I" />
 		<method name="getChildMeasureSpec(III)I" />
 		<method name="getChildStaticTransformation(Landroid/view/View;Landroid/view/animation/Transformation;)Z" />
-		<method name="getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
 		<method name="getDescendantFocusability()I" />
 		<method name="getFocusedChild()Landroid/view/View;" />
 		<method name="getLayoutAnimation()Landroid/view/animation/LayoutAnimationController;" />
@@ -23771,14 +24265,11 @@
 		<method name="getLayoutTransition()Landroid/animation/LayoutTransition;" since="11" />
 		<method name="getPersistentDrawingCache()I" />
 		<method name="indexOfChild(Landroid/view/View;)I" />
-		<method name="invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V" />
-		<method name="invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;" />
 		<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="layout(IIII)V" since="11" />
 		<method name="measureChild(Landroid/view/View;II)V" />
 		<method name="measureChildWithMargins(Landroid/view/View;IIII)V" />
 		<method name="measureChildren(II)V" />
@@ -23786,23 +24277,16 @@
 		<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="onLayout(ZIIII)V" />
 		<method name="onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z" />
 		<method name="onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
-		<method name="recomputeViewAttributes(Landroid/view/View;)V" />
 		<method name="removeAllViews()V" />
 		<method name="removeAllViewsInLayout()V" />
 		<method name="removeDetachedView(Landroid/view/View;Z)V" />
-		<method name="removeView(Landroid/view/View;)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="requestChildFocus(Landroid/view/View;Landroid/view/View;)V" />
 		<method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z" />
-		<method name="requestDisallowInterceptTouchEvent(Z)V" />
-		<method name="requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
-		<method name="requestTransparentRegion(Landroid/view/View;)V" />
 		<method name="resetResolvedLayoutDirection()V" since="14" />
 		<method name="resetResolvedTextDirection()V" since="14" />
 		<method name="scheduleLayoutAnimation()V" />
@@ -23823,11 +24307,8 @@
 		<method name="setPersistentDrawingCache(I)V" />
 		<method name="setStaticTransformationsEnabled(Z)V" since="3" />
 		<method name="shouldDelayChildPressedState()Z" since="14" />
-		<method name="showContextMenuForChild(Landroid/view/View;)Z" />
-		<method name="startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
 		<method name="startLayoutAnimation()V" />
 		<method name="startViewTransition(Landroid/view/View;)V" since="11" />
-		<method name="updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
 		<field name="CLIP_TO_PADDING_MASK" />
 		<field name="FLAG_USE_CHILD_DRAWING_ORDER" />
 		<field name="FOCUS_AFTER_DESCENDANTS" />
@@ -23864,15 +24345,18 @@
 		<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/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/ViewParent" since="1">
+		<extends name="java/lang/Object" />
 		<method name="bringChildToFront(Landroid/view/View;)V" />
 		<method name="childDrawableStateChanged(Landroid/view/View;)V" />
 		<method name="clearChildFocus(Landroid/view/View;)V" />
@@ -23881,6 +24365,7 @@
 		<method name="focusableViewAvailable(Landroid/view/View;)V" />
 		<method name="getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
 		<method name="getParent()Landroid/view/ViewParent;" />
+		<method name="getParentForAccessibility()Landroid/view/ViewParent;" since="16" />
 		<method name="invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V" />
 		<method name="invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;" />
 		<method name="isLayoutRequested()Z" />
@@ -23888,6 +24373,7 @@
 		<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" />
@@ -23896,6 +24382,7 @@
 	</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" />
@@ -23920,6 +24407,9 @@
 		<method name="translationXBy(F)Landroid/view/ViewPropertyAnimator;" />
 		<method name="translationY(F)Landroid/view/ViewPropertyAnimator;" />
 		<method name="translationYBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<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;" />
@@ -23932,44 +24422,61 @@
 		<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="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="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" />
 	</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/Window" since="1">
@@ -24075,6 +24582,7 @@
 		<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" />
@@ -24098,6 +24606,7 @@
 		<method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
 	</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" />
@@ -24119,11 +24628,9 @@
 		<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="describeContents()I" />
 		<method name="getTitle()Ljava/lang/CharSequence;" />
 		<method name="mayUseInputMethod(I)Z" since="3" />
 		<method name="setTitle(Ljava/lang/CharSequence;)V" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="ALPHA_CHANGED" />
 		<field name="ANIMATION_CHANGED" />
 		<field name="BRIGHTNESS_OVERRIDE_FULL" since="8" />
@@ -24233,12 +24740,13 @@
 		<field name="y" />
 	</class>
 	<class name="android/view/accessibility/AccessibilityEvent" since="4">
-		<extends name="java/lang/Object" />
 		<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="describeContents()I" />
 		<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;" />
@@ -24248,6 +24756,7 @@
 		<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" />
@@ -24263,6 +24772,7 @@
 		<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" />
@@ -24275,18 +24785,21 @@
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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_NOTIFICATION_STATE_CHANGED" />
 		<field name="TYPE_TOUCH_EXPLORATION_GESTURE_END" since="14" />
 		<field name="TYPE_TOUCH_EXPLORATION_GESTURE_START" since="14" />
+		<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" />
@@ -24296,15 +24809,18 @@
 		<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_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="getAccessibilityServiceList()Ljava/util/List;" />
 		<method name="getEnabledAccessibilityServiceList(I)Ljava/util/List;" since="14" />
@@ -24316,14 +24832,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/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="addChild(Landroid/view/View;)V" />
-		<method name="describeContents()I" />
+		<method name="addChild(Landroid/view/View;I)V" since="16" />
 		<method name="findAccessibilityNodeInfosByText(Ljava/lang/String;)Ljava/util/List;" />
+		<method name="findFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
+		<method name="focusSearch(I)Landroid/view/accessibility/AccessibilityNodeInfo;" since="16" />
 		<method name="getActions()I" />
 		<method name="getBoundsInParent(Landroid/graphics/Rect;)V" />
 		<method name="getBoundsInScreen(Landroid/graphics/Rect;)V" />
@@ -24331,10 +24852,12 @@
 		<method name="getChildCount()I" />
 		<method name="getClassName()Ljava/lang/CharSequence;" />
 		<method name="getContentDescription()Ljava/lang/CharSequence;" />
+		<method name="getMovementGranularities()I" since="16" />
 		<method name="getPackageName()Ljava/lang/CharSequence;" />
 		<method name="getParent()Landroid/view/accessibility/AccessibilityNodeInfo;" />
 		<method name="getText()Ljava/lang/CharSequence;" />
 		<method name="getWindowId()I" />
+		<method name="isAccessibilityFocused()Z" since="16" />
 		<method name="isCheckable()Z" />
 		<method name="isChecked()Z" />
 		<method name="isClickable()Z" />
@@ -24345,11 +24868,15 @@
 		<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="setAccessibilityFocused(Z)V" since="16" />
 		<method name="setBoundsInParent(Landroid/graphics/Rect;)V" />
 		<method name="setBoundsInScreen(Landroid/graphics/Rect;)V" />
 		<method name="setCheckable(Z)V" />
@@ -24361,21 +24888,54 @@
 		<method name="setFocusable(Z)V" />
 		<method name="setFocused(Z)V" />
 		<method name="setLongClickable(Z)V" />
+		<method name="setMovementGranularities(I)V" since="16" />
 		<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="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="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="setVisibleToUser(Z)V" since="16" />
+		<field name="ACTION_ACCESSIBILITY_FOCUS" since="16" />
+		<field name="ACTION_ARGUMENT_HTML_ELEMENT_STRING" since="16" />
+		<field name="ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT" since="16" />
+		<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_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_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="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/AccessibilityNodeProvider" since="16">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="accessibilityFocusSearch(II)Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="createAccessibilityNodeInfo(I)Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="findAccessibilityFocus(I)Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="findAccessibilityNodeInfosByText(Ljava/lang/String;I)Ljava/util/List;" />
+		<method name="performAction(IILandroid/os/Bundle;)Z" />
 	</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;" />
@@ -24420,6 +24980,7 @@
 		<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/animation/AccelerateDecelerateInterpolator" since="1">
@@ -24427,7 +24988,6 @@
 		<implements name="android/view/animation/Interpolator" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/AccelerateInterpolator" since="1">
 		<extends name="java/lang/Object" />
@@ -24435,7 +24995,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(F)V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/AlphaAnimation" since="1">
 		<extends name="android/view/animation/Animation" />
@@ -24449,6 +25008,7 @@
 		<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" />
@@ -24504,6 +25064,7 @@
 		<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" />
@@ -24519,6 +25080,7 @@
 		<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">
@@ -24538,7 +25100,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(F)V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/AnticipateOvershootInterpolator" since="4">
 		<extends name="java/lang/Object" />
@@ -24547,21 +25108,18 @@
 		<method name="&lt;init>(F)V" />
 		<method name="&lt;init>(FF)V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</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" />
-		<method name="getInterpolation(F)F" />
 	</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" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/DecelerateInterpolator" since="1">
 		<extends name="java/lang/Object" />
@@ -24569,7 +25127,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(F)V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/GridLayoutAnimationController" since="1">
 		<extends name="android/view/animation/LayoutAnimationController" />
@@ -24603,6 +25160,7 @@
 		<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>
@@ -24645,7 +25203,6 @@
 		<implements name="android/view/animation/Interpolator" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/OvershootInterpolator" since="4">
 		<extends name="java/lang/Object" />
@@ -24653,7 +25210,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(F)V" />
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
-		<method name="getInterpolation(F)F" />
 	</class>
 	<class name="android/view/animation/RotateAnimation" since="1">
 		<extends name="android/view/animation/Animation" />
@@ -24699,66 +25255,39 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/view/inputmethod/InputConnection" />
 		<method name="&lt;init>(Landroid/view/View;Z)V" />
-		<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="getComposingSpanEnd(Landroid/text/Spannable;)I" />
 		<method name="getComposingSpanStart(Landroid/text/Spannable;)I" />
-		<method name="getCursorCapsMode(I)I" />
 		<method name="getEditable()Landroid/text/Editable;" />
-		<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="removeComposingSpans(Landroid/text/Spannable;)V" />
-		<method name="reportFullscreenMode(Z)Z" />
-		<method name="sendKeyEvent(Landroid/view/KeyEvent;)Z" />
-		<method name="setComposingRegion(II)Z" since="9" />
 		<method name="setComposingSpans(Landroid/text/Spannable;)V" />
-		<method name="setComposingText(Ljava/lang/CharSequence;I)Z" />
-		<method name="setSelection(II)Z" />
 	</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="describeContents()I" />
 		<method name="getId()J" />
 		<method name="getLabel()Ljava/lang/CharSequence;" />
 		<method name="getPosition()I" />
 		<method name="getText()Ljava/lang/CharSequence;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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="describeContents()I" />
 		<method name="getNewText()Ljava/lang/CharSequence;" />
 		<method name="getOffset()I" />
 		<method name="getOldText()Ljava/lang/CharSequence;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/view/inputmethod/EditorInfo" since="3">
 		<extends name="java/lang/Object" />
-		<implements name="android/text/InputType" />
 		<implements name="android/os/Parcelable" />
+		<implements name="android/text/InputType" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="makeCompatible(I)V" since="11" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="IME_ACTION_DONE" />
 		<field name="IME_ACTION_GO" />
@@ -24768,6 +25297,7 @@
 		<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" />
@@ -24795,8 +25325,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="FLAG_SELECTING" />
 		<field name="FLAG_SINGLE_LINE" />
@@ -24812,8 +25340,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/os/Parcelable" />
 		<method name="&lt;init>()V" />
-		<method name="describeContents()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 		<field name="flags" />
 		<field name="hintMaxChars" />
@@ -24825,15 +25351,14 @@
 		<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="describeContents()I" />
 		<method name="getConnection()Landroid/view/inputmethod/InputConnection;" />
 		<method name="getConnectionToken()Landroid/os/IBinder;" />
 		<method name="getPid()I" />
 		<method name="getUid()I" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
@@ -24862,30 +25387,10 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/view/inputmethod/InputConnection" />
 		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Z)V" />
-		<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" />
 		<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" />
@@ -24903,6 +25408,7 @@
 		<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">
@@ -24910,7 +25416,6 @@
 		<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="describeContents()I" />
 		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
 		<method name="getComponent()Landroid/content/ComponentName;" />
 		<method name="getId()Ljava/lang/String;" />
@@ -24923,11 +25428,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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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;" />
@@ -24957,6 +25462,7 @@
 		<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" />
@@ -24973,6 +25479,7 @@
 		<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="dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
 		<method name="dispatchTrackballEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
@@ -24985,14 +25492,15 @@
 		<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="containsExtraValueKey(Ljava/lang/String;)Z" since="12" />
-		<method name="describeContents()I" />
 		<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" />
@@ -25002,12 +25510,23 @@
 		<method name="getNameResId()I" />
 		<method name="isAuxiliary()Z" since="14" />
 		<method name="overridesImplicitlyEnabledSubtype()Z" since="14" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</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="describeContents()I" />
+		<method name="&lt;init>()V" />
 		<method name="getComponent()Landroid/content/ComponentName;" />
 		<method name="getId()Ljava/lang/String;" />
 		<method name="getPackageName()Ljava/lang/String;" />
@@ -25017,12 +25536,14 @@
 		<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;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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" />
@@ -25030,50 +25551,53 @@
 		<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="describeContents()I" />
+		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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="describeContents()I" />
 		<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" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)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="describeContents()I" />
 		<method name="getCookie()I" />
 		<method name="getSequence()I" />
 		<method name="getText()Ljava/lang/String;" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<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">
@@ -25167,6 +25691,7 @@
 	</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;" />
@@ -25181,6 +25706,7 @@
 	</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" />
@@ -25194,6 +25720,7 @@
 		<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">
@@ -25207,20 +25734,24 @@
 		<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/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" />
@@ -25229,6 +25760,7 @@
 	</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;" />
@@ -25251,6 +25783,7 @@
 		<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">
@@ -25271,11 +25804,13 @@
 		<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>
@@ -25300,6 +25835,7 @@
 		<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>
@@ -25314,12 +25850,15 @@
 		<method name="urlInterceptDisabled()Z" />
 	</class>
 	<class name="android/webkit/ValueCallback" since="7">
-		<method name="onReceiveValue(LT;)V" />
+		<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/lang/Cloneable" />
 		<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;" />
@@ -25354,11 +25893,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" />
@@ -25367,6 +25909,7 @@
 	</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" />
@@ -25376,6 +25919,7 @@
 		<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">
@@ -25390,9 +25934,12 @@
 	</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" />
@@ -25434,6 +25981,8 @@
 		<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" />
@@ -25546,11 +26095,13 @@
 	</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">
@@ -25559,7 +26110,6 @@
 		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
 		<method name="onSyncInit()V" />
 		<method name="resetSync()V" />
-		<method name="run()V" />
 		<method name="startSync()V" />
 		<method name="stopSync()V" />
 		<method name="sync()V" />
@@ -25597,6 +26147,7 @@
 		<method name="enablePlatformNotifications()V" />
 		<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" />
@@ -25623,9 +26174,6 @@
 		<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="onChildViewAdded(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V" />
-		<method name="onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V" />
 		<method name="onPause()V" since="11" />
 		<method name="onResume()V" since="11" />
 		<method name="overlayHorizontalScrollbar()Z" />
@@ -25649,6 +26197,7 @@
 		<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" />
@@ -25666,8 +26215,14 @@
 		<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" />
@@ -25682,11 +26237,12 @@
 		<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>()V" />
+		<method name="&lt;init>(Landroid/webkit/WebView;)V" />
 		<method name="getWebView()Landroid/webkit/WebView;" />
 		<method name="setWebView(Landroid/webkit/WebView;)V" />
 	</class>
@@ -25726,6 +26282,7 @@
 	</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" />
@@ -25742,18 +26299,17 @@
 	</class>
 	<class name="android/widget/AbsListView" since="1">
 		<extends name="android/widget/AdapterView" />
-		<implements name="android/widget/Filter$FilterListener" />
 		<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="afterTextChanged(Landroid/text/Editable;)V" />
-		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
 		<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" />
@@ -25764,7 +26320,6 @@
 		<method name="getListPaddingLeft()I" />
 		<method name="getListPaddingRight()I" />
 		<method name="getListPaddingTop()I" />
-		<method name="getSelectedView()Landroid/view/View;" />
 		<method name="getSelector()Landroid/graphics/drawable/Drawable;" />
 		<method name="getTextFilter()Ljava/lang/CharSequence;" since="3" />
 		<method name="getTranscriptMode()I" />
@@ -25780,14 +26335,8 @@
 		<method name="isStackFromBottom()Z" />
 		<method name="isTextFilterEnabled()Z" />
 		<method name="layoutChildren()V" />
-		<method name="onFilterComplete(I)V" />
-		<method name="onGlobalLayout()V" />
 		<method name="onRemoteAdapterConnected()Z" since="11" />
 		<method name="onRemoteAdapterDisconnected()V" since="11" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
-		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
-		<method name="onTouchModeChanged(Z)V" />
 		<method name="pointToPosition(II)I" />
 		<method name="pointToRowId(II)J" />
 		<method name="reclaimViews(Ljava/util/List;)V" />
@@ -25818,7 +26367,6 @@
 		<method name="smoothScrollToPosition(II)V" since="8" />
 		<method name="smoothScrollToPositionFromTop(II)V" since="11" />
 		<method name="smoothScrollToPositionFromTop(III)V" since="11" />
-		<method name="verifyDrawable(Landroid/graphics/drawable/Drawable;)Z" />
 		<field name="CHOICE_MODE_MULTIPLE" since="11" />
 		<field name="CHOICE_MODE_MULTIPLE_MODAL" since="11" />
 		<field name="CHOICE_MODE_NONE" since="11" />
@@ -25835,10 +26383,12 @@
 		<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" />
@@ -25846,9 +26396,11 @@
 		<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">
@@ -25857,6 +26409,7 @@
 		<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="getKeyProgressIncrement()I" since="3" />
+		<method name="getThumb()Landroid/graphics/drawable/Drawable;" since="16" />
 		<method name="getThumbOffset()I" />
 		<method name="setKeyProgressIncrement(I)V" since="3" />
 		<method name="setThumb(Landroid/graphics/drawable/Drawable;)V" />
@@ -25868,12 +26421,8 @@
 		<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="getAdapter()Landroid/widget/SpinnerAdapter;" />
-		<method name="getSelectedView()Landroid/view/View;" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
 		<method name="pointToPosition(II)I" />
 		<method name="setAdapter(Landroid/widget/SpinnerAdapter;)V" />
-		<method name="setSelection(I)V" />
 		<method name="setSelection(IZ)V" />
 	</class>
 	<class name="android/widget/AbsoluteLayout" since="1">
@@ -25881,7 +26430,6 @@
 		<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="onLayout(ZIIII)V" />
 	</class>
 	<class name="android/widget/AbsoluteLayout$LayoutParams" since="1">
 		<extends name="android/view/ViewGroup$LayoutParams" />
@@ -25893,6 +26441,7 @@
 		<field name="y" />
 	</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" />
@@ -25911,7 +26460,7 @@
 		<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="getAdapter()LT;" />
+		<method name="getAdapter()Landroid/widget/Adapter;" />
 		<method name="getCount()I" />
 		<method name="getEmptyView()Landroid/view/View;" />
 		<method name="getFirstVisiblePosition()I" />
@@ -25926,9 +26475,8 @@
 		<method name="getSelectedItemId()J" />
 		<method name="getSelectedItemPosition()I" />
 		<method name="getSelectedView()Landroid/view/View;" />
-		<method name="onLayout(ZIIII)V" />
 		<method name="performItemClick(Landroid/view/View;IJ)Z" />
-		<method name="setAdapter(LT;)V" />
+		<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" />
@@ -25948,34 +26496,33 @@
 		<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="advance()V" />
 		<method name="deferNotifyDataSetChanged()V" since="14" />
 		<method name="fyiWillBeAdvancedByHostKThx()V" />
-		<method name="getAdapter()Landroid/widget/Adapter;" />
 		<method name="getCurrentView()Landroid/view/View;" />
 		<method name="getDisplayedChild()I" />
 		<method name="getInAnimation()Landroid/animation/ObjectAnimator;" />
 		<method name="getOutAnimation()Landroid/animation/ObjectAnimator;" />
-		<method name="getSelectedView()Landroid/view/View;" />
 		<method name="onRemoteAdapterConnected()Z" />
 		<method name="onRemoteAdapterDisconnected()V" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
-		<method name="setAdapter(Landroid/widget/Adapter;)V" />
 		<method name="setAnimateFirstView(Z)V" />
 		<method name="setDisplayedChild(I)V" />
 		<method name="setInAnimation(Landroid/animation/ObjectAnimator;)V" />
@@ -25983,7 +26530,6 @@
 		<method name="setOutAnimation(Landroid/animation/ObjectAnimator;)V" />
 		<method name="setOutAnimation(Landroid/content/Context;I)V" />
 		<method name="setRemoteViewsAdapter(Landroid/content/Intent;)V" />
-		<method name="setSelection(I)V" />
 		<method name="showNext()V" />
 		<method name="showPrevious()V" />
 	</class>
@@ -25991,6 +26537,7 @@
 		<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="getFlipInterval()I" since="16" />
 		<method name="isAutoStart()Z" />
 		<method name="isFlipping()Z" />
 		<method name="setAutoStart(Z)V" />
@@ -25998,14 +26545,16 @@
 		<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="getPositionForSection(I)I" />
-		<method name="getSectionForPosition(I)I" />
-		<method name="getSections()[Ljava/lang/Object;" />
 		<method name="setCursor(Landroid/database/Cursor;)V" />
 		<field name="mAlphabet" />
 		<field name="mColumnIndex" />
@@ -26023,23 +26572,18 @@
 		<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[LT;)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[LT;)V" />
-		<method name="add(LT;)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([LT;)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="getCount()I" />
-		<method name="getFilter()Landroid/widget/Filter;" />
-		<method name="getItem(I)LT;" />
-		<method name="getItemId(I)J" />
-		<method name="getPosition(LT;)I" />
-		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="insert(LT;I)V" />
-		<method name="remove(LT;)V" />
+		<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" />
@@ -26055,6 +26599,7 @@
 		<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" />
@@ -26071,12 +26616,11 @@
 		<method name="getValidator()Landroid/widget/AutoCompleteTextView$Validator;" />
 		<method name="isPerformingCompletion()Z" since="3" />
 		<method name="isPopupShowing()Z" />
-		<method name="onFilterComplete(I)V" />
 		<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(LT;)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" />
@@ -26093,6 +26637,7 @@
 		<method name="showDropDown()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>
@@ -26101,37 +26646,16 @@
 		<implements name="android/widget/ListAdapter" />
 		<implements name="android/widget/SpinnerAdapter" />
 		<method name="&lt;init>()V" />
-		<method name="areAllItemsEnabled()Z" />
-		<method name="getDropDownView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="getItemViewType(I)I" />
-		<method name="getViewTypeCount()I" />
-		<method name="hasStableIds()Z" />
-		<method name="isEmpty()Z" />
-		<method name="isEnabled(I)Z" />
 		<method name="notifyDataSetChanged()V" />
 		<method name="notifyDataSetInvalidated()V" />
-		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
-		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)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="areAllItemsEnabled()Z" />
-		<method name="getChildType(II)I" since="8" />
-		<method name="getChildTypeCount()I" since="8" />
-		<method name="getCombinedChildId(JJ)J" />
-		<method name="getCombinedGroupId(J)J" />
-		<method name="getGroupType(I)I" since="8" />
-		<method name="getGroupTypeCount()I" since="8" />
-		<method name="isEmpty()Z" />
 		<method name="notifyDataSetChanged()V" />
 		<method name="notifyDataSetInvalidated()V" />
-		<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/Button" since="1">
 		<extends name="android/widget/TextView" />
@@ -26145,19 +26669,39 @@
 		<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="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">
@@ -26167,6 +26711,7 @@
 		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
 	</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" />
@@ -26177,11 +26722,10 @@
 		<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="isChecked()Z" />
+		<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" />
-		<method name="setChecked(Z)V" />
-		<method name="toggle()V" />
 	</class>
 	<class name="android/widget/Chronometer" since="1">
 		<extends name="android/widget/TextView" />
@@ -26198,6 +26742,7 @@
 		<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">
@@ -26206,14 +26751,12 @@
 		<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="isChecked()Z" />
 		<method name="setButtonDrawable(I)V" />
 		<method name="setButtonDrawable(Landroid/graphics/drawable/Drawable;)V" />
-		<method name="setChecked(Z)V" />
 		<method name="setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V" />
-		<method name="toggle()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">
@@ -26225,13 +26768,8 @@
 		<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="getCount()I" />
 		<method name="getCursor()Landroid/database/Cursor;" />
-		<method name="getFilter()Landroid/widget/Filter;" />
 		<method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;" />
-		<method name="getItem(I)Ljava/lang/Object;" />
-		<method name="getItemId(I)J" />
-		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
 		<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;" />
@@ -26252,19 +26790,10 @@
 		<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="getChildId(II)J" />
-		<method name="getChildView(IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
-		<method name="getChildrenCount(I)I" />
 		<method name="getChildrenCursor(Landroid/database/Cursor;)Landroid/database/Cursor;" />
 		<method name="getCursor()Landroid/database/Cursor;" />
-		<method name="getFilter()Landroid/widget/Filter;" />
 		<method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;" />
 		<method name="getGroup(I)Landroid/database/Cursor;" />
-		<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="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" />
@@ -26294,6 +26823,7 @@
 		<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">
@@ -26325,6 +26855,7 @@
 		<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" />
@@ -26340,11 +26871,13 @@
 		<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="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" />
@@ -26410,15 +26943,19 @@
 		<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">
@@ -26431,6 +26968,7 @@
 		<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">
@@ -26440,9 +26978,11 @@
 		<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">
@@ -26450,10 +26990,12 @@
 		<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="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="onLayout(ZIIII)V" />
 		<method name="setForeground(Landroid/graphics/drawable/Drawable;)V" />
 		<method name="setForegroundGravity(I)V" />
 		<method name="setMeasureAllChildren(Z)V" />
@@ -26473,12 +27015,6 @@
 		<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="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" />
 		<method name="setAnimationDuration(I)V" />
 		<method name="setCallbackDuringFling(Z)V" />
 		<method name="setGravity(I)V" />
@@ -26496,6 +27032,9 @@
 		<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="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" />
@@ -26503,7 +27042,6 @@
 		<method name="getUseDefaultMargins()Z" />
 		<method name="isColumnOrderPreserved()Z" />
 		<method name="isRowOrderPreserved()Z" />
-		<method name="onLayout(ZIIII)V" />
 		<method name="setAlignmentMode(I)V" />
 		<method name="setColumnCount(I)V" />
 		<method name="setColumnOrderPreserved(Z)V" />
@@ -26520,15 +27058,19 @@
 		<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" />
@@ -26543,6 +27085,8 @@
 		<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" />
@@ -26550,14 +27094,19 @@
 		<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="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="setSelection(I)V" />
 		<method name="setStretchMode(I)V" />
 		<method name="setVerticalSpacing(I)V" />
 		<method name="smoothScrollByOffset(I)V" since="11" />
@@ -26572,26 +27121,13 @@
 		<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="areAllItemsEnabled()Z" />
-		<method name="getCount()I" />
-		<method name="getFilter()Landroid/widget/Filter;" />
 		<method name="getFootersCount()I" />
 		<method name="getHeadersCount()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="getWrappedAdapter()Landroid/widget/ListAdapter;" />
-		<method name="hasStableIds()Z" />
-		<method name="isEmpty()Z" />
-		<method name="isEnabled(I)Z" />
-		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
 		<method name="removeFooter(Landroid/view/View;)Z" />
 		<method name="removeHeader(Landroid/view/View;)Z" />
-		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
 	</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" />
@@ -26636,11 +27172,16 @@
 		<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="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="onCreateDrawableState(I)[I" />
 		<method name="setAdjustViewBounds(Z)V" />
 		<method name="setAlpha(I)V" />
 		<method name="setBaseline(I)V" since="11" />
@@ -26648,7 +27189,9 @@
 		<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" />
@@ -26678,14 +27221,17 @@
 		<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="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="onLayout(ZIIII)V" />
 		<method name="setBaselineAligned(Z)V" />
 		<method name="setBaselineAlignedChildIndex(I)V" />
 		<method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="11" />
@@ -26716,6 +27262,7 @@
 		<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" />
@@ -26818,7 +27365,6 @@
 		<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="setSelection(I)V" />
 		<method name="setSelectionAfterHeaderView()V" />
 		<method name="setSelectionFromTop(II)V" />
 		<method name="smoothScrollByOffset(I)V" since="11" />
@@ -26828,7 +27374,7 @@
 	</class>
 	<class name="android/widget/ListView$FixedViewInfo" since="1">
 		<extends name="java/lang/Object" />
-		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/widget/ListView;)V" />
 		<field name="data" />
 		<field name="isSelectable" />
 		<field name="view" />
@@ -26840,7 +27386,6 @@
 		<method name="&lt;init>(Landroid/content/Context;Z)V" />
 		<method name="hide()V" />
 		<method name="isShowing()Z" />
-		<method name="onFinishInflate()V" />
 		<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" />
@@ -26848,6 +27393,7 @@
 		<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" />
@@ -26871,11 +27417,9 @@
 		<extends name="java/lang/Object" />
 		<implements name="android/widget/MultiAutoCompleteTextView$Tokenizer" />
 		<method name="&lt;init>()V" />
-		<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/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;" />
@@ -26901,15 +27445,18 @@
 		<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">
@@ -26951,9 +27498,11 @@
 		<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">
@@ -27014,6 +27563,7 @@
 		<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">
@@ -27030,8 +27580,6 @@
 		<method name="incrementProgressBy(I)V" />
 		<method name="incrementSecondaryProgressBy(I)V" />
 		<method name="isIndeterminate()Z" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" since="3" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" since="3" />
 		<method name="setIndeterminate(Z)V" />
 		<method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V" />
 		<method name="setInterpolator(Landroid/content/Context;I)V" />
@@ -27050,7 +27598,6 @@
 		<method name="assignContactFromEmail(Ljava/lang/String;Z)V" />
 		<method name="assignContactFromPhone(Ljava/lang/String;Z)V" />
 		<method name="assignContactUri(Landroid/net/Uri;)V" />
-		<method name="onClick(Landroid/view/View;)V" />
 		<method name="setExcludeMimes([Ljava/lang/String;)V" />
 		<method name="setImageToDefault()V" since="11" />
 		<method name="setMode(I)V" />
@@ -27068,6 +27615,7 @@
 		<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>
@@ -27080,6 +27628,7 @@
 		<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">
@@ -27099,6 +27648,7 @@
 		<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">
@@ -27106,7 +27656,8 @@
 		<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="onLayout(ZIIII)V" />
+		<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" />
@@ -27143,17 +27694,16 @@
 	</class>
 	<class name="android/widget/RemoteViews" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="android/view/LayoutInflater$Filter" />
 		<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="describeContents()I" />
 		<method name="getLayoutId()I" />
 		<method name="getPackage()Ljava/lang/String;" />
-		<method name="onLoadClass(Ljava/lang/Class;)Z" />
 		<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" />
@@ -27185,12 +27735,12 @@
 		<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="setTextViewText(ILjava/lang/CharSequence;)V" />
 		<method name="setUri(ILjava/lang/String;Landroid/net/Uri;)V" since="3" />
 		<method name="setViewVisibility(II)V" />
 		<method name="showNext(I)V" since="11" />
 		<method name="showPrevious(I)V" since="11" />
-		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
 		<field name="CREATOR" />
 	</class>
 	<class name="android/widget/RemoteViews$ActionException" since="1">
@@ -27205,10 +27755,10 @@
 	<class name="android/widget/RemoteViewsService" since="11">
 		<extends name="android/app/Service" />
 		<method name="&lt;init>()V" />
-		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
 		<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;" />
@@ -27224,7 +27774,6 @@
 		<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="newView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;" />
 		<method name="setDropDownViewResource(I)V" />
 		<method name="setViewResource(I)V" since="3" />
 	</class>
@@ -27233,8 +27782,6 @@
 		<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" />
-		<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;" />
 	</class>
 	<class name="android/widget/ScrollView" since="1">
 		<extends name="android/widget/FrameLayout" />
@@ -27286,14 +27833,16 @@
 		<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="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="onActionViewCollapsed()V" since="14" />
-		<method name="onActionViewExpanded()V" since="14" />
 		<method name="setIconified(Z)V" />
 		<method name="setIconifiedByDefault(Z)V" />
 		<method name="setImeOptions(I)V" since="14" />
@@ -27312,17 +27861,21 @@
 		<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;" />
@@ -27335,6 +27888,7 @@
 		<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" />
@@ -27342,24 +27896,19 @@
 	<class name="android/widget/ShareActionProvider" since="14">
 		<extends name="android/view/ActionProvider" />
 		<method name="&lt;init>(Landroid/content/Context;)V" />
-		<method name="onCreateActionView()Landroid/view/View;" />
 		<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="getCount()I" />
-		<method name="getFilter()Landroid/widget/Filter;" />
-		<method name="getItem(I)Ljava/lang/Object;" />
-		<method name="getItemId(I)J" />
-		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
 		<method name="getViewBinder()Landroid/widget/SimpleAdapter$ViewBinder;" />
 		<method name="setDropDownViewResource(I)V" />
 		<method name="setViewBinder(Landroid/widget/SimpleAdapter$ViewBinder;)V" />
@@ -27368,13 +27917,13 @@
 		<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="bindView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;)V" />
 		<method name="changeCursorAndColumns(Landroid/database/Cursor;[Ljava/lang/String;[I)V" since="3" />
 		<method name="getCursorToStringConverter()Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;" />
 		<method name="getStringConversionColumn()I" />
@@ -27386,9 +27935,11 @@
 		<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">
@@ -27396,14 +27947,13 @@
 		<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="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="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">
@@ -27411,16 +27961,6 @@
 		<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="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="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="newChildView(ZLandroid/view/ViewGroup;)Landroid/view/View;" />
 		<method name="newGroupView(ZLandroid/view/ViewGroup;)Landroid/view/View;" />
 	</class>
@@ -27437,7 +27977,6 @@
 		<method name="isMoving()Z" />
 		<method name="isOpened()Z" />
 		<method name="lock()V" />
-		<method name="onLayout(ZIIII)V" />
 		<method name="open()V" />
 		<method name="setOnDrawerCloseListener(Landroid/widget/SlidingDrawer$OnDrawerCloseListener;)V" />
 		<method name="setOnDrawerOpenListener(Landroid/widget/SlidingDrawer$OnDrawerOpenListener;)V" />
@@ -27448,12 +27987,15 @@
 		<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>
@@ -27471,15 +28013,25 @@
 		<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="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="onClick(Landroid/content/DialogInterface;I)V" />
+		<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>
@@ -27494,14 +28046,25 @@
 		<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="getSwitchMinWidth()I" since="16" />
+		<method name="getSwitchPadding()I" since="16" />
 		<method name="getTextOff()Ljava/lang/CharSequence;" />
 		<method name="getTextOn()Ljava/lang/CharSequence;" />
-		<method name="onMeasure(II)V" />
+		<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="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" />
@@ -27517,7 +28080,6 @@
 		<method name="getTabContentView()Landroid/widget/FrameLayout;" />
 		<method name="getTabWidget()Landroid/widget/TabWidget;" />
 		<method name="newTabSpec(Ljava/lang/String;)Landroid/widget/TabHost$TabSpec;" />
-		<method name="onTouchModeChanged(Z)V" />
 		<method name="setCurrentTab(I)V" />
 		<method name="setCurrentTabByTag(Ljava/lang/String;)V" />
 		<method name="setOnTabChangedListener(Landroid/widget/TabHost$OnTabChangeListener;)V" />
@@ -27525,13 +28087,16 @@
 		<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;" />
@@ -27546,12 +28111,10 @@
 		<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="dispatchDraw(Landroid/graphics/Canvas;)V" />
 		<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="onFocusChange(Landroid/view/View;Z)V" />
 		<method name="setCurrentTab(I)V" />
 		<method name="setDividerDrawable(I)V" since="4" />
 		<method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="4" />
@@ -27565,6 +28128,7 @@
 		<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" />
@@ -27589,6 +28153,7 @@
 		<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>
@@ -27647,11 +28212,13 @@
 		<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;" />
@@ -27659,8 +28226,19 @@
 		<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;" />
@@ -27668,6 +28246,10 @@
 		<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;" />
@@ -27682,6 +28264,7 @@
 		<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" />
@@ -27692,10 +28275,7 @@
 		<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="onPreDraw()Z" />
 		<method name="onPrivateIMECommand(Ljava/lang/String;Landroid/os/Bundle;)Z" since="3" />
-		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
-		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
 		<method name="onSelectionChanged(II)V" since="3" />
 		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
 		<method name="onTextContextMenuItem(I)Z" since="3" />
@@ -27751,6 +28331,7 @@
 		<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" />
@@ -27788,10 +28369,12 @@
 		<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">
@@ -27808,6 +28391,7 @@
 		<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">
@@ -27857,24 +28441,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="canPause()Z" since="5" />
-		<method name="canSeekBackward()Z" since="5" />
-		<method name="canSeekForward()Z" since="5" />
-		<method name="getBufferPercentage()I" />
-		<method name="getCurrentPosition()I" />
-		<method name="getDuration()I" />
-		<method name="isPlaying()Z" />
-		<method name="pause()V" />
 		<method name="resolveAdjustedSize(II)I" />
 		<method name="resume()V" since="8" />
-		<method name="seekTo(I)V" />
 		<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="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V" />
 		<method name="setVideoPath(Ljava/lang/String;)V" />
 		<method name="setVideoURI(Landroid/net/Uri;)V" />
-		<method name="start()V" />
 		<method name="stopPlayback()V" />
 		<method name="suspend()V" since="8" />
 	</class>
@@ -27915,9 +28489,11 @@
 		<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>
@@ -27927,7 +28503,6 @@
 		<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="onLongClick(Landroid/view/View;)Z" />
 		<method name="setZoomSpeed(J)V" />
 	</class>
 	<class name="android/widget/ZoomButtonsController" since="4">
@@ -27938,7 +28513,6 @@
 		<method name="getZoomControls()Landroid/view/View;" />
 		<method name="isAutoDismissed()Z" />
 		<method name="isVisible()Z" />
-		<method name="onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
 		<method name="setAutoDismissed(Z)V" />
 		<method name="setFocusable(Z)V" />
 		<method name="setOnZoomListener(Landroid/widget/ZoomButtonsController$OnZoomListener;)V" />
@@ -27948,6 +28522,7 @@
 		<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>
@@ -27964,28 +28539,219 @@
 		<method name="show()V" />
 	</class>
 	<class name="com/android/internal/util/Predicate" since="1">
-		<method name="apply(LT;)Z" />
+		<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" />
@@ -28297,11 +29063,10 @@
 	<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" />
-		<method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;" />
 	</class>
 	<class name="dalvik/system/DexClassLoader" since="3">
-		<extends name="java/lang/ClassLoader" />
 		<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">
@@ -28316,11 +29081,10 @@
 		<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="java/lang/ClassLoader" />
 		<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" />
-		<method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;" since="9" />
 	</class>
 	<class name="dalvik/system/PotentialDeadlockError" since="1">
 		<extends name="java/lang/VirtualMachineError" />
@@ -28346,6 +29110,7 @@
 	</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" />
@@ -28396,6 +29161,7 @@
 	</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" />
@@ -28415,6 +29181,7 @@
 	</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" />
@@ -28428,6 +29195,7 @@
 	<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" />
@@ -28534,6 +29302,7 @@
 		<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>
@@ -28542,7 +29311,6 @@
 		<implements name="java/beans/PropertyChangeListener" />
 		<method name="&lt;init>(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
 		<method name="getPropertyName()Ljava/lang/String;" />
-		<method name="propertyChange(Ljava/beans/PropertyChangeEvent;)V" />
 	</class>
 	<class name="java/beans/PropertyChangeSupport" since="3">
 		<extends name="java/lang/Object" />
@@ -28584,24 +29352,18 @@
 		<extends name="java/io/Reader" />
 		<method name="&lt;init>(Ljava/io/Reader;)V" />
 		<method name="&lt;init>(Ljava/io/Reader;I)V" />
-		<method name="close()V" />
-		<method name="read([CII)I" />
 		<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="close()V" />
-		<method name="flush()V" />
 		<method name="newLine()V" />
-		<method name="write([CII)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" />
-		<method name="read()I" />
 		<field name="buf" />
 		<field name="count" />
 		<field name="mark" />
@@ -28616,7 +29378,6 @@
 		<method name="toByteArray()[B" />
 		<method name="toString(I)Ljava/lang/String;" />
 		<method name="toString(Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="write(I)V" />
 		<method name="writeTo(Ljava/io/OutputStream;)V" />
 		<field name="buf" />
 		<field name="count" />
@@ -28625,8 +29386,6 @@
 		<extends name="java/io/Reader" />
 		<method name="&lt;init>([C)V" />
 		<method name="&lt;init>([CII)V" />
-		<method name="close()V" />
-		<method name="read([CII)I" />
 		<field name="buf" />
 		<field name="count" />
 		<field name="markedPos" />
@@ -28636,12 +29395,12 @@
 		<extends name="java/io/Writer" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
-		<method name="close()V" />
-		<method name="flush()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="write([CII)V" />
 		<method name="writeTo(Ljava/io/Writer;)V" />
 		<field name="buf" />
 		<field name="count" />
@@ -28652,12 +29411,13 @@
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 	</class>
 	<class name="java/io/Closeable" since="1">
+		<extends name="java/lang/Object" />
 		<method name="close()V" />
 	</class>
 	<class name="java/io/Console" since="9">
 		<extends name="java/lang/Object" />
 		<implements name="java/io/Flushable" />
-		<method name="flush()V" />
+		<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;" />
@@ -28668,6 +29428,7 @@
 		<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" />
@@ -28688,26 +29449,10 @@
 		<extends name="java/io/FilterInputStream" />
 		<implements name="java/io/DataInput" />
 		<method name="&lt;init>(Ljava/io/InputStream;)V" />
-		<method name="read([B)I" />
-		<method name="read([BII)I" />
-		<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="readUTF(Ljava/io/DataInput;)Ljava/lang/String;" />
-		<method name="readUnsignedByte()I" />
-		<method name="readUnsignedShort()I" />
-		<method name="skipBytes(I)I" />
 	</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" />
@@ -28728,17 +29473,6 @@
 		<implements name="java/io/DataOutput" />
 		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
 		<method name="size()I" />
-		<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" />
 		<field name="written" />
 	</class>
 	<class name="java/io/EOFException" since="1">
@@ -28747,14 +29481,15 @@
 		<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/lang/Comparable" />
 		<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" />
@@ -28820,6 +29555,7 @@
 		<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">
@@ -28830,7 +29566,6 @@
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
 		<method name="getFD()Ljava/io/FileDescriptor;" />
-		<method name="read()I" />
 	</class>
 	<class name="java/io/FileNotFoundException" since="1">
 		<extends name="java/io/IOException" />
@@ -28847,16 +29582,11 @@
 		<method name="&lt;init>(Ljava/lang/String;Z)V" />
 		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
 		<method name="getFD()Ljava/io/FileDescriptor;" />
-		<method name="write(I)V" />
 	</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" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="getActions()Ljava/lang/String;" />
-		<method name="hashCode()I" />
-		<method name="implies(Ljava/security/Permission;)Z" />
 	</class>
 	<class name="java/io/FileReader" since="1">
 		<extends name="java/io/InputStreamReader" />
@@ -28873,36 +29603,31 @@
 		<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" />
-		<method name="read()I" />
 		<field name="in" />
 	</class>
 	<class name="java/io/FilterOutputStream" since="1">
 		<extends name="java/io/OutputStream" />
 		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
-		<method name="write(I)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" />
-		<method name="close()V" />
-		<method name="read([CII)I" />
 		<field name="in" />
 	</class>
 	<class name="java/io/FilterWriter" since="1">
 		<extends name="java/io/Writer" />
 		<method name="&lt;init>(Ljava/io/Writer;)V" />
-		<method name="close()V" />
-		<method name="flush()V" />
-		<method name="write([CII)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">
@@ -28921,7 +29646,6 @@
 		<implements name="java/io/Closeable" />
 		<method name="&lt;init>()V" />
 		<method name="available()I" />
-		<method name="close()V" />
 		<method name="mark(I)V" />
 		<method name="markSupported()Z" />
 		<method name="read()I" />
@@ -28936,9 +29660,7 @@
 		<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="close()V" />
 		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="read([CII)I" />
 	</class>
 	<class name="java/io/InterruptedIOException" since="1">
 		<extends name="java/io/IOException" />
@@ -28980,6 +29702,7 @@
 		<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" />
 		<method name="available()I" />
 		<method name="close()V" />
@@ -28997,32 +29720,15 @@
 		<method name="&lt;init>(Ljava/io/InputStream;)V" />
 		<method name="defaultReadObject()V" />
 		<method name="enableResolveObject(Z)Z" />
-		<method name="read()I" />
-		<method name="readBoolean()Z" />
-		<method name="readByte()B" />
-		<method name="readChar()C" />
 		<method name="readClassDescriptor()Ljava/io/ObjectStreamClass;" />
-		<method name="readDouble()D" />
 		<method name="readFields()Ljava/io/ObjectInputStream$GetField;" />
-		<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="readObject()Ljava/lang/Object;" />
 		<method name="readObjectOverride()Ljava/lang/Object;" />
-		<method name="readShort()S" />
 		<method name="readStreamHeader()V" />
-		<method name="readUTF()Ljava/lang/String;" />
 		<method name="readUnshared()Ljava/lang/Object;" />
-		<method name="readUnsignedByte()I" />
-		<method name="readUnsignedShort()I" />
 		<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;" />
-		<method name="skipBytes(I)I" />
 	</class>
 	<class name="java/io/ObjectInputStream$GetField" since="1">
 		<extends name="java/lang/Object" />
@@ -29040,15 +29746,14 @@
 		<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" />
 		<method name="close()V" />
 		<method name="flush()V" />
-		<method name="write(I)V" />
-		<method name="write([B)V" />
-		<method name="write([BII)V" />
 		<method name="writeObject(Ljava/lang/Object;)V" />
 	</class>
 	<class name="java/io/ObjectOutputStream" since="1">
@@ -29066,23 +29771,10 @@
 		<method name="replaceObject(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="reset()V" />
 		<method name="useProtocolVersion(I)V" />
-		<method name="write(I)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="writeClassDescriptor(Ljava/io/ObjectStreamClass;)V" />
-		<method name="writeDouble(D)V" />
 		<method name="writeFields()V" />
-		<method name="writeFloat(F)V" />
-		<method name="writeInt(I)V" />
-		<method name="writeLong(J)V" />
-		<method name="writeObject(Ljava/lang/Object;)V" />
 		<method name="writeObjectOverride(Ljava/lang/Object;)V" />
-		<method name="writeShort(I)V" />
 		<method name="writeStreamHeader()V" />
-		<method name="writeUTF(Ljava/lang/String;)V" />
 		<method name="writeUnshared(Ljava/lang/Object;)V" />
 	</class>
 	<class name="java/io/ObjectOutputStream$PutField" since="1">
@@ -29102,6 +29794,7 @@
 	<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;" />
@@ -29112,6 +29805,7 @@
 		<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" />
@@ -29152,7 +29846,6 @@
 		<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="compareTo(Ljava/lang/Object;)I" />
 		<method name="getName()Ljava/lang/String;" />
 		<method name="getOffset()I" />
 		<method name="getType()Ljava/lang/Class;" />
@@ -29164,6 +29857,7 @@
 	</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>
@@ -29172,8 +29866,6 @@
 		<implements name="java/io/Closeable" />
 		<implements name="java/io/Flushable" />
 		<method name="&lt;init>()V" />
-		<method name="close()V" />
-		<method name="flush()V" />
 		<method name="write(I)V" />
 		<method name="write([B)V" />
 		<method name="write([BII)V" />
@@ -29184,10 +29876,7 @@
 		<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="close()V" />
-		<method name="flush()V" />
 		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="write([CII)V" />
 	</class>
 	<class name="java/io/PipedInputStream" since="1">
 		<extends name="java/io/InputStream" />
@@ -29196,7 +29885,6 @@
 		<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="read()I" />
 		<method name="receive(I)V" />
 		<field name="PIPE_SIZE" />
 		<field name="buffer" />
@@ -29208,7 +29896,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/io/PipedInputStream;)V" />
 		<method name="connect(Ljava/io/PipedInputStream;)V" />
-		<method name="write(I)V" />
 	</class>
 	<class name="java/io/PipedReader" since="1">
 		<extends name="java/io/Reader" />
@@ -29216,23 +29903,18 @@
 		<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="close()V" />
 		<method name="connect(Ljava/io/PipedWriter;)V" />
-		<method name="read([CII)I" />
 	</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="close()V" />
 		<method name="connect(Ljava/io/PipedReader;)V" />
-		<method name="flush()V" />
-		<method name="write([CII)V" />
 	</class>
 	<class name="java/io/PrintStream" since="1">
 		<extends name="java/io/FilterOutputStream" />
-		<implements name="java/lang/Appendable" />
 		<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" />
@@ -29280,10 +29962,11 @@
 		<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="close()V" />
-		<method name="flush()V" />
 		<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" />
@@ -29308,7 +29991,6 @@
 		<method name="println(Z)V" />
 		<method name="println([C)V" />
 		<method name="setError()V" />
-		<method name="write([CII)V" />
 		<field name="out" />
 	</class>
 	<class name="java/io/PushbackInputStream" since="1">
@@ -29336,7 +30018,6 @@
 		<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="close()V" />
 		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
 		<method name="getFD()Ljava/io/FileDescriptor;" />
 		<method name="getFilePointer()J" />
@@ -29344,37 +30025,8 @@
 		<method name="read()I" />
 		<method name="read([B)I" />
 		<method name="read([BII)I" />
-		<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="seek(J)V" />
 		<method name="setLength(J)V" />
-		<method name="skipBytes(I)I" />
-		<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/Reader" since="1">
 		<extends name="java/lang/Object" />
@@ -29382,11 +30034,9 @@
 		<implements name="java/lang/Readable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/Object;)V" />
-		<method name="close()V" />
 		<method name="mark(I)V" />
 		<method name="markSupported()Z" />
 		<method name="read()I" />
-		<method name="read(Ljava/nio/CharBuffer;)I" />
 		<method name="read([C)I" />
 		<method name="read([CII)I" />
 		<method name="ready()Z" />
@@ -29398,9 +30048,9 @@
 		<extends name="java/io/InputStream" />
 		<method name="&lt;init>(Ljava/io/InputStream;Ljava/io/InputStream;)V" />
 		<method name="&lt;init>(Ljava/util/Enumeration;)V" />
-		<method name="read()I" />
 	</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" />
@@ -29442,7 +30092,6 @@
 	<class name="java/io/StringBufferInputStream" since="1">
 		<extends name="java/io/InputStream" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="read()I" />
 		<field name="buffer" />
 		<field name="count" />
 		<field name="pos" />
@@ -29450,17 +30099,15 @@
 	<class name="java/io/StringReader" since="1">
 		<extends name="java/io/Reader" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="close()V" />
-		<method name="read([CII)I" />
 	</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="close()V" />
-		<method name="flush()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;" />
-		<method name="write([CII)V" />
 	</class>
 	<class name="java/io/SyncFailedException" since="1">
 		<extends name="java/io/IOException" />
@@ -29483,16 +30130,14 @@
 	</class>
 	<class name="java/io/Writer" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Appendable" />
 		<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="close()V" />
-		<method name="flush()V" />
 		<method name="write(I)V" />
 		<method name="write(Ljava/lang/String;)V" />
 		<method name="write(Ljava/lang/String;II)V" />
@@ -29507,6 +30152,7 @@
 	</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" />
@@ -29528,6 +30174,7 @@
 		<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;" />
@@ -29561,8 +30208,8 @@
 	</class>
 	<class name="java/lang/Boolean" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<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" />
@@ -29583,10 +30230,6 @@
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="compareTo(Ljava/lang/Byte;)I" />
 		<method name="decode(Ljava/lang/String;)Ljava/lang/Byte;" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
-		<method name="intValue()I" />
-		<method name="longValue()J" />
 		<method name="parseByte(Ljava/lang/String;)B" />
 		<method name="parseByte(Ljava/lang/String;I)B" />
 		<method name="toString(B)Ljava/lang/String;" />
@@ -29599,15 +30242,15 @@
 		<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;" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="java/lang/Character" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<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" />
@@ -29752,12 +30395,10 @@
 	<class name="java/lang/Character$Subset" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="hashCode()I" />
-		<method name="toString()Ljava/lang/String;" />
 	</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;" />
@@ -29890,24 +30531,22 @@
 	</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/io/Serializable" />
 		<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;)LT;" />
+		<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="getAnnotation(Ljava/lang/Class;)LA;" />
-		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
 		<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="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
 		<method name="getDeclaredClasses()[Ljava/lang/Class;" />
 		<method name="getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
 		<method name="getDeclaredConstructors()[Ljava/lang/reflect/Constructor;" />
@@ -29919,7 +30558,7 @@
 		<method name="getEnclosingClass()Ljava/lang/Class;" />
 		<method name="getEnclosingConstructor()Ljava/lang/reflect/Constructor;" />
 		<method name="getEnclosingMethod()Ljava/lang/reflect/Method;" />
-		<method name="getEnumConstants()[LT;" />
+		<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;" />
@@ -29936,9 +30575,7 @@
 		<method name="getSigners()[Ljava/lang/Object;" />
 		<method name="getSimpleName()Ljava/lang/String;" />
 		<method name="getSuperclass()Ljava/lang/Class;" />
-		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
 		<method name="isAnnotation()Z" />
-		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
 		<method name="isAnonymousClass()Z" />
 		<method name="isArray()Z" />
 		<method name="isAssignableFrom(Ljava/lang/Class;)Z" />
@@ -29949,7 +30586,7 @@
 		<method name="isMemberClass()Z" />
 		<method name="isPrimitive()Z" />
 		<method name="isSynthetic()Z" />
-		<method name="newInstance()LT;" />
+		<method name="newInstance()Ljava/lang/Object;" />
 	</class>
 	<class name="java/lang/ClassCastException" since="1">
 		<extends name="java/lang/RuntimeException" />
@@ -30013,12 +30650,15 @@
 		<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">
-		<method name="compareTo(LT;)I" />
+		<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" />
@@ -30038,15 +30678,11 @@
 		<method name="compareTo(Ljava/lang/Double;)I" />
 		<method name="doubleToLongBits(D)J" />
 		<method name="doubleToRawLongBits(D)J" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
-		<method name="intValue()I" />
 		<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="longValue()J" />
 		<method name="parseDouble(Ljava/lang/String;)D" />
 		<method name="toHexString(D)Ljava/lang/String;" />
 		<method name="toString(D)Ljava/lang/String;" />
@@ -30065,18 +30701,14 @@
 	</class>
 	<class name="java/lang/Enum" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/lang/Comparable" />
 		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="compareTo(LE;)I" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="finalize()V" since="9" />
+		<method name="compareTo(Ljava/lang/Enum;)I" />
 		<method name="getDeclaringClass()Ljava/lang/Class;" />
-		<method name="hashCode()I" />
 		<method name="name()Ljava/lang/String;" />
 		<method name="ordinal()I" />
-		<method name="valueOf(Ljava/lang/Class;Ljava/lang/String;)LT;" />
+		<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" />
@@ -30113,17 +30745,13 @@
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="compare(FF)I" />
 		<method name="compareTo(Ljava/lang/Float;)I" />
-		<method name="doubleValue()D" />
 		<method name="floatToIntBits(F)I" />
 		<method name="floatToRawIntBits(F)I" />
-		<method name="floatValue()F" />
 		<method name="intBitsToFloat(I)F" />
-		<method name="intValue()I" />
 		<method name="isInfinite()Z" />
 		<method name="isInfinite(F)Z" />
 		<method name="isNaN()Z" />
 		<method name="isNaN(F)Z" />
-		<method name="longValue()J" />
 		<method name="parseFloat(Ljava/lang/String;)F" />
 		<method name="toHexString(F)Ljava/lang/String;" />
 		<method name="toString(F)Ljava/lang/String;" />
@@ -30187,7 +30815,7 @@
 	<class name="java/lang/InheritableThreadLocal" since="1">
 		<extends name="java/lang/ThreadLocal" />
 		<method name="&lt;init>()V" />
-		<method name="childValue(LT;)LT;" />
+		<method name="childValue(Ljava/lang/Object;)Ljava/lang/Object;" />
 	</class>
 	<class name="java/lang/InstantiationError" since="1">
 		<extends name="java/lang/IncompatibleClassChangeError" />
@@ -30207,14 +30835,10 @@
 		<method name="bitCount(I)I" />
 		<method name="compareTo(Ljava/lang/Integer;)I" />
 		<method name="decode(Ljava/lang/String;)Ljava/lang/Integer;" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
 		<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="intValue()I" />
-		<method name="longValue()J" />
 		<method name="lowestOneBit(I)I" />
 		<method name="numberOfLeadingZeros(I)I" />
 		<method name="numberOfTrailingZeros(I)I" />
@@ -30249,6 +30873,7 @@
 		<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">
@@ -30264,14 +30889,10 @@
 		<method name="bitCount(J)I" />
 		<method name="compareTo(Ljava/lang/Long;)I" />
 		<method name="decode(Ljava/lang/String;)Ljava/lang/Long;" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
 		<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="intValue()I" />
-		<method name="longValue()J" />
 		<method name="lowestOneBit(J)J" />
 		<method name="numberOfLeadingZeros(J)I" />
 		<method name="numberOfTrailingZeros(J)I" />
@@ -30297,6 +30918,7 @@
 	</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" />
@@ -30431,10 +31053,7 @@
 	<class name="java/lang/Package" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="java/lang/reflect/AnnotatedElement" />
-		<method name="getAnnotation(Ljava/lang/Class;)LA;" since="9" />
-		<method name="getAnnotation(Ljava/lang/Class;)LT;" />
-		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
-		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="&lt;init>()V" />
 		<method name="getImplementationTitle()Ljava/lang/String;" />
 		<method name="getImplementationVendor()Ljava/lang/String;" />
 		<method name="getImplementationVersion()Ljava/lang/String;" />
@@ -30444,7 +31063,6 @@
 		<method name="getSpecificationTitle()Ljava/lang/String;" />
 		<method name="getSpecificationVendor()Ljava/lang/String;" />
 		<method name="getSpecificationVersion()Ljava/lang/String;" />
-		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
 		<method name="isCompatibleWith(Ljava/lang/String;)Z" />
 		<method name="isSealed()Z" />
 		<method name="isSealed(Ljava/net/URL;)Z" />
@@ -30474,13 +31092,16 @@
 		<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/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;" />
@@ -30578,10 +31199,6 @@
 		<method name="&lt;init>(S)V" />
 		<method name="compareTo(Ljava/lang/Short;)I" />
 		<method name="decode(Ljava/lang/String;)Ljava/lang/Short;" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
-		<method name="intValue()I" />
-		<method name="longValue()J" />
 		<method name="parseShort(Ljava/lang/String;)S" />
 		<method name="parseShort(Ljava/lang/String;I)S" />
 		<method name="reverseBytes(S)S" />
@@ -30611,6 +31228,7 @@
 	</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" />
@@ -30670,9 +31288,9 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/lang/StringBuffer;)V" />
@@ -30688,7 +31306,6 @@
 		<method name="&lt;init>([C)V" />
 		<method name="&lt;init>([CII)V" />
 		<method name="&lt;init>([III)V" />
-		<method name="charAt(I)C" />
 		<method name="codePointAt(I)I" />
 		<method name="codePointBefore(I)I" />
 		<method name="codePointCount(II)I" />
@@ -30719,7 +31336,6 @@
 		<method name="lastIndexOf(II)I" />
 		<method name="lastIndexOf(Ljava/lang/String;)I" />
 		<method name="lastIndexOf(Ljava/lang/String;I)I" />
-		<method name="length()I" />
 		<method name="matches(Ljava/lang/String;)Z" />
 		<method name="offsetByCodePoints(II)I" />
 		<method name="regionMatches(ILjava/lang/String;II)Z" />
@@ -30732,7 +31348,6 @@
 		<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="subSequence(II)Ljava/lang/CharSequence;" />
 		<method name="substring(I)Ljava/lang/String;" />
 		<method name="substring(II)Ljava/lang/String;" />
 		<method name="toCharArray()[C" />
@@ -30754,9 +31369,9 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
@@ -30794,9 +31409,9 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
@@ -30841,9 +31456,11 @@
 	<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" />
@@ -30912,7 +31529,6 @@
 		<method name="join(J)V" />
 		<method name="join(JI)V" />
 		<method name="resume()V" />
-		<method name="run()V" />
 		<method name="setContextClassLoader(Ljava/lang/ClassLoader;)V" />
 		<method name="setDaemon(Z)V" />
 		<method name="setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V" />
@@ -30942,6 +31558,7 @@
 		<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">
@@ -30975,15 +31592,14 @@
 		<method name="setMaxPriority(I)V" />
 		<method name="stop()V" />
 		<method name="suspend()V" />
-		<method name="uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V" />
 	</class>
 	<class name="java/lang/ThreadLocal" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="get()LT;" />
-		<method name="initialValue()LT;" />
+		<method name="get()Ljava/lang/Object;" />
+		<method name="initialValue()Ljava/lang/Object;" />
 		<method name="remove()V" />
-		<method name="set(LT;)V" />
+		<method name="set(Ljava/lang/Object;)V" />
 	</class>
 	<class name="java/lang/Throwable" since="1">
 		<extends name="java/lang/Object" />
@@ -31042,13 +31658,12 @@
 	</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;" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="hashCode()I" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="java/lang/annotation/AnnotationFormatError" since="1">
 		<extends name="java/lang/Error" />
@@ -31092,6 +31707,7 @@
 	<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" />
@@ -31104,16 +31720,18 @@
 	<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>(LT;Ljava/lang/ref/ReferenceQueue;)V" />
+		<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()LT;" />
+		<method name="get()Ljava/lang/Object;" />
 		<method name="isEnqueued()Z" />
 	</class>
 	<class name="java/lang/ref/ReferenceQueue" since="1">
@@ -31125,34 +31743,32 @@
 	</class>
 	<class name="java/lang/ref/SoftReference" since="1">
 		<extends name="java/lang/ref/Reference" />
-		<method name="&lt;init>(LT;)V" />
-		<method name="&lt;init>(LT;Ljava/lang/ref/ReferenceQueue;)V" />
+		<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>(LT;)V" />
-		<method name="&lt;init>(LT;Ljava/lang/ref/ReferenceQueue;)V" />
+		<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="getAnnotation(Ljava/lang/Class;)LT;" />
-		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
-		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
 		<method name="isAccessible()Z" />
-		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
 		<method name="setAccessible(Z)V" />
 		<method name="setAccessible([Ljava/lang/reflect/AccessibleObject;Z)V" />
 	</class>
 	<class name="java/lang/reflect/AnnotatedElement" since="1">
-		<method name="getAnnotation(Ljava/lang/Class;)LT;" />
+		<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" />
@@ -31179,41 +31795,32 @@
 		<extends name="java/lang/reflect/AccessibleObject" />
 		<implements name="java/lang/reflect/GenericDeclaration" />
 		<implements name="java/lang/reflect/Member" />
-		<method name="getAnnotation(Ljava/lang/Class;)LA;" since="14" />
-		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<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="getModifiers()I" />
-		<method name="getName()Ljava/lang/String;" />
 		<method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;" />
 		<method name="getParameterTypes()[Ljava/lang/Class;" />
-		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
-		<method name="isSynthetic()Z" />
 		<method name="isVarArgs()Z" />
-		<method name="newInstance([Ljava/lang/Object;)LT;" />
+		<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="getAnnotation(Ljava/lang/Class;)LA;" />
 		<method name="getBoolean(Ljava/lang/Object;)Z" />
 		<method name="getByte(Ljava/lang/Object;)B" />
 		<method name="getChar(Ljava/lang/Object;)C" />
-		<method name="getDeclaringClass()Ljava/lang/Class;" />
 		<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="getModifiers()I" />
-		<method name="getName()Ljava/lang/String;" />
 		<method name="getShort(Ljava/lang/Object;)S" />
 		<method name="getType()Ljava/lang/Class;" />
 		<method name="isEnumConstant()Z" />
-		<method name="isSynthetic()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" />
@@ -31226,10 +31833,12 @@
 		<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">
@@ -31237,6 +31846,7 @@
 		<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">
@@ -31251,6 +31861,7 @@
 		<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;" />
@@ -31262,22 +31873,17 @@
 		<extends name="java/lang/reflect/AccessibleObject" />
 		<implements name="java/lang/reflect/GenericDeclaration" />
 		<implements name="java/lang/reflect/Member" />
-		<method name="getAnnotation(Ljava/lang/Class;)LA;" since="14" />
-		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<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="getModifiers()I" />
-		<method name="getName()Ljava/lang/String;" />
 		<method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;" />
 		<method name="getParameterTypes()[Ljava/lang/Class;" />
 		<method name="getReturnType()Ljava/lang/Class;" />
-		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
 		<method name="invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="isBridge()Z" />
-		<method name="isSynthetic()Z" />
 		<method name="isVarArgs()Z" />
 		<method name="toGenericString()Ljava/lang/String;" />
 	</class>
@@ -31311,6 +31917,7 @@
 		<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;" />
@@ -31332,11 +31939,13 @@
 		<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()LD;" />
+		<method name="getGenericDeclaration()Ljava/lang/reflect/GenericDeclaration;" />
 		<method name="getName()Ljava/lang/String;" />
 	</class>
 	<class name="java/lang/reflect/UndeclaredThrowableException" since="1">
@@ -31346,14 +31955,15 @@
 		<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/lang/Comparable" />
 		<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" />
@@ -31386,11 +31996,7 @@
 		<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="doubleValue()D" />
-		<method name="floatValue()F" />
-		<method name="intValue()I" />
 		<method name="intValueExact()I" />
-		<method name="longValue()J" />
 		<method name="longValueExact()J" />
 		<method name="max(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
 		<method name="min(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
@@ -31441,8 +32047,8 @@
 	</class>
 	<class name="java/math/BigInteger" since="1">
 		<extends name="java/lang/Number" />
-		<implements name="java/lang/Comparable" />
 		<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" />
@@ -31459,14 +32065,10 @@
 		<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="doubleValue()D" />
 		<method name="flipBit(I)Ljava/math/BigInteger;" />
-		<method name="floatValue()F" />
 		<method name="gcd(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
 		<method name="getLowestSetBit()I" />
-		<method name="intValue()I" />
 		<method name="isProbablePrime(I)Z" />
-		<method name="longValue()J" />
 		<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;" />
@@ -31574,6 +32176,7 @@
 		<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">
@@ -31588,18 +32191,18 @@
 		<extends name="java/net/CookieHandler" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V" />
-		<method name="get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;" />
 		<method name="getCookieStore()Ljava/net/CookieStore;" />
-		<method name="put(Ljava/net/URI;Ljava/util/Map;)V" />
 		<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;" />
@@ -31677,7 +32280,6 @@
 		<method name="disconnect()V" />
 		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
 		<method name="getLocalPort()I" />
-		<method name="getOption(I)Ljava/lang/Object;" />
 		<method name="getTTL()B" />
 		<method name="getTimeToLive()I" />
 		<method name="join(Ljava/net/InetAddress;)V" />
@@ -31688,23 +32290,23 @@
 		<method name="peekData(Ljava/net/DatagramPacket;)I" />
 		<method name="receive(Ljava/net/DatagramPacket;)V" />
 		<method name="send(Ljava/net/DatagramPacket;)V" />
-		<method name="setOption(ILjava/lang/Object;)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="clone()Ljava/lang/Object;" />
 		<method name="domainMatches(Ljava/lang/String;Ljava/lang/String;)Z" />
 		<method name="getComment()Ljava/lang/String;" />
 		<method name="getCommentURL()Ljava/lang/String;" />
@@ -31799,6 +32401,7 @@
 	</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;" />
@@ -31808,9 +32411,11 @@
 	</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" />
@@ -31820,6 +32425,7 @@
 	<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;" />
@@ -31848,15 +32454,14 @@
 		<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="equals(Ljava/lang/Object;)Z" />
 		<method name="getAddress()Ljava/net/InetAddress;" />
 		<method name="getHostName()Ljava/lang/String;" />
 		<method name="getPort()I" />
-		<method name="hashCode()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" />
@@ -31907,6 +32512,7 @@
 	</class>
 	<class name="java/net/NetworkInterface" since="1">
 		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
 		<method name="getByInetAddress(Ljava/net/InetAddress;)Ljava/net/NetworkInterface;" />
 		<method name="getByName(Ljava/lang/String;)Ljava/net/NetworkInterface;" />
 		<method name="getDisplayName()Ljava/lang/String;" />
@@ -31949,8 +32555,6 @@
 		<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="equals(Ljava/lang/Object;)Z" />
-		<method name="hashCode()I" />
 		<method name="type()Ljava/net/Proxy$Type;" />
 		<field name="NO_PROXY" />
 	</class>
@@ -32093,12 +32697,10 @@
 		<method name="getInetAddress()Ljava/net/InetAddress;" />
 		<method name="getInputStream()Ljava/io/InputStream;" />
 		<method name="getLocalPort()I" />
-		<method name="getOption(I)Ljava/lang/Object;" />
 		<method name="getOutputStream()Ljava/io/OutputStream;" />
 		<method name="getPort()I" />
 		<method name="listen(I)V" />
 		<method name="sendUrgentData(I)V" />
-		<method name="setOption(ILjava/lang/Object;)V" />
 		<method name="setPerformancePreferences(III)V" />
 		<method name="shutdownInput()V" />
 		<method name="shutdownOutput()V" />
@@ -32109,9 +32711,11 @@
 		<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" />
@@ -32133,10 +32737,6 @@
 		<extends name="java/security/Permission" />
 		<implements name="java/io/Serializable" />
 		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="getActions()Ljava/lang/String;" />
-		<method name="hashCode()I" />
-		<method name="implies(Ljava/security/Permission;)Z" />
 	</class>
 	<class name="java/net/SocketTimeoutException" since="1">
 		<extends name="java/io/InterruptedIOException" />
@@ -32145,8 +32745,8 @@
 	</class>
 	<class name="java/net/URI" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<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" />
@@ -32225,8 +32825,6 @@
 		<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="findResource(Ljava/lang/String;)Ljava/net/URL;" />
-		<method name="findResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
 		<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;" />
@@ -32298,6 +32896,7 @@
 	</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>
@@ -32318,6 +32917,7 @@
 		<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">
@@ -32332,6 +32932,7 @@
 	</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" />
@@ -32361,6 +32962,7 @@
 	<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" />
@@ -32418,6 +33020,7 @@
 	</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" />
@@ -32428,6 +33031,7 @@
 		<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;" />
@@ -32435,7 +33039,6 @@
 		<method name="array()[C" />
 		<method name="arrayOffset()I" />
 		<method name="asReadOnlyBuffer()Ljava/nio/CharBuffer;" />
-		<method name="charAt(I)C" />
 		<method name="compact()Ljava/nio/CharBuffer;" />
 		<method name="compareTo(Ljava/nio/CharBuffer;)I" />
 		<method name="duplicate()Ljava/nio/CharBuffer;" />
@@ -32445,7 +33048,6 @@
 		<method name="get([CII)Ljava/nio/CharBuffer;" />
 		<method name="hasArray()Z" />
 		<method name="isDirect()Z" />
-		<method name="length()I" />
 		<method name="order()Ljava/nio/ByteOrder;" />
 		<method name="put(C)Ljava/nio/CharBuffer;" />
 		<method name="put(IC)Ljava/nio/CharBuffer;" />
@@ -32454,9 +33056,7 @@
 		<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="read(Ljava/nio/CharBuffer;)I" />
 		<method name="slice()Ljava/nio/CharBuffer;" />
-		<method name="subSequence(II)Ljava/lang/CharSequence;" />
 		<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;" />
@@ -32465,6 +33065,7 @@
 	<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" />
@@ -32491,6 +33092,7 @@
 	<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" />
@@ -32517,6 +33119,7 @@
 	<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" />
@@ -32547,6 +33150,7 @@
 	<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" />
@@ -32572,6 +33176,7 @@
 	</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;" />
@@ -32583,6 +33188,7 @@
 	<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" />
@@ -32615,6 +33221,7 @@
 		<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>
@@ -32623,12 +33230,13 @@
 		<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="close()V" />
 		<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;" />
@@ -32664,16 +33272,9 @@
 		<method name="disconnect()Ljava/nio/channels/DatagramChannel;" />
 		<method name="isConnected()Z" />
 		<method name="open()Ljava/nio/channels/DatagramChannel;" />
-		<method name="read(Ljava/nio/ByteBuffer;)I" />
-		<method name="read([Ljava/nio/ByteBuffer;)J" />
-		<method name="read([Ljava/nio/ByteBuffer;II)J" />
 		<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;" />
-		<method name="validOps()I" />
-		<method name="write(Ljava/nio/ByteBuffer;)I" />
-		<method name="write([Ljava/nio/ByteBuffer;)J" />
-		<method name="write([Ljava/nio/ByteBuffer;II)J" />
 	</class>
 	<class name="java/nio/channels/FileChannel" since="1">
 		<extends name="java/nio/channels/spi/AbstractInterruptibleChannel" />
@@ -32687,23 +33288,18 @@
 		<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;)I" />
 		<method name="read(Ljava/nio/ByteBuffer;J)I" />
-		<method name="read([Ljava/nio/ByteBuffer;)J" />
-		<method name="read([Ljava/nio/ByteBuffer;II)J" />
 		<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;)I" />
 		<method name="write(Ljava/nio/ByteBuffer;J)I" />
-		<method name="write([Ljava/nio/ByteBuffer;)J" />
-		<method name="write([Ljava/nio/ByteBuffer;II)J" />
 	</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" />
@@ -32718,13 +33314,13 @@
 		<method name="position()J" />
 		<method name="release()V" />
 		<method name="size()J" />
-		<method name="toString()Ljava/lang/String;" />
 	</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" />
@@ -32738,8 +33334,8 @@
 		<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" />
-		<method name="close()V" />
 	</class>
 	<class name="java/nio/channels/NoConnectionPendingException" since="1">
 		<extends name="java/lang/IllegalStateException" />
@@ -32777,20 +33373,20 @@
 		<implements name="java/nio/channels/GatheringByteChannel" />
 		<implements name="java/nio/channels/WritableByteChannel" />
 		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
-		<method name="validOps()I" />
 	</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" />
-		<method name="validOps()I" />
 	</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" />
@@ -32850,7 +33446,6 @@
 		<method name="accept()Ljava/nio/channels/SocketChannel;" />
 		<method name="open()Ljava/nio/channels/ServerSocketChannel;" />
 		<method name="socket()Ljava/net/ServerSocket;" />
-		<method name="validOps()I" />
 	</class>
 	<class name="java/nio/channels/SocketChannel" since="1">
 		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
@@ -32864,14 +33459,7 @@
 		<method name="isConnectionPending()Z" />
 		<method name="open()Ljava/nio/channels/SocketChannel;" />
 		<method name="open(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;" />
-		<method name="read(Ljava/nio/ByteBuffer;)I" />
-		<method name="read([Ljava/nio/ByteBuffer;)J" />
-		<method name="read([Ljava/nio/ByteBuffer;II)J" />
 		<method name="socket()Ljava/net/Socket;" />
-		<method name="validOps()I" />
-		<method name="write(Ljava/nio/ByteBuffer;)I" />
-		<method name="write([Ljava/nio/ByteBuffer;)J" />
-		<method name="write([Ljava/nio/ByteBuffer;II)J" />
 	</class>
 	<class name="java/nio/channels/UnresolvedAddressException" since="1">
 		<extends name="java/lang/IllegalArgumentException" />
@@ -32882,6 +33470,7 @@
 		<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>
@@ -32891,42 +33480,27 @@
 		<implements name="java/nio/channels/InterruptibleChannel" />
 		<method name="&lt;init>()V" />
 		<method name="begin()V" />
-		<method name="close()V" />
 		<method name="end(Z)V" />
 		<method name="implCloseChannel()V" />
-		<method name="isOpen()Z" />
 	</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="blockingLock()Ljava/lang/Object;" />
-		<method name="configureBlocking(Z)Ljava/nio/channels/SelectableChannel;" />
-		<method name="implCloseChannel()V" />
 		<method name="implCloseSelectableChannel()V" />
 		<method name="implConfigureBlocking(Z)V" />
-		<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;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;" />
 	</class>
 	<class name="java/nio/channels/spi/AbstractSelectionKey" since="1">
 		<extends name="java/nio/channels/SelectionKey" />
 		<method name="&lt;init>()V" />
-		<method name="cancel()V" />
-		<method name="isValid()Z" />
 	</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="close()V" />
 		<method name="deregister(Ljava/nio/channels/spi/AbstractSelectionKey;)V" />
 		<method name="end()V" />
 		<method name="implCloseSelector()V" />
-		<method name="isOpen()Z" />
-		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
 		<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">
@@ -32959,15 +33533,12 @@
 		<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="equals(Ljava/lang/Object;)Z" />
 		<method name="forName(Ljava/lang/String;)Ljava/nio/charset/Charset;" />
-		<method name="hashCode()I" />
 		<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;" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="java/nio/charset/CharsetDecoder" since="1">
 		<extends name="java/lang/Object" />
@@ -33028,6 +33599,7 @@
 	</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" />
@@ -33042,6 +33614,7 @@
 	</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" />
@@ -33087,13 +33660,14 @@
 	</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;)LT;" />
-		<method name="doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)LT;" />
-		<method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;)LT;" />
-		<method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)LT;" />
-		<method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedAction;)LT;" since="9" />
-		<method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedExceptionAction;)LT;" since="9" />
+		<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">
@@ -33126,19 +33700,18 @@
 		<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;)LT;" />
+		<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" />
-		<method name="toString()Ljava/lang/String;" />
 	</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;)LT;" />
+		<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" />
@@ -33148,10 +33721,6 @@
 		<extends name="java/security/Permission" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="getActions()Ljava/lang/String;" />
-		<method name="hashCode()I" />
-		<method name="implies(Ljava/security/Permission;)Z" />
 	</class>
 	<class name="java/security/AuthProvider" since="1">
 		<extends name="java/security/Provider" />
@@ -33165,12 +33734,9 @@
 		<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="equals(Ljava/lang/Object;)Z" />
-		<method name="getActions()Ljava/lang/String;" />
-		<method name="hashCode()I" />
-		<method name="implies(Ljava/security/Permission;)Z" />
 	</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;" />
@@ -33220,6 +33786,7 @@
 		<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">
@@ -33230,6 +33797,7 @@
 		<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">
@@ -33240,16 +33808,14 @@
 	</class>
 	<class name="java/security/Identity" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/security/Principal" />
 		<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="equals(Ljava/lang/Object;)Z" />
 		<method name="getInfo()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
 		<method name="getPublicKey()Ljava/security/PublicKey;" />
 		<method name="getScope()Ljava/security/IdentityScope;" />
 		<method name="identityEquals(Ljava/security/Identity;)Z" />
@@ -33293,6 +33859,7 @@
 		<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" />
@@ -33315,7 +33882,7 @@
 		<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;)LT;" />
+		<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>
@@ -33324,7 +33891,7 @@
 		<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;)LT;" />
+		<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">
@@ -33345,14 +33912,12 @@
 		<extends name="java/security/KeyPairGeneratorSpi" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="genKeyPair()Ljava/security/KeyPair;" />
-		<method name="generateKeyPair()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(ILjava/security/SecureRandom;)V" />
 		<method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;)V" />
 	</class>
 	<class name="java/security/KeyPairGeneratorSpi" since="1">
@@ -33423,18 +33988,18 @@
 		<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="javax/security/auth/Destroyable" />
 		<implements name="java/security/KeyStore$ProtectionParameter" />
+		<implements name="javax/security/auth/Destroyable" />
 		<method name="&lt;init>([C)V" />
-		<method name="destroy()V" />
 		<method name="getPassword()[C" />
-		<method name="isDestroyed()Z" />
 	</class>
 	<class name="java/security/KeyStore$PrivateKeyEntry" since="1">
 		<extends name="java/lang/Object" />
@@ -33445,6 +34010,7 @@
 		<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" />
@@ -33512,7 +34078,6 @@
 	<class name="java/security/MessageDigestSpi" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="engineDigest()[B" />
 		<method name="engineDigest([BII)I" />
 		<method name="engineGetDigestLength()I" />
@@ -33535,14 +34100,11 @@
 	</class>
 	<class name="java/security/Permission" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/security/Guard" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/security/Guard" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="checkGuard(Ljava/lang/Object;)V" />
-		<method name="equals(Ljava/lang/Object;)Z" />
 		<method name="getActions()Ljava/lang/String;" />
 		<method name="getName()Ljava/lang/String;" />
-		<method name="hashCode()I" />
 		<method name="implies(Ljava/security/Permission;)Z" />
 		<method name="newPermissionCollection()Ljava/security/PermissionCollection;" />
 	</class>
@@ -33560,9 +34122,6 @@
 		<extends name="java/security/PermissionCollection" />
 		<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" />
 	</class>
 	<class name="java/security/Policy" since="1">
 		<extends name="java/lang/Object" />
@@ -33582,6 +34141,7 @@
 		<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" />
@@ -33592,17 +34152,17 @@
 		<method name="engineRefresh()V" />
 	</class>
 	<class name="java/security/Principal" since="1">
-		<method name="equals(Ljava/lang/Object;)Z" />
+		<extends name="java/lang/Object" />
 		<method name="getName()Ljava/lang/String;" />
-		<method name="hashCode()I" />
-		<method name="toString()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">
-		<method name="run()LT;" />
+		<extends name="java/lang/Object" />
+		<method name="run()Ljava/lang/Object;" />
 	</class>
 	<class name="java/security/PrivilegedActionException" since="1">
 		<extends name="java/lang/Exception" />
@@ -33610,7 +34170,8 @@
 		<method name="getException()Ljava/lang/Exception;" />
 	</class>
 	<class name="java/security/PrivilegedExceptionAction" since="1">
-		<method name="run()LT;" />
+		<extends name="java/lang/Object" />
+		<method name="run()Ljava/lang/Object;" />
 	</class>
 	<class name="java/security/ProtectionDomain" since="1">
 		<extends name="java/lang/Object" />
@@ -33630,8 +34191,6 @@
 		<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="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="putAll(Ljava/util/Map;)V" />
 		<method name="putService(Ljava/security/Provider$Service;)V" />
 		<method name="removeService(Ljava/security/Provider$Service;)V" />
 	</class>
@@ -33654,6 +34213,7 @@
 		<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>
@@ -33677,7 +34237,6 @@
 		<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="next(I)I" />
 		<method name="setSeed([B)V" />
 	</class>
 	<class name="java/security/SecureRandomSpi" since="1">
@@ -33690,6 +34249,7 @@
 	</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;" />
@@ -33746,7 +34306,6 @@
 	<class name="java/security/SignatureSpi" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="engineGetParameter(Ljava/lang/String;)Ljava/lang/Object;" />
 		<method name="engineGetParameters()Ljava/security/AlgorithmParameters;" />
 		<method name="engineInitSign(Ljava/security/PrivateKey;)V" />
@@ -33802,16 +34361,13 @@
 		<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="equals(Ljava/lang/Object;)Z" />
-		<method name="getActions()Ljava/lang/String;" />
 		<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;" />
-		<method name="hashCode()I" />
-		<method name="implies(Ljava/security/Permission;)Z" />
 	</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" />
@@ -33820,26 +34376,25 @@
 		<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" />
-		<method name="toString()Ljava/lang/String;" />
 	</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="clone()Ljava/lang/Object;" />
 		<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" />
-		<method name="toString()Ljava/lang/String;" />
 	</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" />
@@ -33855,20 +34410,19 @@
 		<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">
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="toString()Ljava/lang/String;" />
+		<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" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="java/security/cert/CRLException" since="1">
 		<extends name="java/security/GeneralSecurityException" />
@@ -33878,8 +34432,8 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="match(Ljava/security/cert/CRL;)Z" />
 	</class>
 	<class name="java/security/cert/CertPath" since="1">
@@ -33918,8 +34472,8 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getCertPath()Ljava/security/cert/CertPath;" />
 	</class>
 	<class name="java/security/cert/CertPathBuilderSpi" since="1">
@@ -33928,8 +34482,8 @@
 		<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" />
-		<method name="clone()Ljava/lang/Object;" />
 	</class>
 	<class name="java/security/cert/CertPathValidator" since="1">
 		<extends name="java/lang/Object" />
@@ -33953,8 +34507,8 @@
 		<method name="getIndex()I" />
 	</class>
 	<class name="java/security/cert/CertPathValidatorResult" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/lang/Cloneable" />
-		<method name="clone()Ljava/lang/Object;" />
 	</class>
 	<class name="java/security/cert/CertPathValidatorSpi" since="1">
 		<extends name="java/lang/Object" />
@@ -33962,8 +34516,8 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="match(Ljava/security/cert/Certificate;)Z" />
 	</class>
 	<class name="java/security/cert/CertStore" since="1">
@@ -33987,8 +34541,8 @@
 		<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" />
-		<method name="clone()Ljava/lang/Object;" />
 	</class>
 	<class name="java/security/cert/CertStoreSpi" since="1">
 		<extends name="java/lang/Object" />
@@ -34003,7 +34557,6 @@
 		<method name="getEncoded()[B" />
 		<method name="getPublicKey()Ljava/security/PublicKey;" />
 		<method name="getType()Ljava/lang/String;" />
-		<method name="toString()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;" />
@@ -34079,7 +34632,6 @@
 		<implements name="java/security/cert/CertStoreParameters" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="getCollection()Ljava/util/Collection;" />
 	</class>
 	<class name="java/security/cert/LDAPCertStoreParameters" since="1">
@@ -34088,7 +34640,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/lang/String;I)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="getPort()I" />
 		<method name="getServerName()Ljava/lang/String;" />
 	</class>
@@ -34103,14 +34654,12 @@
 		<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" />
-		<method name="getCertPath()Ljava/security/cert/CertPath;" />
 	</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="clone()Ljava/lang/Object;" />
 		<method name="getSupportedExtensions()Ljava/util/Set;" />
 		<method name="init(Z)V" />
 		<method name="isForwardCheckingSupported()Z" />
@@ -34119,7 +34668,6 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getPolicyTree()Ljava/security/cert/PolicyNode;" />
 		<method name="getPublicKey()Ljava/security/PublicKey;" />
 		<method name="getTrustAnchor()Ljava/security/cert/TrustAnchor;" />
@@ -34131,7 +34679,6 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getCertPathCheckers()Ljava/util/List;" />
 		<method name="getCertStores()Ljava/util/List;" />
 		<method name="getDate()Ljava/util/Date;" />
@@ -34158,6 +34705,7 @@
 		<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;" />
@@ -34214,7 +34762,6 @@
 		<method name="getRevocationDate()Ljava/util/Date;" />
 		<method name="getSerialNumber()Ljava/math/BigInteger;" />
 		<method name="hasExtensions()Z" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="java/security/cert/X509CRLSelector" since="1">
 		<extends name="java/lang/Object" />
@@ -34223,14 +34770,12 @@
 		<method name="addIssuer(Ljavax/security/auth/x500/X500Principal;)V" />
 		<method name="addIssuerName(Ljava/lang/String;)V" />
 		<method name="addIssuerName([B)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<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="match(Ljava/security/cert/CRL;)Z" />
 		<method name="setCertificateChecking(Ljava/security/cert/X509Certificate;)V" />
 		<method name="setDateAndTime(Ljava/util/Date;)V" />
 		<method name="setIssuerNames(Ljava/util/Collection;)V" />
@@ -34246,7 +34791,6 @@
 		<method name="addPathToName(I[B)V" />
 		<method name="addSubjectAlternativeName(ILjava/lang/String;)V" />
 		<method name="addSubjectAlternativeName(I[B)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="getAuthorityKeyIdentifier()[B" />
 		<method name="getBasicConstraints()I" />
 		<method name="getCertificate()Ljava/security/cert/X509Certificate;" />
@@ -34269,7 +34813,6 @@
 		<method name="getSubjectKeyIdentifier()[B" />
 		<method name="getSubjectPublicKey()Ljava/security/PublicKey;" />
 		<method name="getSubjectPublicKeyAlgID()Ljava/lang/String;" />
-		<method name="match(Ljava/security/cert/Certificate;)Z" />
 		<method name="setAuthorityKeyIdentifier([B)V" />
 		<method name="setBasicConstraints(I)V" />
 		<method name="setCertificate(Ljava/security/cert/X509Certificate;)V" />
@@ -34322,54 +34865,65 @@
 		<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">
-		<implements name="java/security/interfaces/DSAKey" />
+		<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">
-		<implements name="java/security/interfaces/DSAKey" />
+		<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">
-		<implements name="java/security/interfaces/ECKey" />
+		<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">
-		<implements name="java/security/interfaces/ECKey" />
+		<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;" />
@@ -34381,6 +34935,7 @@
 		<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;" />
@@ -34391,27 +34946,27 @@
 		<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/spec/AlgorithmParameterSpec" />
 		<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" />
-		<method name="getG()Ljava/math/BigInteger;" />
-		<method name="getP()Ljava/math/BigInteger;" />
-		<method name="getQ()Ljava/math/BigInteger;" />
 	</class>
 	<class name="java/security/spec/DSAPrivateKeySpec" since="1">
 		<extends name="java/lang/Object" />
@@ -34432,6 +34987,7 @@
 		<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">
@@ -34440,7 +34996,6 @@
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(ILjava/math/BigInteger;)V" />
 		<method name="&lt;init>(I[I)V" />
-		<method name="getFieldSize()I" />
 		<method name="getM()I" />
 		<method name="getMidTermsOfReductionPolynomial()[I" />
 		<method name="getReductionPolynomial()Ljava/math/BigInteger;" />
@@ -34449,7 +35004,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/security/spec/ECField" />
 		<method name="&lt;init>(Ljava/math/BigInteger;)V" />
-		<method name="getFieldSize()I" />
 		<method name="getP()Ljava/math/BigInteger;" />
 	</class>
 	<class name="java/security/spec/ECGenParameterSpec" since="1">
@@ -34517,6 +35071,7 @@
 		<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" />
@@ -34531,7 +35086,6 @@
 	<class name="java/security/spec/PKCS8EncodedKeySpec" since="1">
 		<extends name="java/security/spec/EncodedKeySpec" />
 		<method name="&lt;init>([B)V" />
-		<method name="getFormat()Ljava/lang/String;" />
 	</class>
 	<class name="java/security/spec/PSSParameterSpec" since="1">
 		<extends name="java/lang/Object" />
@@ -34599,9 +35153,9 @@
 	<class name="java/security/spec/X509EncodedKeySpec" since="1">
 		<extends name="java/security/spec/EncodedKeySpec" />
 		<method name="&lt;init>([B)V" />
-		<method name="getFormat()Ljava/lang/String;" />
 	</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;" />
@@ -34630,6 +35184,7 @@
 		<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" />
@@ -34643,6 +35198,7 @@
 		<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;" />
@@ -34766,6 +35322,7 @@
 		<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;" />
@@ -34781,6 +35338,7 @@
 		<method name="truncate(J)V" />
 	</class>
 	<class name="java/sql/Connection" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/sql/Wrapper" since="9" />
 		<method name="clearWarnings()V" />
 		<method name="close()V" />
@@ -34847,6 +35405,7 @@
 		<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" />
@@ -35089,6 +35648,7 @@
 		<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" />
@@ -35098,6 +35658,7 @@
 	</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;" />
@@ -35123,9 +35684,11 @@
 		<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" />
@@ -35145,6 +35708,7 @@
 		<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" />
@@ -35203,12 +35767,14 @@
 		<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/sql/Wrapper" since="9" />
 		<method name="absolute(I)Z" />
 		<method name="afterLast()V" />
@@ -35409,6 +35975,7 @@
 		<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;" />
@@ -35436,10 +36003,8 @@
 		<field name="columnNullableUnknown" />
 	</class>
 	<class name="java/sql/RowId" since="9">
-		<method name="equals(Ljava/lang/Object;)Z" />
+		<extends name="java/lang/Object" />
 		<method name="getBytes()[B" />
-		<method name="hashCode()I" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="java/sql/RowIdLifetime" since="9">
 		<extends name="java/lang/Enum" />
@@ -35465,6 +36030,7 @@
 		<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" />
@@ -35495,7 +36061,6 @@
 		<method name="getErrorCode()I" />
 		<method name="getNextException()Ljava/sql/SQLException;" />
 		<method name="getSQLState()Ljava/lang/String;" />
-		<method name="iterator()Ljava/util/Iterator;" since="9" />
 		<method name="setNextException(Ljava/sql/SQLException;)V" />
 	</class>
 	<class name="java/sql/SQLFeatureNotSupportedException" since="9">
@@ -35510,6 +36075,7 @@
 		<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;" />
@@ -35583,6 +36149,7 @@
 		<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" />
@@ -35613,8 +36180,8 @@
 	</class>
 	<class name="java/sql/SQLPermission" since="1">
 		<extends name="java/security/BasicPermission" />
-		<implements name="java/security/Guard" />
 		<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>
@@ -35699,21 +36266,24 @@
 		<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;)LT;" />
+		<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;)LT;" />
+		<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/sql/Wrapper" since="9" />
 		<method name="addBatch(Ljava/lang/String;)V" />
 		<method name="cancel()V" />
@@ -35764,6 +36334,7 @@
 		<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;" />
@@ -35788,6 +36359,7 @@
 	</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" />
@@ -35826,8 +36398,9 @@
 		<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;)LT;" />
+		<method name="unwrap(Ljava/lang/Class;)Ljava/lang/Object;" />
 	</class>
 	<class name="java/text/Annotation" since="1">
 		<extends name="java/lang/Object" />
@@ -35835,6 +36408,7 @@
 		<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;" />
@@ -35850,9 +36424,7 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/io/Serializable" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="equals(Ljava/lang/Object;)Z" />
 		<method name="getName()Ljava/lang/String;" />
-		<method name="hashCode()I" />
 		<method name="readResolve()Ljava/lang/Object;" />
 		<field name="INPUT_METHOD_SEGMENT" />
 		<field name="LANGUAGE" />
@@ -35900,7 +36472,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="current()I" />
 		<method name="first()I" />
 		<method name="following(I)I" />
@@ -35928,8 +36499,8 @@
 		<field name="DONE" />
 	</class>
 	<class name="java/text/CharacterIterator" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/lang/Cloneable" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="current()C" />
 		<method name="first()C" />
 		<method name="getBeginIndex()I" />
@@ -35946,19 +36517,17 @@
 		<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="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
 		<method name="getFormats()[Ljava/lang/Object;" />
 		<method name="getLimits()[D" />
 		<method name="nextDouble(D)D" />
 		<method name="nextDouble(DZ)D" />
-		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;" />
 		<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" />
@@ -35975,6 +36544,7 @@
 	<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;" />
@@ -35985,8 +36555,6 @@
 		<implements name="java/lang/Cloneable" />
 		<implements name="java/util/Comparator" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="compare(Ljava/lang/Object;Ljava/lang/Object;)I" />
 		<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;" />
@@ -35995,7 +36563,6 @@
 		<method name="getInstance()Ljava/text/Collator;" />
 		<method name="getInstance(Ljava/util/Locale;)Ljava/text/Collator;" />
 		<method name="getStrength()I" />
-		<method name="hashCode()I" />
 		<method name="setDecomposition(I)V" />
 		<method name="setStrength(I)V" />
 		<field name="CANONICAL_DECOMPOSITION" />
@@ -36009,7 +36576,6 @@
 	<class name="java/text/DateFormat" since="1">
 		<extends name="java/text/Format" />
 		<method name="&lt;init>()V" />
-		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
 		<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;" />
@@ -36029,7 +36595,6 @@
 		<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="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
 		<method name="setCalendar(Ljava/util/Calendar;)V" />
 		<method name="setLenient(Z)V" />
 		<method name="setNumberFormat(Ljava/text/NumberFormat;)V" />
@@ -36086,11 +36651,10 @@
 	</class>
 	<class name="java/text/DateFormatSymbols" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getAmPmStrings()[Ljava/lang/String;" />
 		<method name="getAvailableLocales()[Ljava/util/Locale;" since="9" />
 		<method name="getEras()[Ljava/lang/String;" />
@@ -36118,9 +36682,6 @@
 		<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="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
-		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
 		<method name="getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;" />
 		<method name="getGroupingSize()I" />
 		<method name="getMultiplier()I" />
@@ -36130,7 +36691,6 @@
 		<method name="getPositiveSuffix()Ljava/lang/String;" />
 		<method name="isDecimalSeparatorAlwaysShown()Z" />
 		<method name="isParseBigDecimal()Z" />
-		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;" />
 		<method name="setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V" />
 		<method name="setDecimalSeparatorAlwaysShown(Z)V" />
 		<method name="setGroupingSize(I)V" />
@@ -36145,11 +36705,10 @@
 	</class>
 	<class name="java/text/DecimalFormatSymbols" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getAvailableLocales()[Ljava/util/Locale;" since="9" />
 		<method name="getCurrency()Ljava/util/Currency;" />
 		<method name="getCurrencySymbol()Ljava/lang/String;" />
@@ -36198,10 +36757,9 @@
 	</class>
 	<class name="java/text/Format" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<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;" />
@@ -36217,7 +36775,6 @@
 		<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/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
 		<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;" />
@@ -36225,7 +36782,6 @@
 		<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="parseObject(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" />
@@ -36240,6 +36796,7 @@
 	</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>
@@ -36259,7 +36816,6 @@
 		<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="format(Ljava/lang/Object;Ljava/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;" />
@@ -36281,7 +36837,6 @@
 		<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="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
 		<method name="setCurrency(Ljava/util/Currency;)V" />
 		<method name="setGroupingUsed(Z)V" />
 		<method name="setMaximumFractionDigits(I)V" />
@@ -36324,12 +36879,9 @@
 	<class name="java/text/RuleBasedCollator" since="1">
 		<extends name="java/text/Collator" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="compare(Ljava/lang/String;Ljava/lang/String;)I" />
 		<method name="getCollationElementIterator(Ljava/lang/String;)Ljava/text/CollationElementIterator;" />
 		<method name="getCollationElementIterator(Ljava/text/CharacterIterator;)Ljava/text/CollationElementIterator;" />
-		<method name="getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey;" />
 		<method name="getRules()Ljava/lang/String;" />
-		<method name="hashCode()I" />
 	</class>
 	<class name="java/text/SimpleDateFormat" since="1">
 		<extends name="java/text/DateFormat" />
@@ -36339,10 +36891,8 @@
 		<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="format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
 		<method name="get2DigitYearStart()Ljava/util/Date;" />
 		<method name="getDateFormatSymbols()Ljava/text/DateFormatSymbols;" />
-		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;" />
 		<method name="set2DigitYearStart(Ljava/util/Date;)V" />
 		<method name="setDateFormatSymbols(Ljava/text/DateFormatSymbols;)V" />
 		<method name="toLocalizedPattern()Ljava/lang/String;" />
@@ -36354,103 +36904,47 @@
 		<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="clone()Ljava/lang/Object;" />
-		<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" />
 		<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" />
-		<method name="add(LE;)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="iterator()Ljava/util/Iterator;" />
-		<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([LT;)[LT;" />
 	</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="add(ILE;)V" />
-		<method name="addAll(ILjava/util/Collection;)Z" />
-		<method name="get(I)LE;" />
-		<method name="indexOf(Ljava/lang/Object;)I" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="lastIndexOf(Ljava/lang/Object;)I" />
-		<method name="listIterator()Ljava/util/ListIterator;" />
-		<method name="listIterator(I)Ljava/util/ListIterator;" />
-		<method name="remove(I)LE;" />
 		<method name="removeRange(II)V" />
-		<method name="set(ILE;)LE;" />
-		<method name="subList(II)Ljava/util/List;" />
 		<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" />
-		<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;)LV;" />
-		<method name="isEmpty()Z" />
-		<method name="keySet()Ljava/util/Set;" />
-		<method name="put(LK;LV;)LV;" />
-		<method name="putAll(Ljava/util/Map;)V" />
-		<method name="remove(Ljava/lang/Object;)LV;" />
-		<method name="size()I" />
-		<method name="values()Ljava/util/Collection;" />
 	</class>
 	<class name="java/util/AbstractMap$SimpleEntry" since="9">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/Map$Entry" />
 		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(LK;LV;)V" />
+		<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" />
-		<method name="getKey()LK;" />
-		<method name="getValue()LV;" />
-		<method name="setValue(LV;)LV;" />
 	</class>
 	<class name="java/util/AbstractMap$SimpleImmutableEntry" since="9">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/Map$Entry" />
 		<implements name="java/io/Serializable" />
-		<method name="&lt;init>(LK;LV;)V" />
+		<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" />
-		<method name="getKey()LK;" />
-		<method name="getValue()LV;" />
-		<method name="setValue(LV;)LV;" />
 	</class>
 	<class name="java/util/AbstractQueue" since="1">
 		<extends name="java/util/AbstractCollection" />
 		<implements name="java/util/Queue" />
 		<method name="&lt;init>()V" />
-		<method name="element()LE;" />
-		<method name="remove()LE;" />
 	</class>
 	<class name="java/util/AbstractSequentialList" since="1">
 		<extends name="java/util/AbstractList" />
 		<method name="&lt;init>()V" />
-		<method name="get(I)LE;" />
-		<method name="listIterator(I)Ljava/util/ListIterator;" />
 	</class>
 	<class name="java/util/AbstractSet" since="1">
 		<extends name="java/util/AbstractCollection" />
@@ -36459,56 +36953,30 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="addFirst(LE;)V" />
-		<method name="addLast(LE;)V" />
 		<method name="clone()Ljava/util/ArrayDeque;" />
-		<method name="descendingIterator()Ljava/util/Iterator;" />
-		<method name="element()LE;" />
-		<method name="getFirst()LE;" />
-		<method name="getLast()LE;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offerFirst(LE;)Z" />
-		<method name="offerLast(LE;)Z" />
-		<method name="peek()LE;" />
-		<method name="peekFirst()LE;" />
-		<method name="peekLast()LE;" />
-		<method name="poll()LE;" />
-		<method name="pollFirst()LE;" />
-		<method name="pollLast()LE;" />
-		<method name="pop()LE;" />
-		<method name="push(LE;)V" />
-		<method name="remove()LE;" />
-		<method name="removeFirst()LE;" />
-		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
-		<method name="removeLast()LE;" />
-		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
-		<method name="size()I" />
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="ensureCapacity(I)V" />
-		<method name="get(I)LE;" />
-		<method name="size()I" />
 		<method name="trimToSize()V" />
 	</class>
 	<class name="java/util/Arrays" since="1">
 		<extends name="java/lang/Object" />
-		<method name="asList([LT;)Ljava/util/List;" />
+		<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" />
@@ -36521,10 +36989,10 @@
 		<method name="binarySearch([IIII)I" since="9" />
 		<method name="binarySearch([JIIJ)I" since="9" />
 		<method name="binarySearch([JJ)I" />
-		<method name="binarySearch([LT;IILT;Ljava/util/Comparator;)I" since="9" />
-		<method name="binarySearch([LT;LT;Ljava/util/Comparator;)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" />
@@ -36533,8 +37001,8 @@
 		<method name="copyOf([FI)[F" since="9" />
 		<method name="copyOf([II)[I" since="9" />
 		<method name="copyOf([JI)[J" since="9" />
-		<method name="copyOf([LT;I)[LT;" since="9" />
-		<method name="copyOf([LU;ILjava/lang/Class;)[LT;" 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" />
@@ -36543,8 +37011,8 @@
 		<method name="copyOfRange([FII)[F" since="9" />
 		<method name="copyOfRange([III)[I" since="9" />
 		<method name="copyOfRange([JII)[J" since="9" />
-		<method name="copyOfRange([LT;II)[LT;" since="9" />
-		<method name="copyOfRange([LU;IILjava/lang/Class;)[LT;" 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" />
@@ -36598,10 +37066,10 @@
 		<method name="sort([III)V" />
 		<method name="sort([J)V" />
 		<method name="sort([JII)V" />
-		<method name="sort([LT;IILjava/util/Comparator;)V" />
-		<method name="sort([LT;Ljava/util/Comparator;)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;" />
@@ -36616,8 +37084,8 @@
 	</class>
 	<class name="java/util/BitSet" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<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" />
@@ -36626,7 +37094,6 @@
 		<method name="clear()V" />
 		<method name="clear(I)V" />
 		<method name="clear(II)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="flip(I)V" />
 		<method name="flip(II)V" />
 		<method name="get(I)Z" />
@@ -36646,9 +37113,9 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/util/TimeZone;Ljava/util/Locale;)V" />
 		<method name="add(II)V" />
@@ -36656,7 +37123,6 @@
 		<method name="before(Ljava/lang/Object;)Z" />
 		<method name="clear()V" />
 		<method name="clear(I)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="compareTo(Ljava/util/Calendar;)I" />
 		<method name="complete()V" />
 		<method name="computeFields()V" />
@@ -36746,29 +37212,28 @@
 		<field name="time" />
 	</class>
 	<class name="java/util/Collection" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/lang/Iterable" />
-		<method name="add(LE;)Z" />
+		<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="equals(Ljava/lang/Object;)Z" />
-		<method name="hashCode()I" />
 		<method name="isEmpty()Z" />
-		<method name="iterator()Ljava/util/Iterator;" />
 		<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([LT;)[LT;" />
+		<method name="toArray([Ljava/lang/Object;)[Ljava/lang/Object;" />
 	</class>
 	<class name="java/util/Collections" since="1">
 		<extends name="java/lang/Object" />
-		<method name="addAll(Ljava/util/Collection;[LT;)Z" />
+		<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;LT;)I" />
-		<method name="binarySearch(Ljava/util/List;LT;Ljava/util/Comparator;)I" />
+		<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;" />
@@ -36781,27 +37246,27 @@
 		<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;LT;)V" />
+		<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;)LT;" />
-		<method name="max(Ljava/util/Collection;Ljava/util/Comparator;)LT;" />
-		<method name="min(Ljava/util/Collection;)LT;" />
-		<method name="min(Ljava/util/Collection;Ljava/util/Comparator;)LT;" />
-		<method name="nCopies(ILT;)Ljava/util/List;" />
+		<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;LT;LT;)Z" />
+		<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(LE;)Ljava/util/Set;" />
-		<method name="singletonList(LE;)Ljava/util/List;" />
-		<method name="singletonMap(LK;LV;)Ljava/util/Map;" />
+		<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" />
@@ -36822,8 +37287,8 @@
 		<field name="EMPTY_SET" />
 	</class>
 	<class name="java/util/Comparator" since="1">
-		<method name="compare(LT;LT;)I" />
-		<method name="equals(Ljava/lang/Object;)Z" />
+		<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" />
@@ -36833,6 +37298,7 @@
 	<class name="java/util/Currency" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
 		<method name="getCurrencyCode()Ljava/lang/String;" />
 		<method name="getDefaultFractionDigits()I" />
 		<method name="getInstance(Ljava/lang/String;)Ljava/util/Currency;" />
@@ -36842,9 +37308,9 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(III)V" />
 		<method name="&lt;init>(IIIII)V" />
@@ -36854,7 +37320,6 @@
 		<method name="UTC(IIIIII)J" />
 		<method name="after(Ljava/util/Date;)Z" />
 		<method name="before(Ljava/util/Date;)Z" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="compareTo(Ljava/util/Date;)I" />
 		<method name="getDate()I" />
 		<method name="getDay()I" />
@@ -36877,44 +37342,35 @@
 		<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="add(LE;)Z" since="11" />
-		<method name="addFirst(LE;)V" />
-		<method name="addLast(LE;)V" />
-		<method name="contains(Ljava/lang/Object;)Z" since="11" />
+		<method name="addFirst(Ljava/lang/Object;)V" />
+		<method name="addLast(Ljava/lang/Object;)V" />
 		<method name="descendingIterator()Ljava/util/Iterator;" />
-		<method name="element()LE;" since="11" />
-		<method name="getFirst()LE;" />
-		<method name="getLast()LE;" />
-		<method name="iterator()Ljava/util/Iterator;" since="11" />
-		<method name="offer(LE;)Z" since="11" />
-		<method name="offerFirst(LE;)Z" />
-		<method name="offerLast(LE;)Z" />
-		<method name="peek()LE;" since="11" />
-		<method name="peekFirst()LE;" />
-		<method name="peekLast()LE;" />
-		<method name="poll()LE;" since="11" />
-		<method name="pollFirst()LE;" />
-		<method name="pollLast()LE;" />
-		<method name="pop()LE;" />
-		<method name="push(LE;)V" />
-		<method name="remove()LE;" since="11" />
-		<method name="remove(Ljava/lang/Object;)Z" since="11" />
-		<method name="removeFirst()LE;" />
+		<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()LE;" />
+		<method name="removeLast()Ljava/lang/Object;" />
 		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
-		<method name="size()I" since="11" />
 	</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;)LV;" />
+		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="isEmpty()Z" />
 		<method name="keys()Ljava/util/Enumeration;" />
-		<method name="put(LK;LV;)LV;" />
-		<method name="remove(Ljava/lang/Object;)LV;" />
+		<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">
@@ -36928,38 +37384,41 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<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="entrySet()Ljava/util/Set;" />
+		<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/lang/Cloneable" />
 		<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(LE;)Ljava/util/EnumSet;" />
-		<method name="of(LE;LE;)Ljava/util/EnumSet;" />
-		<method name="of(LE;LE;LE;)Ljava/util/EnumSet;" />
-		<method name="of(LE;LE;LE;LE;)Ljava/util/EnumSet;" />
-		<method name="of(LE;LE;LE;LE;LE;)Ljava/util/EnumSet;" />
-		<method name="of(LE;[LE;)Ljava/util/EnumSet;" />
-		<method name="range(LE;LE;)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()LE;" />
+		<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" />
@@ -36982,10 +37441,12 @@
 		<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" />
@@ -37008,8 +37469,6 @@
 		<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="close()V" />
-		<method name="flush()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;" />
@@ -37037,82 +37496,52 @@
 		<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="add(II)V" />
-		<method name="computeFields()V" />
-		<method name="computeTime()V" />
-		<method name="getGreatestMinimum(I)I" />
 		<method name="getGregorianChange()Ljava/util/Date;" />
-		<method name="getLeastMaximum(I)I" />
-		<method name="getMaximum(I)I" />
-		<method name="getMinimum(I)I" />
 		<method name="isLeapYear(I)Z" />
-		<method name="roll(IZ)V" />
 		<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" />
-		<implements name="java/io/Serializable" />
 		<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="clone()Ljava/lang/Object;" />
-		<method name="entrySet()Ljava/util/Set;" />
 	</class>
 	<class name="java/util/HashSet" since="1">
 		<extends name="java/util/AbstractSet" />
-		<implements name="java/lang/Cloneable" />
 		<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" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="size()I" />
 	</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" />
-		<implements name="java/io/Serializable" />
 		<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="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="contains(Ljava/lang/Object;)Z" />
-		<method name="containsKey(Ljava/lang/Object;)Z" />
-		<method name="containsValue(Ljava/lang/Object;)Z" />
-		<method name="elements()Ljava/util/Enumeration;" />
-		<method name="entrySet()Ljava/util/Set;" />
-		<method name="get(Ljava/lang/Object;)LV;" />
-		<method name="isEmpty()Z" />
-		<method name="keySet()Ljava/util/Set;" />
-		<method name="keys()Ljava/util/Enumeration;" />
-		<method name="put(LK;LV;)LV;" />
-		<method name="putAll(Ljava/util/Map;)V" />
 		<method name="rehash()V" />
-		<method name="remove(Ljava/lang/Object;)LV;" />
-		<method name="size()I" />
-		<method name="values()Ljava/util/Collection;" />
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="entrySet()Ljava/util/Set;" />
 	</class>
 	<class name="java/util/IllegalFormatCodePointException" since="1">
 		<extends name="java/util/IllegalFormatException" />
@@ -37130,6 +37559,7 @@
 	<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" />
@@ -37159,8 +37589,9 @@
 		<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()LE;" />
+		<method name="next()Ljava/lang/Object;" />
 		<method name="remove()V" />
 	</class>
 	<class name="java/util/LinkedHashMap" since="1">
@@ -37174,8 +37605,8 @@
 	</class>
 	<class name="java/util/LinkedHashSet" since="1">
 		<extends name="java/util/HashSet" />
-		<implements name="java/lang/Cloneable" />
 		<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" />
@@ -37184,94 +37615,56 @@
 	</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" />
-		<implements name="java/io/Serializable" />
-		<implements name="java/util/Deque" since="9" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="addFirst(LE;)V" />
-		<method name="addLast(LE;)V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="descendingIterator()Ljava/util/Iterator;" since="9" />
-		<method name="element()LE;" />
-		<method name="getFirst()LE;" />
-		<method name="getLast()LE;" />
-		<method name="listIterator(I)Ljava/util/ListIterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offerFirst(LE;)Z" since="9" />
-		<method name="offerLast(LE;)Z" since="9" />
-		<method name="peek()LE;" />
-		<method name="peekFirst()LE;" since="9" />
-		<method name="peekLast()LE;" since="9" />
-		<method name="poll()LE;" />
-		<method name="pollFirst()LE;" since="9" />
-		<method name="pollLast()LE;" since="9" />
-		<method name="pop()LE;" since="9" />
-		<method name="push(LE;)V" since="9" />
-		<method name="remove()LE;" />
-		<method name="removeFirst()LE;" />
-		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" since="9" />
-		<method name="removeLast()LE;" />
-		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" since="9" />
-		<method name="size()I" />
+		<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(ILE;)V" />
-		<method name="add(LE;)Z" />
+		<method name="add(ILjava/lang/Object;)V" />
 		<method name="addAll(ILjava/util/Collection;)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="equals(Ljava/lang/Object;)Z" />
-		<method name="get(I)LE;" />
-		<method name="hashCode()I" />
+		<method name="get(I)Ljava/lang/Object;" />
 		<method name="indexOf(Ljava/lang/Object;)I" />
-		<method name="isEmpty()Z" />
-		<method name="iterator()Ljava/util/Iterator;" />
 		<method name="lastIndexOf(Ljava/lang/Object;)I" />
 		<method name="listIterator()Ljava/util/ListIterator;" />
 		<method name="listIterator(I)Ljava/util/ListIterator;" />
-		<method name="remove(I)LE;" />
-		<method name="remove(Ljava/lang/Object;)Z" />
-		<method name="removeAll(Ljava/util/Collection;)Z" />
-		<method name="retainAll(Ljava/util/Collection;)Z" />
-		<method name="set(ILE;)LE;" />
-		<method name="size()I" />
+		<method name="remove(I)Ljava/lang/Object;" />
+		<method name="set(ILjava/lang/Object;)Ljava/lang/Object;" />
 		<method name="subList(II)Ljava/util/List;" />
-		<method name="toArray()[Ljava/lang/Object;" />
-		<method name="toArray([LT;)[LT;" />
 	</class>
 	<class name="java/util/ListIterator" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/util/Iterator" />
-		<method name="add(LE;)V" />
-		<method name="hasNext()Z" />
+		<method name="add(Ljava/lang/Object;)V" />
 		<method name="hasPrevious()Z" />
-		<method name="next()LE;" />
 		<method name="nextIndex()I" />
-		<method name="previous()LE;" />
+		<method name="previous()Ljava/lang/Object;" />
 		<method name="previousIndex()I" />
-		<method name="remove()V" />
-		<method name="set(LE;)V" />
+		<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;" />
-		<method name="getKeys()Ljava/util/Enumeration;" />
-		<method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;" />
 	</class>
 	<class name="java/util/Locale" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getAvailableLocales()[Ljava/util/Locale;" />
 		<method name="getCountry()Ljava/lang/String;" />
 		<method name="getDefault()Ljava/util/Locale;" />
@@ -37290,7 +37683,6 @@
 		<method name="getLanguage()Ljava/lang/String;" />
 		<method name="getVariant()Ljava/lang/String;" />
 		<method name="setDefault(Ljava/util/Locale;)V" />
-		<method name="toString()Ljava/lang/String;" />
 		<field name="CANADA" />
 		<field name="CANADA_FRENCH" />
 		<field name="CHINA" />
@@ -37315,27 +37707,25 @@
 		<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="equals(Ljava/lang/Object;)Z" />
-		<method name="get(Ljava/lang/Object;)LV;" />
-		<method name="hashCode()I" />
+		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="isEmpty()Z" />
 		<method name="keySet()Ljava/util/Set;" />
-		<method name="put(LK;LV;)LV;" />
+		<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;)LV;" />
+		<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">
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<method name="getKey()LK;" />
-		<method name="getValue()LV;" />
-		<method name="hashCode()I" />
-		<method name="setValue(LV;)LV;" />
+		<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" />
@@ -37354,46 +37744,41 @@
 		<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(LK;)Ljava/util/Map$Entry;" />
-		<method name="ceilingKey(LK;)LK;" />
+		<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(LK;)Ljava/util/Map$Entry;" />
-		<method name="floorKey(LK;)LK;" />
-		<method name="headMap(LK;)Ljava/util/SortedMap;" since="11" />
-		<method name="headMap(LK;Z)Ljava/util/NavigableMap;" />
-		<method name="higherEntry(LK;)Ljava/util/Map$Entry;" />
-		<method name="higherKey(LK;)LK;" />
+		<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(LK;)Ljava/util/Map$Entry;" />
-		<method name="lowerKey(LK;)LK;" />
+		<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(LK;LK;)Ljava/util/SortedMap;" since="11" />
-		<method name="subMap(LK;ZLK;Z)Ljava/util/NavigableMap;" />
-		<method name="tailMap(LK;)Ljava/util/SortedMap;" since="11" />
-		<method name="tailMap(LK;Z)Ljava/util/NavigableMap;" />
+		<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(LE;)LE;" />
+		<method name="ceiling(Ljava/lang/Object;)Ljava/lang/Object;" />
 		<method name="descendingIterator()Ljava/util/Iterator;" />
 		<method name="descendingSet()Ljava/util/NavigableSet;" />
-		<method name="floor(LE;)LE;" />
-		<method name="headSet(LE;)Ljava/util/SortedSet;" since="11" />
-		<method name="headSet(LE;Z)Ljava/util/NavigableSet;" />
-		<method name="higher(LE;)LE;" />
-		<method name="iterator()Ljava/util/Iterator;" since="11" />
-		<method name="lower(LE;)LE;" />
-		<method name="pollFirst()LE;" />
-		<method name="pollLast()LE;" />
-		<method name="subSet(LE;LE;)Ljava/util/SortedSet;" since="11" />
-		<method name="subSet(LE;ZLE;Z)Ljava/util/NavigableSet;" />
-		<method name="tailSet(LE;)Ljava/util/SortedSet;" since="11" />
-		<method name="tailSet(LE;Z)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" />
@@ -37414,6 +37799,7 @@
 		<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">
@@ -37426,11 +37812,6 @@
 		<method name="&lt;init>(Ljava/util/PriorityQueue;)V" />
 		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
 		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="size()I" />
 	</class>
 	<class name="java/util/Properties" since="1">
 		<extends name="java/util/Hashtable" />
@@ -37461,17 +37842,15 @@
 		<extends name="java/util/ResourceBundle" />
 		<method name="&lt;init>(Ljava/io/InputStream;)V" />
 		<method name="&lt;init>(Ljava/io/Reader;)V" since="9" />
-		<method name="getKeys()Ljava/util/Enumeration;" />
-		<method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;" />
 	</class>
 	<class name="java/util/Queue" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/util/Collection" />
-		<method name="add(LE;)Z" since="11" />
-		<method name="element()LE;" />
-		<method name="offer(LE;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="remove()LE;" />
+		<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" />
@@ -37490,6 +37869,7 @@
 		<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" />
@@ -37550,7 +37930,6 @@
 		<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()Z" />
 		<method name="hasNext(Ljava/lang/String;)Z" />
 		<method name="hasNext(Ljava/util/regex/Pattern;)Z" />
 		<method name="hasNextBigDecimal()Z" />
@@ -37590,7 +37969,6 @@
 		<method name="nextShort()S" />
 		<method name="nextShort(I)S" />
 		<method name="radix()I" />
-		<method name="remove()V" />
 		<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;" />
@@ -37607,29 +37985,15 @@
 	<class name="java/util/ServiceLoader" since="9">
 		<extends name="java/lang/Object" />
 		<implements name="java/lang/Iterable" />
-		<method name="iterator()Ljava/util/Iterator;" />
+		<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" />
-		<method name="add(LE;)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="equals(Ljava/lang/Object;)Z" />
-		<method name="hashCode()I" />
-		<method name="isEmpty()Z" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<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([LT;)[LT;" />
 	</class>
 	<class name="java/util/SimpleTimeZone" since="1">
 		<extends name="java/util/TimeZone" />
@@ -37637,48 +38001,45 @@
 		<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="getOffset(IIIIII)I" />
-		<method name="getRawOffset()I" />
-		<method name="inDaylightTime(Ljava/util/Date;)Z" />
 		<method name="setDSTSavings(I)V" />
 		<method name="setEndRule(III)V" />
 		<method name="setEndRule(IIII)V" />
 		<method name="setEndRule(IIIIZ)V" />
-		<method name="setRawOffset(I)V" />
 		<method name="setStartRule(III)V" />
 		<method name="setStartRule(IIII)V" />
 		<method name="setStartRule(IIIIZ)V" />
 		<method name="setStartYear(I)V" />
-		<method name="useDaylightTime()Z" />
 		<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()LK;" />
-		<method name="headMap(LK;)Ljava/util/SortedMap;" />
-		<method name="lastKey()LK;" />
-		<method name="subMap(LK;LK;)Ljava/util/SortedMap;" />
-		<method name="tailMap(LK;)Ljava/util/SortedMap;" />
+		<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()LE;" />
-		<method name="headSet(LE;)Ljava/util/SortedSet;" />
-		<method name="last()LE;" />
-		<method name="subSet(LE;LE;)Ljava/util/SortedSet;" />
-		<method name="tailSet(LE;)Ljava/util/SortedSet;" />
+		<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()LE;" />
-		<method name="pop()LE;" />
-		<method name="push(LE;)LE;" />
+		<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">
@@ -37688,18 +38049,15 @@
 		<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="hasMoreElements()Z" />
 		<method name="hasMoreTokens()Z" />
-		<method name="nextElement()Ljava/lang/Object;" />
 		<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/lang/Cloneable" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="getAvailableIDs()[Ljava/lang/String;" />
 		<method name="getAvailableIDs(I)[Ljava/lang/String;" />
 		<method name="getDSTSavings()I" />
@@ -37742,7 +38100,6 @@
 		<implements name="java/lang/Runnable" />
 		<method name="&lt;init>()V" />
 		<method name="cancel()Z" />
-		<method name="run()V" />
 		<method name="scheduledExecutionTime()J" />
 	</class>
 	<class name="java/util/TooManyListenersException" since="1">
@@ -37752,76 +38109,30 @@
 	</class>
 	<class name="java/util/TreeMap" since="1">
 		<extends name="java/util/AbstractMap" />
-		<implements name="java/lang/Cloneable" />
 		<implements name="java/io/Serializable" />
-		<implements name="java/util/SortedMap" />
+		<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" />
-		<method name="ceilingEntry(LK;)Ljava/util/Map$Entry;" since="9" />
-		<method name="ceilingKey(LK;)LK;" since="9" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="descendingKeySet()Ljava/util/NavigableSet;" since="9" />
-		<method name="descendingMap()Ljava/util/NavigableMap;" since="9" />
-		<method name="entrySet()Ljava/util/Set;" />
-		<method name="firstEntry()Ljava/util/Map$Entry;" since="9" />
-		<method name="firstKey()LK;" />
-		<method name="floorEntry(LK;)Ljava/util/Map$Entry;" since="9" />
-		<method name="floorKey(LK;)LK;" since="9" />
-		<method name="headMap(LK;)Ljava/util/SortedMap;" />
-		<method name="headMap(LK;Z)Ljava/util/NavigableMap;" since="9" />
-		<method name="higherEntry(LK;)Ljava/util/Map$Entry;" since="9" />
-		<method name="higherKey(LK;)LK;" since="9" />
-		<method name="lastEntry()Ljava/util/Map$Entry;" since="9" />
-		<method name="lastKey()LK;" />
-		<method name="lowerEntry(LK;)Ljava/util/Map$Entry;" since="9" />
-		<method name="lowerKey(LK;)LK;" since="9" />
-		<method name="navigableKeySet()Ljava/util/NavigableSet;" since="9" />
-		<method name="pollFirstEntry()Ljava/util/Map$Entry;" since="9" />
-		<method name="pollLastEntry()Ljava/util/Map$Entry;" since="9" />
-		<method name="subMap(LK;LK;)Ljava/util/SortedMap;" />
-		<method name="subMap(LK;ZLK;Z)Ljava/util/NavigableMap;" since="9" />
-		<method name="tailMap(LK;)Ljava/util/SortedMap;" />
-		<method name="tailMap(LK;Z)Ljava/util/NavigableMap;" since="9" />
 	</class>
 	<class name="java/util/TreeSet" since="1">
 		<extends name="java/util/AbstractSet" />
-		<implements name="java/lang/Cloneable" />
 		<implements name="java/io/Serializable" />
-		<implements name="java/util/SortedSet" />
+		<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" />
-		<method name="ceiling(LE;)LE;" since="9" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="descendingIterator()Ljava/util/Iterator;" since="9" />
-		<method name="descendingSet()Ljava/util/NavigableSet;" since="9" />
-		<method name="first()LE;" />
-		<method name="floor(LE;)LE;" since="9" />
-		<method name="headSet(LE;)Ljava/util/SortedSet;" />
-		<method name="headSet(LE;Z)Ljava/util/NavigableSet;" since="9" />
-		<method name="higher(LE;)LE;" since="9" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="last()LE;" />
-		<method name="lower(LE;)LE;" since="9" />
-		<method name="pollFirst()LE;" since="9" />
-		<method name="pollLast()LE;" since="9" />
-		<method name="size()I" />
-		<method name="subSet(LE;LE;)Ljava/util/SortedSet;" />
-		<method name="subSet(LE;ZLE;Z)Ljava/util/NavigableSet;" since="9" />
-		<method name="tailSet(LE;)Ljava/util/SortedSet;" />
-		<method name="tailSet(LE;Z)Ljava/util/NavigableSet;" since="9" />
 	</class>
 	<class name="java/util/UUID" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Comparable" />
 		<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" />
@@ -37847,33 +38158,30 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<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(LE;)V" />
+		<method name="addElement(Ljava/lang/Object;)V" />
 		<method name="capacity()I" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="copyInto([Ljava/lang/Object;)V" />
-		<method name="elementAt(I)LE;" />
+		<method name="elementAt(I)Ljava/lang/Object;" />
 		<method name="elements()Ljava/util/Enumeration;" />
 		<method name="ensureCapacity(I)V" />
-		<method name="firstElement()LE;" />
-		<method name="get(I)LE;" />
+		<method name="firstElement()Ljava/lang/Object;" />
 		<method name="indexOf(Ljava/lang/Object;I)I" />
-		<method name="insertElementAt(LE;I)V" />
-		<method name="lastElement()LE;" />
+		<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(LE;I)V" />
+		<method name="setElementAt(Ljava/lang/Object;I)V" />
 		<method name="setSize(I)V" />
-		<method name="size()I" />
 		<method name="trimToSize()V" />
 		<field name="capacityIncrement" />
 		<field name="elementCount" />
@@ -37886,88 +38194,45 @@
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(IF)V" />
 		<method name="&lt;init>(Ljava/util/Map;)V" />
-		<method name="entrySet()Ljava/util/Set;" />
 	</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="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;)LT;" />
-		<method name="invokeAny(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)LT;" />
-		<method name="newTaskFor(Ljava/lang/Runnable;LT;)Ljava/util/concurrent/RunnableFuture;" since="9" />
+		<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" />
-		<method name="submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/lang/Runnable;LT;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
 	</class>
 	<class name="java/util/concurrent/ArrayBlockingQueue" since="1">
 		<extends name="java/util/AbstractQueue" />
-		<implements name="java/util/concurrent/BlockingQueue" />
 		<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" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="put(LE;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="size()I" />
-		<method name="take()LE;" />
 	</class>
 	<class name="java/util/concurrent/BlockingDeque" since="9">
-		<implements name="java/util/concurrent/BlockingQueue" />
+		<extends name="java/lang/Object" />
 		<implements name="java/util/Deque" />
-		<method name="add(LE;)Z" />
-		<method name="addFirst(LE;)V" />
-		<method name="addLast(LE;)V" />
-		<method name="contains(Ljava/lang/Object;)Z" />
-		<method name="element()LE;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="offerFirst(LE;)Z" />
-		<method name="offerFirst(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="offerLast(LE;)Z" />
-		<method name="offerLast(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="pollFirst(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="pollLast(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="push(LE;)V" />
-		<method name="put(LE;)V" />
-		<method name="putFirst(LE;)V" />
-		<method name="putLast(LE;)V" />
-		<method name="remove()LE;" />
-		<method name="remove(Ljava/lang/Object;)Z" />
-		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
-		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
-		<method name="size()I" />
-		<method name="take()LE;" />
-		<method name="takeFirst()LE;" />
-		<method name="takeLast()LE;" />
+		<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="add(LE;)Z" />
-		<method name="contains(Ljava/lang/Object;)Z" since="5" />
 		<method name="drainTo(Ljava/util/Collection;)I" />
 		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="put(LE;)V" />
+		<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="remove(Ljava/lang/Object;)Z" since="5" />
-		<method name="take()LE;" />
+		<method name="take()Ljava/lang/Object;" />
 	</class>
 	<class name="java/util/concurrent/BrokenBarrierException" since="1">
 		<extends name="java/lang/Exception" />
@@ -37975,7 +38240,8 @@
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 	</class>
 	<class name="java/util/concurrent/Callable" since="1">
-		<method name="call()LV;" />
+		<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" />
@@ -37983,16 +38249,17 @@
 		<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;LV;)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/util/concurrent/ConcurrentMap" />
 		<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" />
@@ -38000,161 +38267,80 @@
 		<method name="&lt;init>(Ljava/util/Map;)V" />
 		<method name="contains(Ljava/lang/Object;)Z" />
 		<method name="elements()Ljava/util/Enumeration;" />
-		<method name="entrySet()Ljava/util/Set;" />
 		<method name="keys()Ljava/util/Enumeration;" />
-		<method name="putIfAbsent(LK;LV;)LV;" />
-		<method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="replace(LK;LV;)LV;" />
-		<method name="replace(LK;LV;LV;)Z" />
 	</class>
 	<class name="java/util/concurrent/ConcurrentLinkedQueue" since="1">
 		<extends name="java/util/AbstractQueue" />
-		<implements name="java/util/Queue" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/util/Queue" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="size()I" />
 	</class>
 	<class name="java/util/concurrent/ConcurrentMap" since="1">
+		<extends name="java/lang/Object" />
 		<implements name="java/util/Map" />
-		<method name="putIfAbsent(LK;LV;)LV;" />
+		<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(LK;LV;)LV;" />
-		<method name="replace(LK;LV;LV;)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">
-		<implements name="java/util/concurrent/ConcurrentMap" />
+		<extends name="java/lang/Object" />
 		<implements name="java/util/NavigableMap" />
-		<method name="descendingKeySet()Ljava/util/NavigableSet;" />
+		<implements name="java/util/concurrent/ConcurrentMap" />
 		<method name="descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="headMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="headMap(LK;Z)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="navigableKeySet()Ljava/util/NavigableSet;" />
-		<method name="subMap(LK;LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="subMap(LK;ZLK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="tailMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="tailMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<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" />
-		<implements name="java/io/Serializable" />
 		<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="ceilingEntry(LK;)Ljava/util/Map$Entry;" />
-		<method name="ceilingKey(LK;)LK;" />
 		<method name="clone()Ljava/util/concurrent/ConcurrentSkipListMap;" />
-		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="descendingKeySet()Ljava/util/NavigableSet;" />
-		<method name="descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="entrySet()Ljava/util/Set;" />
-		<method name="firstEntry()Ljava/util/Map$Entry;" />
-		<method name="firstKey()LK;" />
-		<method name="floorEntry(LK;)Ljava/util/Map$Entry;" />
-		<method name="floorKey(LK;)LK;" />
-		<method name="headMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="headMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="higherEntry(LK;)Ljava/util/Map$Entry;" />
-		<method name="higherKey(LK;)LK;" />
-		<method name="lastEntry()Ljava/util/Map$Entry;" />
-		<method name="lastKey()LK;" />
-		<method name="lowerEntry(LK;)Ljava/util/Map$Entry;" />
-		<method name="lowerKey(LK;)LK;" />
-		<method name="navigableKeySet()Ljava/util/NavigableSet;" />
-		<method name="pollFirstEntry()Ljava/util/Map$Entry;" />
-		<method name="pollLastEntry()Ljava/util/Map$Entry;" />
-		<method name="putIfAbsent(LK;LV;)LV;" />
-		<method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" />
-		<method name="replace(LK;LV;)LV;" />
-		<method name="replace(LK;LV;LV;)Z" />
-		<method name="subMap(LK;LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="subMap(LK;ZLK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="tailMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
-		<method name="tailMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
 	</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" />
-		<implements name="java/io/Serializable" />
 		<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="ceiling(LE;)LE;" />
 		<method name="clone()Ljava/util/concurrent/ConcurrentSkipListSet;" />
-		<method name="comparator()Ljava/util/Comparator;" />
-		<method name="descendingIterator()Ljava/util/Iterator;" />
-		<method name="descendingSet()Ljava/util/NavigableSet;" />
-		<method name="first()LE;" />
-		<method name="floor(LE;)LE;" />
-		<method name="headSet(LE;)Ljava/util/NavigableSet;" />
-		<method name="headSet(LE;Z)Ljava/util/NavigableSet;" />
-		<method name="higher(LE;)LE;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="last()LE;" />
-		<method name="lower(LE;)LE;" />
-		<method name="pollFirst()LE;" />
-		<method name="pollLast()LE;" />
-		<method name="size()I" />
-		<method name="subSet(LE;LE;)Ljava/util/NavigableSet;" />
-		<method name="subSet(LE;ZLE;Z)Ljava/util/NavigableSet;" />
-		<method name="tailSet(LE;)Ljava/util/NavigableSet;" />
-		<method name="tailSet(LE;Z)Ljava/util/NavigableSet;" />
+		<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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="&lt;init>([LE;)V" />
-		<method name="add(ILE;)V" />
-		<method name="add(LE;)Z" />
-		<method name="addAll(ILjava/util/Collection;)Z" />
-		<method name="addAll(Ljava/util/Collection;)Z" />
+		<method name="&lt;init>([Ljava/lang/Object;)V" />
 		<method name="addAllAbsent(Ljava/util/Collection;)I" />
-		<method name="addIfAbsent(LE;)Z" />
-		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="contains(Ljava/lang/Object;)Z" />
-		<method name="containsAll(Ljava/util/Collection;)Z" />
-		<method name="get(I)LE;" />
-		<method name="indexOf(LE;I)I" />
-		<method name="indexOf(Ljava/lang/Object;)I" />
-		<method name="isEmpty()Z" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="lastIndexOf(LE;I)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)LE;" />
-		<method name="remove(Ljava/lang/Object;)Z" />
-		<method name="removeAll(Ljava/util/Collection;)Z" />
-		<method name="retainAll(Ljava/util/Collection;)Z" />
-		<method name="set(ILE;)LE;" />
-		<method name="size()I" />
-		<method name="subList(II)Ljava/util/List;" />
-		<method name="toArray()[Ljava/lang/Object;" />
-		<method name="toArray([LT;)[LT;" />
+		<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" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="size()I" />
 	</class>
 	<class name="java/util/concurrent/CountDownLatch" since="1">
 		<extends name="java/lang/Object" />
@@ -38180,28 +38366,25 @@
 		<implements name="java/util/concurrent/BlockingQueue" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/util/Collection;)V" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="put(LE;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="size()I" />
-		<method name="take()LE;" />
+		<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(LV;)LV;" />
-		<method name="exchange(LV;JLjava/util/concurrent/TimeUnit;)LV;" />
+		<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" />
@@ -38211,6 +38394,7 @@
 		<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">
@@ -38218,31 +38402,28 @@
 		<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" />
-		<method name="poll()Ljava/util/concurrent/Future;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;" />
-		<method name="submit(Ljava/lang/Runnable;LV;)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/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;)LT;" />
-		<method name="invokeAny(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)LT;" />
+		<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;LT;)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;LT;)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;" />
@@ -38263,116 +38444,50 @@
 		<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()LV;" />
-		<method name="get(JLjava/util/concurrent/TimeUnit;)LV;" />
+		<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/util/concurrent/Future" />
 		<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;LV;)V" />
+		<method name="&lt;init>(Ljava/lang/Runnable;Ljava/lang/Object;)V" />
 		<method name="&lt;init>(Ljava/util/concurrent/Callable;)V" />
-		<method name="cancel(Z)Z" />
 		<method name="done()V" />
-		<method name="get()LV;" />
-		<method name="get(JLjava/util/concurrent/TimeUnit;)LV;" />
-		<method name="isCancelled()Z" />
-		<method name="isDone()Z" />
-		<method name="run()V" />
 		<method name="runAndReset()Z" />
-		<method name="set(LV;)V" />
+		<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/util/concurrent/BlockingDeque" />
 		<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" />
-		<method name="addFirst(LE;)V" />
-		<method name="addLast(LE;)V" />
-		<method name="descendingIterator()Ljava/util/Iterator;" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="getFirst()LE;" />
-		<method name="getLast()LE;" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="offerFirst(LE;)Z" />
-		<method name="offerFirst(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="offerLast(LE;)Z" />
-		<method name="offerLast(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="peekFirst()LE;" />
-		<method name="peekLast()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="pollFirst()LE;" />
-		<method name="pollFirst(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="pollLast()LE;" />
-		<method name="pollLast(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="pop()LE;" />
-		<method name="push(LE;)V" />
-		<method name="put(LE;)V" />
-		<method name="putFirst(LE;)V" />
-		<method name="putLast(LE;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="removeFirst()LE;" />
-		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
-		<method name="removeLast()LE;" />
-		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
-		<method name="size()I" />
-		<method name="take()LE;" />
-		<method name="takeFirst()LE;" />
-		<method name="takeLast()LE;" />
 	</class>
 	<class name="java/util/concurrent/LinkedBlockingQueue" since="1">
 		<extends name="java/util/AbstractQueue" />
-		<implements name="java/util/concurrent/BlockingQueue" />
 		<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" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="put(LE;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="size()I" />
-		<method name="take()LE;" />
 	</class>
 	<class name="java/util/concurrent/PriorityBlockingQueue" since="1">
 		<extends name="java/util/AbstractQueue" />
-		<implements name="java/util/concurrent/BlockingQueue" />
 		<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;" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="put(LE;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="size()I" />
-		<method name="take()LE;" />
 	</class>
 	<class name="java/util/concurrent/RejectedExecutionException" since="1">
 		<extends name="java/lang/RuntimeException" />
@@ -38382,19 +38497,22 @@
 		<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">
-		<implements name="java/util/concurrent/Future" />
+		<extends name="java/lang/Object" />
 		<implements name="java/lang/Runnable" />
-		<method name="run()V" />
+		<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;" />
@@ -38402,6 +38520,7 @@
 		<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>
@@ -38416,10 +38535,6 @@
 		<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="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;" />
 		<method name="setContinueExistingPeriodicTasksAfterShutdownPolicy(Z)V" />
 		<method name="setExecuteExistingDelayedTasksAfterShutdownPolicy(Z)V" />
 	</class>
@@ -38448,24 +38563,13 @@
 	</class>
 	<class name="java/util/concurrent/SynchronousQueue" since="1">
 		<extends name="java/util/AbstractQueue" />
-		<implements name="java/util/concurrent/BlockingQueue" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/util/concurrent/BlockingQueue" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Z)V" />
-		<method name="drainTo(Ljava/util/Collection;)I" />
-		<method name="drainTo(Ljava/util/Collection;I)I" />
-		<method name="iterator()Ljava/util/Iterator;" />
-		<method name="offer(LE;)Z" />
-		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
-		<method name="peek()LE;" />
-		<method name="poll()LE;" />
-		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
-		<method name="put(LE;)V" />
-		<method name="remainingCapacity()I" />
-		<method name="size()I" />
-		<method name="take()LE;" />
 	</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">
@@ -38477,9 +38581,7 @@
 		<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="awaitTermination(JLjava/util/concurrent/TimeUnit;)Z" />
 		<method name="beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V" />
-		<method name="execute(Ljava/lang/Runnable;)V" />
 		<method name="getActiveCount()I" />
 		<method name="getCompletedTaskCount()J" />
 		<method name="getCorePoolSize()I" />
@@ -38491,8 +38593,6 @@
 		<method name="getRejectedExecutionHandler()Ljava/util/concurrent/RejectedExecutionHandler;" />
 		<method name="getTaskCount()J" />
 		<method name="getThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
-		<method name="isShutdown()Z" />
-		<method name="isTerminated()Z" />
 		<method name="isTerminating()Z" />
 		<method name="prestartAllCoreThreads()I" />
 		<method name="prestartCoreThread()Z" />
@@ -38503,33 +38603,27 @@
 		<method name="setMaximumPoolSize(I)V" />
 		<method name="setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V" />
 		<method name="setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V" />
-		<method name="shutdown()V" />
-		<method name="shutdownNow()Ljava/util/List;" />
 		<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" />
-		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)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" />
-		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)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" />
-		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)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" />
-		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
 	</class>
 	<class name="java/util/concurrent/TimeUnit" since="1">
 		<extends name="java/lang/Enum" />
@@ -38579,17 +38673,13 @@
 		<method name="addAndGet(I)I" />
 		<method name="compareAndSet(II)Z" />
 		<method name="decrementAndGet()I" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
 		<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="intValue()I" />
 		<method name="lazySet(I)V" since="9" />
-		<method name="longValue()J" />
 		<method name="set(I)V" />
 		<method name="weakCompareAndSet(II)Z" />
 	</class>
@@ -38615,19 +38705,19 @@
 	<class name="java/util/concurrent/atomic/AtomicIntegerFieldUpdater" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="addAndGet(LT;I)I" />
-		<method name="compareAndSet(LT;II)Z" />
-		<method name="decrementAndGet(LT;)I" />
-		<method name="get(LT;)I" />
-		<method name="getAndAdd(LT;I)I" />
-		<method name="getAndDecrement(LT;)I" />
-		<method name="getAndIncrement(LT;)I" />
-		<method name="getAndSet(LT;I)I" />
-		<method name="incrementAndGet(LT;)I" />
-		<method name="lazySet(LT;I)V" since="9" />
+		<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(LT;I)V" />
-		<method name="weakCompareAndSet(LT;II)Z" />
+		<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" />
@@ -38637,17 +38727,13 @@
 		<method name="addAndGet(J)J" />
 		<method name="compareAndSet(JJ)Z" />
 		<method name="decrementAndGet()J" />
-		<method name="doubleValue()D" />
-		<method name="floatValue()F" />
 		<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="intValue()I" />
 		<method name="lazySet(J)V" since="9" />
-		<method name="longValue()J" />
 		<method name="set(J)V" />
 		<method name="weakCompareAndSet(JJ)Z" />
 	</class>
@@ -38673,77 +38759,77 @@
 	<class name="java/util/concurrent/atomic/AtomicLongFieldUpdater" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="addAndGet(LT;J)J" />
-		<method name="compareAndSet(LT;JJ)Z" />
-		<method name="decrementAndGet(LT;)J" />
-		<method name="get(LT;)J" />
-		<method name="getAndAdd(LT;J)J" />
-		<method name="getAndDecrement(LT;)J" />
-		<method name="getAndIncrement(LT;)J" />
-		<method name="getAndSet(LT;J)J" />
-		<method name="incrementAndGet(LT;)J" />
-		<method name="lazySet(LT;J)V" since="9" />
+		<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(LT;J)V" />
-		<method name="weakCompareAndSet(LT;JJ)Z" />
+		<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>(LV;Z)V" />
-		<method name="attemptMark(LV;Z)Z" />
-		<method name="compareAndSet(LV;LV;ZZ)Z" />
-		<method name="get([Z)LV;" />
-		<method name="getReference()LV;" />
+		<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(LV;Z)V" />
-		<method name="weakCompareAndSet(LV;LV;ZZ)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>(LV;)V" />
-		<method name="compareAndSet(LV;LV;)Z" />
-		<method name="get()LV;" />
-		<method name="getAndSet(LV;)LV;" />
-		<method name="lazySet(LV;)V" since="9" />
-		<method name="set(LV;)V" />
-		<method name="weakCompareAndSet(LV;LV;)Z" />
+		<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>([LE;)V" />
-		<method name="compareAndSet(ILE;LE;)Z" />
-		<method name="get(I)LE;" />
-		<method name="getAndSet(ILE;)LE;" />
-		<method name="lazySet(ILE;)V" since="9" />
+		<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(ILE;)V" />
-		<method name="weakCompareAndSet(ILE;LE;)Z" />
+		<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(LT;LV;LV;)Z" />
-		<method name="get(LT;)LV;" />
-		<method name="getAndSet(LT;LV;)LV;" />
-		<method name="lazySet(LT;LV;)V" since="9" />
+		<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(LT;LV;)V" />
-		<method name="weakCompareAndSet(LT;LV;LV;)Z" />
+		<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>(LV;I)V" />
-		<method name="attemptStamp(LV;I)Z" />
-		<method name="compareAndSet(LV;LV;II)Z" />
-		<method name="get([I)LV;" />
-		<method name="getReference()LV;" />
+		<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(LV;I)V" />
-		<method name="weakCompareAndSet(LV;LV;II)Z" />
+		<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" />
@@ -38787,23 +38873,16 @@
 	</class>
 	<class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject" since="9">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/locks/Condition" />
 		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<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" />
+		<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" />
-		<method name="signal()V" />
-		<method name="signalAll()V" />
 	</class>
 	<class name="java/util/concurrent/locks/AbstractQueuedSynchronizer" since="1">
 		<extends name="java/lang/Object" />
-		<extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="4" />
+		<extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="5" />
 		<implements name="java/io/Serializable" />
 		<method name="&lt;init>()V" />
 		<method name="acquire(I)V" />
@@ -38837,21 +38916,15 @@
 	</class>
 	<class name="java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/locks/Condition" />
 		<implements name="java/io/Serializable" />
-		<method name="&lt;init>()V" />
-		<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" />
+		<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" />
-		<method name="signal()V" />
-		<method name="signalAll()V" />
 	</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" />
@@ -38861,6 +38934,7 @@
 		<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;" />
@@ -38870,6 +38944,7 @@
 	</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" />
@@ -38880,13 +38955,14 @@
 		<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/util/concurrent/locks/Lock" />
 		<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" />
@@ -38901,17 +38977,11 @@
 		<method name="isFair()Z" />
 		<method name="isHeldByCurrentThread()Z" />
 		<method name="isLocked()Z" />
-		<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/ReentrantReadWriteLock" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/locks/ReadWriteLock" />
 		<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;" />
@@ -38935,29 +39005,17 @@
 	</class>
 	<class name="java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/locks/Lock" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/util/concurrent/locks/Lock" />
 		<method name="&lt;init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V" />
-		<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/ReentrantReadWriteLock$WriteLock" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/concurrent/locks/Lock" />
 		<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" />
-		<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/jar/Attributes" since="1">
 		<extends name="java/lang/Object" />
@@ -38966,22 +39024,9 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="&lt;init>(Ljava/util/jar/Attributes;)V" />
-		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<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="getValue(Ljava/lang/String;)Ljava/lang/String;" />
 		<method name="getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;" />
-		<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="putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
-		<method name="remove(Ljava/lang/Object;)Ljava/lang/Object;" />
-		<method name="size()I" />
-		<method name="values()Ljava/util/Collection;" />
 		<field name="map" />
 	</class>
 	<class name="java/util/jar/Attributes$Name" since="1">
@@ -39049,7 +39094,6 @@
 		<method name="&lt;init>(Ljava/io/InputStream;)V" />
 		<method name="&lt;init>(Ljava/util/jar/Manifest;)V" />
 		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes;" />
 		<method name="getEntries()Ljava/util/Map;" />
 		<method name="getMainAttributes()Ljava/util/jar/Attributes;" />
@@ -39058,10 +39102,12 @@
 	</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" />
@@ -39088,6 +39134,7 @@
 		<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" />
@@ -39123,6 +39170,7 @@
 		<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">
@@ -39162,7 +39210,6 @@
 		<method name="getResourceBundleName()Ljava/lang/String;" />
 		<method name="intValue()I" />
 		<method name="parse(Ljava/lang/String;)Ljava/util/logging/Level;" />
-		<method name="toString()Ljava/lang/String;" />
 		<field name="ALL" />
 		<field name="CONFIG" />
 		<field name="FINE" />
@@ -39271,6 +39318,7 @@
 		<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;" />
@@ -39278,25 +39326,21 @@
 	</class>
 	<class name="java/util/logging/LoggingPermission" since="1">
 		<extends name="java/security/BasicPermission" />
-		<implements name="java/security/Guard" />
 		<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="close()V" />
-		<method name="flush()V" />
 		<method name="getPushLevel()Ljava/util/logging/Level;" />
-		<method name="publish(Ljava/util/logging/LogRecord;)V" />
 		<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" />
-		<method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
 	</class>
 	<class name="java/util/logging/SocketHandler" since="1">
 		<extends name="java/util/logging/StreamHandler" />
@@ -39307,65 +39351,27 @@
 		<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="close()V" />
-		<method name="flush()V" />
-		<method name="publish(Ljava/util/logging/LogRecord;)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" />
-		<method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
 	</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="absolutePath()Ljava/lang/String;" />
-		<method name="addNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
-		<method name="addPreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
 		<method name="cachedChildren()[Ljava/util/prefs/AbstractPreferences;" />
 		<method name="childSpi(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;" />
-		<method name="childrenNames()[Ljava/lang/String;" />
 		<method name="childrenNamesSpi()[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="flushSpi()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="getChild(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;" />
-		<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="getSpi(Ljava/lang/String;)Ljava/lang/String;" />
 		<method name="isRemoved()Z" />
-		<method name="isUserNode()Z" />
-		<method name="keys()[Ljava/lang/String;" />
 		<method name="keysSpi()[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="putSpi(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="remove(Ljava/lang/String;)V" />
-		<method name="removeNode()V" />
-		<method name="removeNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
 		<method name="removeNodeSpi()V" />
-		<method name="removePreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
 		<method name="removeSpi(Ljava/lang/String;)V" />
-		<method name="sync()V" />
 		<method name="syncSpi()V" />
-		<method name="toString()Ljava/lang/String;" />
 		<field name="lock" />
 		<field name="newNode" />
 	</class>
@@ -39388,6 +39394,7 @@
 		<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" />
@@ -39401,6 +39408,7 @@
 		<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>
@@ -39443,7 +39451,6 @@
 		<method name="sync()V" />
 		<method name="systemNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;" />
 		<method name="systemRoot()Ljava/util/prefs/Preferences;" />
-		<method name="toString()Ljava/lang/String;" />
 		<method name="userNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;" />
 		<method name="userRoot()Ljava/util/prefs/Preferences;" />
 		<field name="MAX_KEY_LENGTH" />
@@ -39451,10 +39458,12 @@
 		<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;" />
@@ -39466,15 +39475,11 @@
 	<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="end()I" />
-		<method name="end(I)I" />
 		<method name="find()Z" />
 		<method name="find(I)Z" />
-		<method name="group()Ljava/lang/String;" />
-		<method name="group(I)Ljava/lang/String;" />
-		<method name="groupCount()I" />
 		<method name="hasAnchoringBounds()Z" />
 		<method name="hasTransparentBounds()Z" />
 		<method name="hitEnd()Z" />
@@ -39490,8 +39495,6 @@
 		<method name="requireEnd()Z" />
 		<method name="reset()Ljava/util/regex/Matcher;" />
 		<method name="reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;" />
-		<method name="start()I" />
-		<method name="start(I)I" />
 		<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;" />
@@ -39500,6 +39503,7 @@
 	<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" />
@@ -39529,21 +39533,13 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/util/zip/Checksum" />
 		<method name="&lt;init>()V" />
-		<method name="getValue()J" />
-		<method name="reset()V" />
-		<method name="update(I)V" />
 		<method name="update([B)V" />
-		<method name="update([BII)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="getValue()J" />
-		<method name="reset()V" />
-		<method name="update(I)V" />
 		<method name="update([B)V" />
-		<method name="update([BII)V" />
 	</class>
 	<class name="java/util/zip/CheckedInputStream" since="1">
 		<extends name="java/io/FilterInputStream" />
@@ -39556,6 +39552,7 @@
 		<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" />
@@ -39676,7 +39673,6 @@
 		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/util/zip/ZipEntry;)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="getComment()Ljava/lang/String;" />
 		<method name="getCompressedSize()J" />
 		<method name="getCrc()J" />
@@ -39924,7 +39920,6 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="doFinal()[B" />
 		<method name="doFinal([B)[B" />
 		<method name="doFinal([BI)V" />
@@ -39945,7 +39940,6 @@
 	<class name="javax/crypto/MacSpi" since="1">
 		<extends name="java/lang/Object" />
 		<method name="&lt;init>()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="engineDoFinal()[B" />
 		<method name="engineGetMacLength()I" />
 		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
@@ -39975,6 +39969,7 @@
 		<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>
@@ -40003,21 +39998,25 @@
 		<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">
-		<implements name="javax/crypto/interfaces/DHKey" />
+		<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">
-		<implements name="javax/crypto/interfaces/DHKey" />
+		<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" />
@@ -40144,18 +40143,17 @@
 	</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" />
-		<implements name="java/io/Serializable" />
 		<method name="&lt;init>([BIILjava/lang/String;)V" />
 		<method name="&lt;init>([BLjava/lang/String;)V" />
-		<method name="getAlgorithm()Ljava/lang/String;" />
-		<method name="getEncoded()[B" />
-		<method name="getFormat()Ljava/lang/String;" />
 	</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" />
@@ -40254,6 +40252,7 @@
 		<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>
@@ -40276,8 +40275,10 @@
 		<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" />
@@ -40641,11 +40642,13 @@
 		<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" />
@@ -40839,6 +40842,7 @@
 		<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" />
@@ -40879,6 +40883,7 @@
 		<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" />
@@ -41059,10 +41064,12 @@
 		<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">
@@ -41084,6 +41091,7 @@
 		<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" />
@@ -41113,6 +41121,7 @@
 		<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" />
@@ -41276,11 +41285,11 @@
 	<class name="javax/net/ssl/SSLServerSocketFactory" since="1">
 		<extends name="javax/net/ServerSocketFactory" />
 		<method name="&lt;init>()V" />
-		<method name="getDefault()Ljavax/net/ServerSocketFactory;" />
 		<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" />
@@ -41311,11 +41320,13 @@
 		<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" />
@@ -41355,11 +41366,11 @@
 		<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="getDefault()Ljavax/net/SocketFactory;" />
 		<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" />
@@ -41389,6 +41400,7 @@
 		<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;" />
@@ -41398,6 +41410,7 @@
 		<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" />
@@ -41414,31 +41427,24 @@
 		<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="equals(Ljava/lang/Object;)Z" />
-		<method name="getActions()Ljava/lang/String;" />
 		<method name="getCredentialClass()Ljava/lang/String;" />
 		<method name="getPrincipals()[[Ljava/lang/String;" />
-		<method name="hashCode()I" />
-		<method name="implies(Ljava/security/Permission;)Z" />
 	</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;)LT;" since="9" />
 		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;" />
-		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)LT;" since="9" />
 		<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;)LT;" since="9" />
 		<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;)LT;" since="9" />
 		<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;" />
@@ -41454,18 +41460,19 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/security/DomainCombiner" />
 		<method name="&lt;init>(Ljavax/security/auth/Subject;)V" />
-		<method name="combine([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;" />
 		<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="javax/security/auth/callback/Callback" />
 		<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" />
@@ -41486,14 +41493,13 @@
 	</class>
 	<class name="javax/security/auth/x500/X500Principal" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/security/Principal" />
 		<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;" />
 		<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" />
@@ -41505,7 +41511,6 @@
 		<method name="&lt;init>()V" />
 		<method name="getEncoded()[B" />
 		<method name="getPublicKey()Ljava/security/PublicKey;" />
-		<method name="toString()Ljava/lang/String;" />
 		<method name="verify(Ljava/security/PublicKey;)V" />
 		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
 	</class>
@@ -41552,6 +41557,7 @@
 		<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" />
@@ -41565,11 +41571,13 @@
 		<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" />
@@ -41579,8 +41587,9 @@
 		<method name="setLoginTimeout(I)V" />
 	</class>
 	<class name="javax/sql/DataSource" since="1">
-		<implements name="javax/sql/CommonDataSource" since="9" />
+		<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;" />
@@ -41589,6 +41598,7 @@
 		<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" />
@@ -41597,6 +41607,7 @@
 		<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" />
@@ -41720,6 +41731,7 @@
 		<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;" />
@@ -41727,12 +41739,14 @@
 		<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" />
@@ -41753,9 +41767,11 @@
 		<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">
@@ -41766,6 +41782,7 @@
 		<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" />
@@ -41795,6 +41812,7 @@
 	</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" />
@@ -41834,6 +41852,7 @@
 	</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">
@@ -41883,7 +41902,6 @@
 		<method name="getTimeInMillis(Ljava/util/Date;)J" />
 		<method name="getXMLSchemaType()Ljavax/xml/namespace/QName;" />
 		<method name="getYears()I" />
-		<method name="hashCode()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" />
@@ -41899,7 +41917,6 @@
 		<method name="&lt;init>()V" />
 		<method name="add(Ljavax/xml/datatype/Duration;)V" />
 		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="compare(Ljavax/xml/datatype/XMLGregorianCalendar;)I" />
 		<method name="getDay()I" />
 		<method name="getEon()Ljava/math/BigInteger;" />
@@ -41935,6 +41952,7 @@
 		<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;" />
@@ -41945,11 +41963,9 @@
 		<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="equals(Ljava/lang/Object;)Z" />
 		<method name="getLocalPart()Ljava/lang/String;" />
 		<method name="getNamespaceURI()Ljava/lang/String;" />
 		<method name="getPrefix()Ljava/lang/String;" />
-		<method name="hashCode()I" />
 		<method name="valueOf(Ljava/lang/String;)Ljavax/xml/namespace/QName;" />
 	</class>
 	<class name="javax/xml/parsers/DocumentBuilder" since="1">
@@ -42051,12 +42067,14 @@
 		<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" />
@@ -42069,22 +42087,26 @@
 		<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>
@@ -42154,9 +42176,11 @@
 		<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>
@@ -42170,10 +42194,8 @@
 		<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="getSystemId()Ljava/lang/String;" />
 		<method name="setNextSibling(Lorg/w3c/dom/Node;)V" />
 		<method name="setNode(Lorg/w3c/dom/Node;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
 		<field name="FEATURE" />
 	</class>
 	<class name="javax/xml/transform/dom/DOMSource" since="8">
@@ -42183,9 +42205,7 @@
 		<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="getSystemId()Ljava/lang/String;" />
 		<method name="setNode(Lorg/w3c/dom/Node;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
 		<field name="FEATURE" />
 	</class>
 	<class name="javax/xml/transform/sax/SAXResult" since="8">
@@ -42195,10 +42215,8 @@
 		<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="getSystemId()Ljava/lang/String;" />
 		<method name="setHandler(Lorg/xml/sax/ContentHandler;)V" />
 		<method name="setLexicalHandler(Lorg/xml/sax/ext/LexicalHandler;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
 		<field name="FEATURE" />
 	</class>
 	<class name="javax/xml/transform/sax/SAXSource" since="8">
@@ -42208,10 +42226,8 @@
 		<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="getSystemId()Ljava/lang/String;" />
 		<method name="getXMLReader()Lorg/xml/sax/XMLReader;" />
 		<method name="setInputSource(Lorg/xml/sax/InputSource;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
 		<method name="setXMLReader(Lorg/xml/sax/XMLReader;)V" />
 		<method name="sourceToInputSource(Ljavax/xml/transform/Source;)Lorg/xml/sax/InputSource;" />
 		<field name="FEATURE" />
@@ -42229,12 +42245,14 @@
 		<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" />
@@ -42252,11 +42270,9 @@
 		<method name="&lt;init>(Ljava/io/Writer;)V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="getOutputStream()Ljava/io/OutputStream;" />
-		<method name="getSystemId()Ljava/lang/String;" />
 		<method name="getWriter()Ljava/io/Writer;" />
 		<method name="setOutputStream(Ljava/io/OutputStream;)V" />
 		<method name="setSystemId(Ljava/io/File;)V" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
 		<method name="setWriter(Ljava/io/Writer;)V" />
 		<field name="FEATURE" />
 	</class>
@@ -42273,12 +42289,10 @@
 		<method name="getInputStream()Ljava/io/InputStream;" />
 		<method name="getPublicId()Ljava/lang/String;" />
 		<method name="getReader()Ljava/io/Reader;" />
-		<method name="getSystemId()Ljava/lang/String;" />
 		<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" />
-		<method name="setSystemId(Ljava/lang/String;)V" />
 		<field name="FEATURE" />
 	</class>
 	<class name="javax/xml/validation/Schema" since="8">
@@ -42352,6 +42366,7 @@
 		<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;" />
@@ -42367,6 +42382,7 @@
 	</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" />
@@ -42380,6 +42396,7 @@
 		<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;" />
@@ -42411,6 +42428,7 @@
 		<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">
@@ -42419,9 +42437,11 @@
 		<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">
@@ -42461,8 +42481,13 @@
 		<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" />
@@ -42470,11 +42495,15 @@
 	<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>
@@ -42483,11 +42512,9 @@
 		<implements name="junit/framework/Test" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="countTestCases()I" />
 		<method name="createResult()Ljunit/framework/TestResult;" />
 		<method name="getName()Ljava/lang/String;" />
 		<method name="run()Ljunit/framework/TestResult;" />
-		<method name="run(Ljunit/framework/TestResult;)V" />
 		<method name="runBare()V" />
 		<method name="runTest()V" />
 		<method name="setName(Ljava/lang/String;)V" />
@@ -42506,6 +42533,7 @@
 		<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" />
@@ -42542,28 +42570,26 @@
 		<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="countTestCases()I" />
 		<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="run(Ljunit/framework/TestResult;)V" />
 		<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="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
-		<method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V" />
 		<method name="clearStatus()V" />
 		<method name="elapsedTimeAsString(J)Ljava/lang/String;" />
-		<method name="endTest(Ljunit/framework/Test;)V" />
 		<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;" />
@@ -42581,7 +42607,6 @@
 		<method name="setPreference(Ljava/lang/String;Ljava/lang/String;)V" />
 		<method name="setPreferences(Ljava/util/Properties;)V" />
 		<method name="showStackRaw()Z" />
-		<method name="startTest(Ljunit/framework/Test;)V" />
 		<method name="testEnded(Ljava/lang/String;)V" />
 		<method name="testFailed(ILjunit/framework/Test;Ljava/lang/Throwable;)V" />
 		<method name="testStarted(Ljava/lang/String;)V" />
@@ -42590,14 +42615,17 @@
 		<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" />
@@ -42622,19 +42650,23 @@
 		<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;" />
@@ -42643,16 +42675,17 @@
 		<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="hasNext()Z" />
 		<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="hasNext()Z" />
 		<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" />
@@ -42662,6 +42695,7 @@
 		<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" />
@@ -42671,6 +42705,7 @@
 		<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" />
@@ -42679,6 +42714,7 @@
 		<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;" />
@@ -42690,6 +42726,7 @@
 		<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;" />
@@ -42708,7 +42745,6 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="getHostName()Ljava/lang/String;" />
 		<method name="getPort()I" />
 		<method name="getSchemeName()Ljava/lang/String;" />
@@ -42721,6 +42757,7 @@
 		<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" />
@@ -42728,6 +42765,7 @@
 		<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" />
@@ -42747,17 +42785,21 @@
 		<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;" />
@@ -42771,13 +42813,16 @@
 		<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" />
@@ -42786,6 +42831,7 @@
 		<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" />
@@ -42855,6 +42901,7 @@
 		<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>
@@ -42875,18 +42922,15 @@
 	</class>
 	<class name="org/apache/http/ProtocolVersion" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/lang/Cloneable" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>(Ljava/lang/String;II)V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="compareToVersion(Lorg/apache/http/ProtocolVersion;)I" />
-		<method name="equals(Ljava/lang/Object;)Z" />
 		<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="hashCode()I" />
 		<method name="isComparable(Lorg/apache/http/ProtocolVersion;)Z" />
 		<method name="lessEquals(Lorg/apache/http/ProtocolVersion;)Z" />
 		<field name="major" />
@@ -42894,21 +42938,24 @@
 		<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="hasNext()Z" />
 		<method name="nextToken()Ljava/lang/String;" />
 	</class>
 	<class name="org/apache/http/UnsupportedHttpVersionException" since="1">
@@ -42918,12 +42965,14 @@
 	</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;" />
@@ -42933,6 +42982,7 @@
 		<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">
@@ -42983,9 +43033,9 @@
 		<extends name="java/lang/Object" />
 		<implements name="java/security/Principal" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
-		<method name="getName()Ljava/lang/String;" />
 	</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>
@@ -43007,9 +43057,7 @@
 		<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="getPassword()Ljava/lang/String;" />
 		<method name="getUserName()Ljava/lang/String;" />
-		<method name="getUserPrincipal()Ljava/security/Principal;" />
 		<method name="getWorkstation()Ljava/lang/String;" />
 	</class>
 	<class name="org/apache/http/auth/NTUserPrincipal" since="1">
@@ -43017,7 +43065,6 @@
 		<implements name="java/security/Principal" />
 		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
 		<method name="getDomain()Ljava/lang/String;" />
-		<method name="getName()Ljava/lang/String;" />
 		<method name="getUsername()Ljava/lang/String;" />
 	</class>
 	<class name="org/apache/http/auth/UsernamePasswordCredentials" since="1">
@@ -43025,11 +43072,10 @@
 		<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="getPassword()Ljava/lang/String;" />
 		<method name="getUserName()Ljava/lang/String;" />
-		<method name="getUserPrincipal()Ljava/security/Principal;" />
 	</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">
@@ -43039,10 +43085,12 @@
 	</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;" />
@@ -43061,29 +43109,33 @@
 		<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;)LT;" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<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;)LT;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<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">
@@ -43103,16 +43155,20 @@
 		<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">
-		<method name="handleResponse(Lorg/apache/http/HttpResponse;)LT;" />
+		<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">
@@ -43121,6 +43177,7 @@
 		<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" />
@@ -43130,23 +43187,18 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<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" />
-		<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/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" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<field name="METHOD_NAME" />
 	</class>
 	<class name="org/apache/http/client/methods/HttpHead" since="1">
@@ -43154,7 +43206,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<field name="METHOD_NAME" />
 	</class>
 	<class name="org/apache/http/client/methods/HttpOptions" since="1">
@@ -43163,7 +43214,6 @@
 		<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;" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<field name="METHOD_NAME" />
 	</class>
 	<class name="org/apache/http/client/methods/HttpPost" since="1">
@@ -43171,7 +43221,6 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<field name="METHOD_NAME" />
 	</class>
 	<class name="org/apache/http/client/methods/HttpPut" since="1">
@@ -43179,24 +43228,14 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<field name="METHOD_NAME" />
 	</class>
 	<class name="org/apache/http/client/methods/HttpRequestBase" since="1">
 		<extends name="org/apache/http/message/AbstractHttpMessage" />
-		<implements name="org/apache/http/client/methods/AbortableHttpRequest" />
 		<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="abort()V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="getMethod()Ljava/lang/String;" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
-		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
-		<method name="getURI()Ljava/net/URI;" />
-		<method name="isAborted()Z" />
-		<method name="setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V" />
-		<method name="setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V" />
 		<method name="setURI(Ljava/net/URI;)V" />
 	</class>
 	<class name="org/apache/http/client/methods/HttpTrace" since="1">
@@ -43204,10 +43243,10 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Ljava/lang/String;)V" />
 		<method name="&lt;init>(Ljava/net/URI;)V" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<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;" />
@@ -43215,6 +43254,7 @@
 		<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" />
@@ -43226,11 +43266,13 @@
 	</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" />
@@ -43260,6 +43302,7 @@
 	</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" />
@@ -43268,6 +43311,7 @@
 	</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" />
@@ -43276,6 +43320,7 @@
 		<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" />
@@ -43301,38 +43346,35 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/HttpRequestInterceptor" />
 		<method name="&lt;init>()V" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)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;" />
@@ -43353,9 +43395,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/conn/EofSensorWatcher" />
 		<method name="&lt;init>(Lorg/apache/http/conn/ManagedClientConnection;Z)V" />
-		<method name="eofDetected(Ljava/io/InputStream;)Z" />
-		<method name="streamAbort(Ljava/io/InputStream;)Z" />
-		<method name="streamClosed(Ljava/io/InputStream;)Z" />
 		<field name="attemptReuse" />
 		<field name="managedConn" />
 	</class>
@@ -43364,16 +43403,12 @@
 		<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="abortConnection()V" />
-		<method name="eofDetected(Ljava/io/InputStream;)Z" />
-		<method name="releaseConnection()V" />
 		<method name="releaseManagedConnection()V" />
-		<method name="streamAbort(Ljava/io/InputStream;)Z" />
-		<method name="streamClosed(Ljava/io/InputStream;)Z" />
 		<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;" />
@@ -43382,14 +43417,17 @@
 		<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>
@@ -43399,6 +43437,7 @@
 		<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">
@@ -43407,6 +43446,7 @@
 		<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>
@@ -43414,16 +43454,14 @@
 		<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="abortConnection()V" />
 		<method name="checkAbort()V" />
 		<method name="checkClose()V" />
 		<method name="checkEOF(I)V" />
 		<method name="isReadAllowed()Z" />
-		<method name="read()I" />
-		<method name="releaseConnection()V" />
 		<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" />
@@ -43434,9 +43472,10 @@
 		<method name="getHost()Lorg/apache/http/HttpHost;" />
 	</class>
 	<class name="org/apache/http/conn/ManagedClientConnection" since="1">
-		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
+		<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;" />
@@ -43454,12 +43493,11 @@
 	<class name="org/apache/http/conn/MultihomePlainSocketFactory" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/conn/scheme/SocketFactory" />
-		<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="&lt;init>()V" />
 		<method name="getSocketFactory()Lorg/apache/http/conn/MultihomePlainSocketFactory;" />
-		<method name="isSecure(Ljava/net/Socket;)Z" />
 	</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;" />
@@ -43470,6 +43508,7 @@
 		<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">
@@ -43478,6 +43517,7 @@
 		<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" />
@@ -43502,6 +43542,7 @@
 		<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">
@@ -43510,13 +43551,13 @@
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(I)V" />
 		<method name="getDefaultMax()I" />
-		<method name="getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)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" />
@@ -43531,6 +43572,7 @@
 	<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;" />
@@ -43546,7 +43588,6 @@
 		<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="nextStep(Lorg/apache/http/conn/routing/RouteInfo;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">
@@ -43558,22 +43599,9 @@
 		<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" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<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="hashCode()I" />
-		<method name="isLayered()Z" />
-		<method name="isSecure()Z" />
-		<method name="isTunnelled()Z" />
-		<method name="toString()Ljava/lang/String;" />
 	</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" />
@@ -43584,9 +43612,11 @@
 		<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;" />
@@ -43618,32 +43648,20 @@
 		<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="clone()Ljava/lang/Object;" />
 		<method name="connectProxy(Lorg/apache/http/HttpHost;Z)V" />
 		<method name="connectTarget(Z)V" />
-		<method name="equals(Ljava/lang/Object;)Z" />
-		<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="hashCode()I" />
 		<method name="isConnected()Z" />
-		<method name="isLayered()Z" />
-		<method name="isSecure()Z" />
-		<method name="isTunnelled()Z" />
 		<method name="layerProtocol(Z)V" />
 		<method name="toRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<method name="toString()Ljava/lang/String;" />
 		<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>
@@ -43652,21 +43670,16 @@
 		<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="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="getSocketFactory()Lorg/apache/http/conn/scheme/PlainSocketFactory;" />
-		<method name="isSecure(Ljava/net/Socket;)Z" />
 	</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="equals(Ljava/lang/Object;)Z" />
 		<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" />
-		<method name="toString()Ljava/lang/String;" />
 	</class>
 	<class name="org/apache/http/conn/scheme/SchemeRegistry" since="1">
 		<extends name="java/lang/Object" />
@@ -43680,6 +43693,7 @@
 		<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" />
@@ -43692,22 +43706,15 @@
 		<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/security/cert/X509Certificate;)V" />
-		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z" />
-		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V" />
 		<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" />
-		<method name="toString()Ljava/lang/String;" />
-		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)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" />
-		<method name="toString()Ljava/lang/String;" />
-		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
 	</class>
 	<class name="org/apache/http/conn/ssl/SSLSocketFactory" since="1">
 		<extends name="java/lang/Object" />
@@ -43716,12 +43723,8 @@
 		<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="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="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
 		<method name="getHostnameVerifier()Lorg/apache/http/conn/ssl/X509HostnameVerifier;" />
 		<method name="getSocketFactory()Lorg/apache/http/conn/ssl/SSLSocketFactory;" />
-		<method name="isSecure(Ljava/net/Socket;)Z" />
 		<method name="setHostnameVerifier(Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V" />
 		<field name="ALLOW_ALL_HOSTNAME_VERIFIER" />
 		<field name="BROWSER_COMPATIBLE_HOSTNAME_VERIFIER" />
@@ -43733,24 +43736,24 @@
 	<class name="org/apache/http/conn/ssl/StrictHostnameVerifier" since="1">
 		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
 		<method name="&lt;init>()V" />
-		<method name="toString()Ljava/lang/String;" />
-		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)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/SSLSession;)Z" />
 		<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;" />
@@ -43766,6 +43769,7 @@
 		<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;" />
@@ -43780,14 +43784,15 @@
 		<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/util/Comparator" />
 		<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>
@@ -43801,12 +43806,13 @@
 	</class>
 	<class name="org/apache/http/cookie/CookiePathComparator" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="java/util/Comparator" />
 		<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;" />
@@ -43815,6 +43821,7 @@
 		<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">
@@ -43834,12 +43841,14 @@
 		<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" />
@@ -43850,12 +43859,14 @@
 		<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>
@@ -43869,10 +43880,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/HttpEntity" />
 		<method name="&lt;init>()V" />
-		<method name="consumeContent()V" />
-		<method name="getContentEncoding()Lorg/apache/http/Header;" />
-		<method name="getContentType()Lorg/apache/http/Header;" />
-		<method name="isChunked()Z" />
 		<method name="setChunked(Z)V" />
 		<method name="setContentEncoding(Ljava/lang/String;)V" />
 		<method name="setContentEncoding(Lorg/apache/http/Header;)V" />
@@ -43885,13 +43892,8 @@
 	<class name="org/apache/http/entity/BasicHttpEntity" since="1">
 		<extends name="org/apache/http/entity/AbstractHttpEntity" />
 		<method name="&lt;init>()V" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
 		<method name="setContent(Ljava/io/InputStream;)V" />
 		<method name="setContentLength(J)V" />
-		<method name="writeTo(Ljava/io/OutputStream;)V" />
 	</class>
 	<class name="org/apache/http/entity/BufferedHttpEntity" since="1">
 		<extends name="org/apache/http/entity/HttpEntityWrapper" />
@@ -43901,87 +43903,47 @@
 		<extends name="org/apache/http/entity/AbstractHttpEntity" />
 		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>([B)V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)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" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)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" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)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" />
-		<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" />
 		<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" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)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" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)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" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="getContent()Ljava/io/InputStream;" />
-		<method name="getContentLength()J" />
-		<method name="isRepeatable()Z" />
-		<method name="isStreaming()Z" />
-		<method name="writeTo(Ljava/io/OutputStream;)V" />
 		<field name="content" />
 	</class>
 	<class name="org/apache/http/impl/AbstractHttpClientConnection" since="1">
@@ -43995,15 +43957,7 @@
 		<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="flush()V" />
-		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
 		<method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="isResponseAvailable(I)Z" />
-		<method name="isStale()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/impl/AbstractHttpServerConnection" since="1">
 		<extends name="java/lang/Object" />
@@ -44016,33 +43970,22 @@
 		<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="flush()V" />
-		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
 		<method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="isStale()Z" />
-		<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/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;" />
-		<method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
 	</class>
 	<class name="org/apache/http/impl/DefaultHttpClientConnection" since="1">
 		<extends name="org/apache/http/impl/SocketHttpClientConnection" />
 		<method name="&lt;init>()V" />
-		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)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" />
-		<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/impl/DefaultHttpResponseFactory" since="1">
 		<extends name="java/lang/Object" />
@@ -44050,34 +43993,24 @@
 		<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;" />
-		<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;" />
 		<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" />
-		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)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" />
-		<method name="getReason(ILjava/util/Locale;)Ljava/lang/String;" />
 		<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="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="incrementRequestCount()V" />
 		<method name="incrementResponseCount()V" />
-		<method name="reset()V" />
 		<method name="setMetric(Ljava/lang/String;Ljava/lang/Object;)V" />
 		<field name="RECEIVED_BYTES_COUNT" />
 		<field name="REQUEST_COUNT" />
@@ -44088,47 +44021,26 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/ConnectionReuseStrategy" />
 		<method name="&lt;init>()V" />
-		<method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
 	</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="assertOpen()V" />
 		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="close()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="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
-		<method name="getRemotePort()I" />
 		<method name="getSocket()Ljava/net/Socket;" />
-		<method name="getSocketTimeout()I" />
-		<method name="isOpen()Z" />
-		<method name="setSocketTimeout(I)V" />
-		<method name="shutdown()V" />
 	</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="assertOpen()V" />
 		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
-		<method name="close()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="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
-		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
-		<method name="getRemotePort()I" />
 		<method name="getSocket()Ljava/net/Socket;" />
-		<method name="getSocketTimeout()I" />
-		<method name="isOpen()Z" />
-		<method name="setSocketTimeout(I)V" />
-		<method name="shutdown()V" />
 	</class>
 	<class name="org/apache/http/impl/auth/AuthSchemeBase" since="1">
 		<extends name="java/lang/Object" />
@@ -44136,40 +44048,30 @@
 		<method name="&lt;init>()V" />
 		<method name="isProxy()Z" />
 		<method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V" />
-		<method name="processChallenge(Lorg/apache/http/Header;)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;" />
-		<method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
-		<method name="getSchemeName()Ljava/lang/String;" />
-		<method name="isComplete()Z" />
-		<method name="isConnectionBased()Z" />
 	</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" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
 	</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="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
 		<method name="createCnonce()Ljava/lang/String;" />
-		<method name="getSchemeName()Ljava/lang/String;" />
-		<method name="isComplete()Z" />
-		<method name="isConnectionBased()Z" />
 		<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" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
 	</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>
@@ -44182,21 +44084,11 @@
 	<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" />
-		<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="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)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="getParameter(Ljava/lang/String;)Ljava/lang/String;" />
 		<method name="getParameters()Ljava/util/Map;" />
-		<method name="getRealm()Ljava/lang/String;" />
-		<method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V" />
 	</class>
 	<class name="org/apache/http/impl/auth/UnsupportedDigestAlgorithmException" since="1">
 		<extends name="java/lang/RuntimeException" />
@@ -44210,7 +44102,6 @@
 		<method name="&lt;init>()V" />
 		<method name="getAuthPreferences()Ljava/util/List;" />
 		<method name="parseChallenges([Lorg/apache/http/Header;)Ljava/util/Map;" />
-		<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/impl/client/AbstractHttpClient" since="1">
 		<extends name="java/lang/Object" />
@@ -44241,24 +44132,14 @@
 		<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="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;)LT;" />
-		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
-		<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;)LT;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
-		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
 		<method name="getAuthSchemes()Lorg/apache/http/auth/AuthSchemeRegistry;" />
 		<method name="getConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;" />
-		<method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
 		<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="getParams()Lorg/apache/http/params/HttpParams;" />
 		<method name="getProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
 		<method name="getRedirectHandler()Lorg/apache/http/client/RedirectHandler;" />
 		<method name="getRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;" />
@@ -44289,19 +44170,12 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/client/CookieStore" />
 		<method name="&lt;init>()V" />
-		<method name="addCookie(Lorg/apache/http/cookie/Cookie;)V" />
 		<method name="addCookies([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/impl/client/BasicCredentialsProvider" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/client/CredentialsProvider" />
 		<method name="&lt;init>()V" />
-		<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/impl/client/BasicResponseHandler" since="1">
 		<extends name="java/lang/Object" />
@@ -44314,14 +44188,10 @@
 		<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="copy()Lorg/apache/http/params/HttpParams;" />
 		<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="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
 		<method name="getRequestParams()Lorg/apache/http/params/HttpParams;" />
-		<method name="removeParameter(Ljava/lang/String;)Z" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
 		<field name="applicationParams" />
 		<field name="clientParams" />
 		<field name="overrideParams" />
@@ -44331,30 +44201,12 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/conn/ConnectionKeepAliveStrategy" />
 		<method name="&lt;init>()V" />
-		<method name="getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J" />
 	</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" />
-		<method name="createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry;" />
-		<method name="createClientConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
-		<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;" />
 	</class>
 	<class name="org/apache/http/impl/client/DefaultHttpRequestRetryHandler" since="1">
 		<extends name="java/lang/Object" />
@@ -44363,20 +44215,15 @@
 		<method name="&lt;init>(IZ)V" />
 		<method name="getRetryCount()I" />
 		<method name="isRequestSentRetryEnabled()Z" />
-		<method name="retryRequest(Ljava/io/IOException;ILorg/apache/http/protocol/HttpContext;)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" />
-		<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" />
 	</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" />
-		<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/impl/client/DefaultRequestDirector" since="1">
 		<extends name="java/lang/Object" />
@@ -44387,7 +44234,6 @@
 		<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="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
 		<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" />
@@ -44405,22 +44251,16 @@
 	<class name="org/apache/http/impl/client/DefaultTargetAuthenticationHandler" since="1">
 		<extends name="org/apache/http/impl/client/AbstractAuthenticationHandler" />
 		<method name="&lt;init>()V" />
-		<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" />
 	</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" />
-		<method name="getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;" />
 	</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" />
-		<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/impl/client/RedirectLocations" since="1">
 		<extends name="java/lang/Object" />
@@ -44433,15 +44273,9 @@
 		<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="abort()V" />
 		<method name="getExecCount()I" />
-		<method name="getMethod()Ljava/lang/String;" />
 		<method name="getOriginal()Lorg/apache/http/HttpRequest;" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
-		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
-		<method name="getURI()Ljava/net/URI;" />
 		<method name="incrementExecCount()V" />
-		<method name="isAborted()Z" />
 		<method name="isRepeatable()Z" />
 		<method name="resetHeaders()V" />
 		<method name="setMethod(Ljava/lang/String;)V" />
@@ -44465,34 +44299,11 @@
 		<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="abortConnection()V" />
 		<method name="assertNotAborted()V" />
 		<method name="assertValid(Lorg/apache/http/conn/OperatedClientConnection;)V" />
 		<method name="detach()V" />
-		<method name="flush()V" />
-		<method name="getLocalAddress()Ljava/net/InetAddress;" />
-		<method name="getLocalPort()I" />
 		<method name="getManager()Lorg/apache/http/conn/ClientConnectionManager;" />
-		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
-		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
-		<method name="getRemotePort()I" />
-		<method name="getSSLSession()Ljavax/net/ssl/SSLSession;" />
-		<method name="getSocketTimeout()I" />
 		<method name="getWrappedConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
-		<method name="isMarkedReusable()Z" />
-		<method name="isOpen()Z" />
-		<method name="isResponseAvailable(I)Z" />
-		<method name="isSecure()Z" />
-		<method name="isStale()Z" />
-		<method name="markReusable()V" />
-		<method name="receiveResponseEntity(Lorg/apache/http/HttpResponse;)V" />
-		<method name="receiveResponseHeader()Lorg/apache/http/HttpResponse;" />
-		<method name="releaseConnection()V" />
-		<method name="sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
-		<method name="sendRequestHeader(Lorg/apache/http/HttpRequest;)V" />
-		<method name="setIdleDuration(JLjava/util/concurrent/TimeUnit;)V" />
-		<method name="setSocketTimeout(I)V" />
-		<method name="unmarkReusable()V" />
 	</class>
 	<class name="org/apache/http/impl/conn/AbstractPoolEntry" since="1">
 		<extends name="java/lang/Object" />
@@ -44514,49 +44325,29 @@
 		<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" />
-		<method name="close()V" />
-		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
-		<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="shutdown()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="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" />
-		<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/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="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="prepareSocket(Ljava/net/Socket;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" />
 		<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" />
-		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
 		<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" />
-		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
 	</class>
 	<class name="org/apache/http/impl/conn/IdleConnectionHandler" since="1">
 		<extends name="java/lang/Object" />
@@ -44571,25 +44362,11 @@
 		<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" />
-		<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/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" />
-		<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/impl/conn/ProxySelectorRoutePlanner" since="1">
 		<extends name="java/lang/Object" />
@@ -44597,7 +44374,6 @@
 		<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="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
 		<method name="getHost(Ljava/net/InetSocketAddress;)Ljava/lang/String;" />
 		<method name="getProxySelector()Ljava/net/ProxySelector;" />
 		<method name="setProxySelector(Ljava/net/ProxySelector;)V" />
@@ -44609,15 +44385,9 @@
 		<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="closeExpiredConnections()V" />
-		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)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="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="revokeConnection()V" />
-		<method name="shutdown()V" />
 		<field name="MISUSE_MESSAGE" />
 		<field name="alwaysShutDown" />
 		<field name="connOperator" />
@@ -44630,11 +44400,11 @@
 	</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$PoolEntry;Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<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>()V" />
+		<method name="&lt;init>(Lorg/apache/http/impl/conn/SingleClientConnManager;)V" />
 		<method name="close()V" />
 		<method name="shutdown()V" />
 	</class>
@@ -44665,7 +44435,6 @@
 		<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="handleReference(Ljava/lang/ref/Reference;)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" />
@@ -44699,19 +44468,15 @@
 		<method name="createFreeConnQueue()Ljava/util/Queue;" />
 		<method name="createRouteToPoolMap()Ljava/util/Map;" />
 		<method name="createWaitingThreadQueue()Ljava/util/Queue;" />
-		<method name="deleteClosedConnections()V" />
 		<method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
 		<method name="deleteLeastUsedEntry()V" />
-		<method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)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="handleLostEntry(Lorg/apache/http/conn/routing/HttpRoute;)V" />
 		<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" />
-		<method name="requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest;" />
 		<field name="freeConnections" />
 		<field name="maxTotalConnections" />
 		<field name="operator" />
@@ -44719,17 +44484,18 @@
 		<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="run()V" />
 		<method name="shutdown()V" />
 		<field name="refHandler" />
 		<field name="refQueue" />
@@ -44762,16 +44528,10 @@
 		<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="closeExpiredConnections()V" />
-		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)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" />
-		<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" />
 		<field name="connOperator" />
 		<field name="connectionPool" />
 		<field name="schemeRegistry" />
@@ -44796,8 +44556,6 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
 		<method name="&lt;init>()V" />
-		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
-		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
 	</class>
 	<class name="org/apache/http/impl/cookie/AbstractCookieSpec" since="1">
 		<extends name="java/lang/Object" />
@@ -44810,120 +44568,71 @@
 	</class>
 	<class name="org/apache/http/impl/cookie/BasicClientCookie" since="1">
 		<extends name="java/lang/Object" />
-		<implements name="org/apache/http/cookie/ClientCookie" />
 		<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="clone()Ljava/lang/Object;" />
-		<method name="containsAttribute(Ljava/lang/String;)Z" />
-		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
-		<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" />
 		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
-		<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/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" />
-		<method name="setCommentURL(Ljava/lang/String;)V" />
-		<method name="setDiscard(Z)V" />
-		<method name="setPorts([I)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" />
-		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)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" />
-		<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/impl/cookie/BasicExpiresHandler" since="1">
 		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
 		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<method name="parse(Lorg/apache/http/cookie/SetCookie;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" />
-		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)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" />
-		<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/impl/cookie/BasicSecureHandler" since="1">
 		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
 		<method name="&lt;init>()V" />
-		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)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" />
-		<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/impl/cookie/BestMatchSpecFactory" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/cookie/CookieSpecFactory" />
 		<method name="&lt;init>()V" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
 	</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" />
-		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
-		<method name="getVersion()I" />
-		<method name="getVersionHeader()Lorg/apache/http/Header;" />
-		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
 		<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" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
 	</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="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
 		<method name="parse([Lorg/apache/http/HeaderElement;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/impl/cookie/DateParseException" since="1">
 		<extends name="java/lang/Exception" />
@@ -44932,6 +44641,7 @@
 	</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;" />
@@ -44956,80 +44666,54 @@
 		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>([Ljava/lang/String;)V" />
-		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
-		<method name="getVersion()I" />
-		<method name="getVersionHeader()Lorg/apache/http/Header;" />
-		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
 		<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" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
 	</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" />
-		<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/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="formatCookies(Ljava/util/List;)Ljava/util/List;" />
 		<method name="formatParamAsVer(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Ljava/lang/String;I)V" />
-		<method name="getVersion()I" />
-		<method name="getVersionHeader()Lorg/apache/http/Header;" />
-		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
 	</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" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
 	</class>
 	<class name="org/apache/http/impl/cookie/RFC2109VersionHandler" since="1">
 		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
 		<method name="&lt;init>()V" />
-		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)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" />
-		<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/impl/cookie/RFC2965DiscardAttributeHandler" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
 		<method name="&lt;init>()V" />
-		<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/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" />
-		<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/impl/cookie/RFC2965PortAttributeHandler" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
 		<method name="&lt;init>()V" />
-		<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/impl/cookie/RFC2965Spec" since="1">
 		<extends name="org/apache/http/impl/cookie/RFC2109Spec" />
@@ -45040,15 +44724,11 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/cookie/CookieSpecFactory" />
 		<method name="&lt;init>()V" />
-		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
 	</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" />
-		<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/impl/entity/EntityDeserializer" since="1">
 		<extends name="java/lang/Object" />
@@ -45066,19 +44746,16 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/entity/ContentLengthStrategy" />
 		<method name="&lt;init>()V" />
-		<method name="determineLength(Lorg/apache/http/HttpMessage;)J" />
 	</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" />
-		<method name="determineLength(Lorg/apache/http/HttpMessage;)J" />
 	</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="parse()Lorg/apache/http/HttpMessage;" />
 		<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" />
@@ -45087,7 +44764,6 @@
 		<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="write(Lorg/apache/http/HttpMessage;)V" />
 		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)V" />
 		<field name="lineBuf" />
 		<field name="lineFormatter" />
@@ -45098,34 +44774,20 @@
 		<implements name="org/apache/http/io/SessionInputBuffer" />
 		<method name="&lt;init>()V" />
 		<method name="fillBuffer()I" />
-		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
 		<method name="hasBufferedData()Z" />
 		<method name="init(Ljava/io/InputStream;ILorg/apache/http/params/HttpParams;)V" />
-		<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/impl/io/AbstractSessionOutputBuffer" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/io/SessionOutputBuffer" />
 		<method name="&lt;init>()V" />
-		<method name="flush()V" />
 		<method name="flushBuffer()V" />
-		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
 		<method name="init(Ljava/io/OutputStream;ILorg/apache/http/params/HttpParams;)V" />
-		<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/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;" />
-		<method name="read()I" />
 	</class>
 	<class name="org/apache/http/impl/io/ChunkedOutputStream" since="1">
 		<extends name="java/io/OutputStream" />
@@ -45134,78 +44796,70 @@
 		<method name="finish()V" />
 		<method name="flushCache()V" />
 		<method name="flushCacheWithAppend([BII)V" />
-		<method name="write(I)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" />
-		<method name="read()I" />
 	</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" />
-		<method name="write(I)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" />
-		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
 	</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" />
-		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)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" />
-		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
 	</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" />
-		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)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="getBytesTransferred()J" />
 		<method name="incrementBytesTransferred(J)V" />
-		<method name="reset()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" />
-		<method name="read()I" />
 	</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" />
-		<method name="write(I)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" />
-		<method name="isDataAvailable(I)Z" />
 	</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" />
@@ -45215,6 +44869,7 @@
 		<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" />
@@ -45228,22 +44883,6 @@
 		<implements name="org/apache/http/HttpMessage" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
-		<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="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" />
 		<field name="headergroup" />
 		<field name="params" />
 	</class>
@@ -45252,10 +44891,6 @@
 		<implements name="java/lang/Cloneable" />
 		<implements name="org/apache/http/Header" />
 		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="clone()Ljava/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/message/BasicHeaderElement" since="1">
 		<extends name="java/lang/Object" />
@@ -45263,23 +44898,12 @@
 		<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" />
-		<method name="clone()Ljava/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/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" />
-		<method name="hasNext()Z" />
-		<method name="next()Ljava/lang/Object;" />
-		<method name="nextElement()Lorg/apache/http/HeaderElement;" />
-		<method name="remove()V" />
 	</class>
 	<class name="org/apache/http/message/BasicHeaderIterator" since="1">
 		<extends name="java/lang/Object" />
@@ -45287,10 +44911,6 @@
 		<method name="&lt;init>([Lorg/apache/http/Header;Ljava/lang/String;)V" />
 		<method name="filterHeader(I)Z" />
 		<method name="findNext(I)I" />
-		<method name="hasNext()Z" />
-		<method name="next()Ljava/lang/Object;" />
-		<method name="nextHeader()Lorg/apache/http/Header;" />
-		<method name="remove()V" />
 		<field name="allHeaders" />
 		<field name="currentIndex" />
 		<field name="headerName" />
@@ -45304,13 +44924,9 @@
 		<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/util/CharArrayBuffer;[Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
 		<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="formatHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
 		<method name="formatNameValuePair(Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
-		<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;" />
 		<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" />
@@ -45325,14 +44941,10 @@
 		<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="parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement;" />
 		<method name="parseHeaderElement(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/HeaderElement;" />
-		<method name="parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)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;)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;" />
-		<method name="parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair;" />
 		<field name="DEFAULT" />
 	</class>
 	<class name="org/apache/http/message/BasicHttpEntityEnclosingRequest" since="1">
@@ -45341,9 +44953,6 @@
 		<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" />
-		<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/message/BasicHttpRequest" since="1">
 		<extends name="org/apache/http/message/AbstractHttpMessage" />
@@ -45351,8 +44960,6 @@
 		<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" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
-		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
 	</class>
 	<class name="org/apache/http/message/BasicHttpResponse" since="1">
 		<extends name="org/apache/http/message/AbstractHttpMessage" />
@@ -45360,35 +44967,20 @@
 		<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="getEntity()Lorg/apache/http/HttpEntity;" />
-		<method name="getLocale()Ljava/util/Locale;" />
-		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
 		<method name="getReason(I)Ljava/lang/String;" />
-		<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/message/BasicLineFormatter" since="1">
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/message/LineFormatter" />
 		<method name="&lt;init>()V" />
-		<method name="appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer;" />
 		<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="formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer;" />
 		<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="formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer;" />
 		<method name="formatStatusLine(Lorg/apache/http/StatusLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
-		<method name="formatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)Lorg/apache/http/util/CharArrayBuffer;" />
 		<method name="initBuffer(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/util/CharArrayBuffer;" />
 		<field name="DEFAULT" />
 	</class>
@@ -45400,15 +44992,10 @@
 		<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="hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z" />
 		<method name="parseHeader(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/Header;" />
-		<method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header;" />
 		<method name="parseProtocolVersion(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/ProtocolVersion;" />
-		<method name="parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion;" />
 		<method name="parseRequestLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/RequestLine;" />
-		<method name="parseRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/RequestLine;" />
 		<method name="parseStatusLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/StatusLine;" />
-		<method name="parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine;" />
 		<method name="skipWhitespace(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)V" />
 		<field name="DEFAULT" />
 		<field name="protocol" />
@@ -45419,10 +45006,6 @@
 		<method name="&lt;init>(Ljava/util/List;Ljava/lang/String;)V" />
 		<method name="filterHeader(I)Z" />
 		<method name="findNext(I)I" />
-		<method name="hasNext()Z" />
-		<method name="next()Ljava/lang/Object;" />
-		<method name="nextHeader()Lorg/apache/http/Header;" />
-		<method name="remove()V" />
 		<field name="allHeaders" />
 		<field name="currentIndex" />
 		<field name="headerName" />
@@ -45433,29 +45016,18 @@
 		<implements name="java/lang/Cloneable" />
 		<implements name="org/apache/http/NameValuePair" />
 		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getValue()Ljava/lang/String;" />
 	</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" />
-		<method name="clone()Ljava/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/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" />
-		<method name="clone()Ljava/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/message/BasicTokenIterator" since="1">
 		<extends name="java/lang/Object" />
@@ -45466,14 +45038,10 @@
 		<method name="findTokenEnd(I)I" />
 		<method name="findTokenSeparator(I)I" />
 		<method name="findTokenStart(I)I" />
-		<method name="hasNext()Z" />
 		<method name="isHttpSeparator(C)Z" />
 		<method name="isTokenChar(C)Z" />
 		<method name="isTokenSeparator(C)Z" />
 		<method name="isWhitespace(C)Z" />
-		<method name="next()Ljava/lang/Object;" />
-		<method name="nextToken()Ljava/lang/String;" />
-		<method name="remove()V" />
 		<field name="HTTP_SEPARATORS" />
 		<field name="currentHeader" />
 		<field name="currentToken" />
@@ -45485,12 +45053,6 @@
 		<implements name="java/lang/Cloneable" />
 		<implements name="org/apache/http/FormattedHeader" />
 		<method name="&lt;init>(Lorg/apache/http/util/CharArrayBuffer;)V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="getBuffer()Lorg/apache/http/util/CharArrayBuffer;" />
-		<method name="getElements()[Lorg/apache/http/HeaderElement;" />
-		<method name="getName()Ljava/lang/String;" />
-		<method name="getValue()Ljava/lang/String;" />
-		<method name="getValuePos()I" />
 	</class>
 	<class name="org/apache/http/message/HeaderGroup" since="1">
 		<extends name="java/lang/Object" />
@@ -45498,7 +45060,6 @@
 		<method name="&lt;init>()V" />
 		<method name="addHeader(Lorg/apache/http/Header;)V" />
 		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="containsHeader(Ljava/lang/String;)Z" />
 		<method name="copy()Lorg/apache/http/message/HeaderGroup;" />
 		<method name="getAllHeaders()[Lorg/apache/http/Header;" />
@@ -45513,24 +45074,28 @@
 		<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;" />
@@ -45550,34 +45115,20 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/params/HttpParams" />
 		<method name="&lt;init>()V" />
-		<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="isParameterFalse(Ljava/lang/String;)Z" />
-		<method name="isParameterTrue(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;" />
 	</class>
 	<class name="org/apache/http/params/BasicHttpParams" since="1">
 		<extends name="org/apache/http/params/AbstractHttpParams" />
-		<implements name="java/lang/Cloneable" />
 		<implements name="java/io/Serializable" />
+		<implements name="java/lang/Cloneable" />
 		<method name="&lt;init>()V" />
 		<method name="clear()V" />
-		<method name="clone()Ljava/lang/Object;" />
-		<method name="copy()Lorg/apache/http/params/HttpParams;" />
 		<method name="copyParams(Lorg/apache/http/params/HttpParams;)V" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
 		<method name="isParameterSet(Ljava/lang/String;)Z" />
 		<method name="isParameterSetLocally(Ljava/lang/String;)Z" />
-		<method name="removeParameter(Ljava/lang/String;)Z" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
 		<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" />
@@ -45588,6 +45139,7 @@
 		<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" />
@@ -45600,11 +45152,7 @@
 	<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="copy()Lorg/apache/http/params/HttpParams;" />
 		<method name="getDefaults()Lorg/apache/http/params/HttpParams;" />
-		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="removeParameter(Ljava/lang/String;)Z" />
-		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
 	</class>
 	<class name="org/apache/http/params/HttpAbstractParamBean" since="1">
 		<extends name="java/lang/Object" />
@@ -45624,6 +45172,7 @@
 	<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" />
@@ -45638,6 +45187,7 @@
 		<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" />
@@ -45665,6 +45215,7 @@
 	<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;" />
@@ -45681,9 +45232,6 @@
 		<implements name="org/apache/http/protocol/HttpContext" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
-		<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" />
 	</class>
 	<class name="org/apache/http/protocol/BasicHttpProcessor" since="1">
 		<extends name="java/lang/Object" />
@@ -45696,25 +45244,9 @@
 		<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="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="clearInterceptors()V" />
-		<method name="clearRequestInterceptors()V" />
-		<method name="clearResponseInterceptors()V" />
-		<method name="clone()Ljava/lang/Object;" />
 		<method name="copy()Lorg/apache/http/protocol/BasicHttpProcessor;" />
 		<method name="copyInterceptors(Lorg/apache/http/protocol/BasicHttpProcessor;)V" />
-		<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="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
-		<method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V" />
-		<method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V" />
-		<method name="setInterceptors(Ljava/util/List;)V" />
 		<field name="requestInterceptors" />
 		<field name="responseInterceptors" />
 	</class>
@@ -45722,12 +45254,10 @@
 		<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="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
 		<method name="getDefaults()Lorg/apache/http/protocol/HttpContext;" />
-		<method name="removeAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
 	</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" />
@@ -45737,6 +45267,7 @@
 	</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" />
@@ -45770,6 +45301,7 @@
 		<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" />
@@ -45783,9 +45315,11 @@
 		<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>
@@ -45800,22 +45334,24 @@
 		<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="lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler;" />
 		<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" />
@@ -45825,6 +45361,7 @@
 		<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" />
@@ -45851,61 +45388,51 @@
 		<extends name="java/lang/Object" />
 		<implements name="org/apache/http/HttpRequestInterceptor" />
 		<method name="&lt;init>()V" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)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" />
-		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
 	</class>
 	<class name="org/apache/http/protocol/SyncBasicHttpContext" since="1">
 		<extends name="org/apache/http/protocol/BasicHttpContext" />
@@ -45965,6 +45492,7 @@
 	</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;" />
@@ -45974,6 +45502,7 @@
 	</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;" />
@@ -45981,10 +45510,12 @@
 	</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" />
@@ -46136,6 +45667,7 @@
 		<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;" />
@@ -46146,9 +45678,11 @@
 		<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" />
@@ -46160,15 +45694,18 @@
 		<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;" />
@@ -46180,6 +45717,7 @@
 		<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">
@@ -46205,20 +45743,24 @@
 		<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" />
@@ -46227,11 +45769,13 @@
 		<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;" />
@@ -46266,9 +45810,11 @@
 		<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;" />
@@ -46278,6 +45824,7 @@
 		<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;" />
@@ -46301,6 +45848,7 @@
 		<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;" />
@@ -46310,9 +45858,11 @@
 		<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" />
@@ -46320,6 +45870,7 @@
 		<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;" />
@@ -46330,6 +45881,7 @@
 		<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" />
@@ -46387,21 +45939,25 @@
 		<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" />
@@ -46409,6 +45965,7 @@
 		<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" />
@@ -46418,6 +45975,7 @@
 		<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" />
@@ -46426,6 +45984,7 @@
 		<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;" />
@@ -46441,6 +46000,7 @@
 		<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" />
@@ -46459,6 +46019,7 @@
 		<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;" />
@@ -46469,6 +46030,7 @@
 		<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" />
@@ -46485,6 +46047,7 @@
 		<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" />
@@ -46494,9 +46057,11 @@
 		<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" />
@@ -46505,6 +46070,7 @@
 		<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;" />
@@ -46513,6 +46079,7 @@
 		<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" />
@@ -46527,6 +46094,7 @@
 		<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" />
@@ -46540,10 +46108,12 @@
 		<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" />
@@ -46554,9 +46124,11 @@
 		<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" />
@@ -46568,20 +46140,6 @@
 		<implements name="org/xml/sax/EntityResolver" />
 		<implements name="org/xml/sax/ErrorHandler" />
 		<method name="&lt;init>()V" />
-		<method name="characters([CII)V" />
-		<method name="endDocument()V" />
-		<method name="endElement(Ljava/lang/String;)V" />
-		<method name="error(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="ignorableWhitespace([CII)V" />
-		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
-		<method name="startDocument()V" />
-		<method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)V" />
-		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
 	</class>
 	<class name="org/xml/sax/InputSource" since="1">
 		<extends name="java/lang/Object" />
@@ -46601,12 +46159,14 @@
 		<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" />
@@ -46645,11 +46205,13 @@
 		<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;" />
@@ -46666,6 +46228,7 @@
 		<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" />
@@ -46679,16 +46242,11 @@
 		<implements name="org/xml/sax/ext/Attributes2" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/xml/sax/Attributes;)V" />
-		<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" />
 		<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" />
@@ -46700,26 +46258,15 @@
 		<implements name="org/xml/sax/ext/EntityResolver2" />
 		<implements name="org/xml/sax/ext/LexicalHandler" />
 		<method name="&lt;init>()V" />
-		<method name="attributeDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="comment([CII)V" />
-		<method name="elementDecl(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="endCDATA()V" />
-		<method name="endDTD()V" />
-		<method name="endEntity(Ljava/lang/String;)V" />
-		<method name="externalEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="getExternalSubset(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-		<method name="internalEntityDecl(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-		<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/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" />
@@ -46729,6 +46276,7 @@
 		<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;" />
@@ -46738,8 +46286,6 @@
 		<implements name="org/xml/sax/ext/Locator2" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/xml/sax/Locator;)V" />
-		<method name="getEncoding()Ljava/lang/String;" />
-		<method name="getXMLVersion()Ljava/lang/String;" />
 		<method name="setEncoding(Ljava/lang/String;)V" />
 		<method name="setXMLVersion(Ljava/lang/String;)V" />
 	</class>
@@ -46750,12 +46296,6 @@
 		<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="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;" />
 		<method name="removeAttribute(Ljava/lang/String;)V" />
 		<method name="setAttributeList(Lorg/xml/sax/AttributeList;)V" />
 	</class>
@@ -46766,18 +46306,6 @@
 		<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="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;" />
 		<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" />
@@ -46794,33 +46322,12 @@
 		<implements name="org/xml/sax/EntityResolver" />
 		<implements name="org/xml/sax/ErrorHandler" />
 		<method name="&lt;init>()V" />
-		<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="error(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="ignorableWhitespace([CII)V" />
-		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-		<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" />
-		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="warning(Lorg/xml/sax/SAXParseException;)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="getColumnNumber()I" />
-		<method name="getLineNumber()I" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getSystemId()Ljava/lang/String;" />
 		<method name="setColumnNumber(I)V" />
 		<method name="setLineNumber(I)V" />
 		<method name="setPublicId(Ljava/lang/String;)V" />
@@ -46850,31 +46357,10 @@
 		<implements name="org/xml/sax/XMLReader" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/xml/sax/Parser;)V" />
-		<method name="characters([CII)V" />
-		<method name="endDocument()V" />
-		<method name="endElement(Ljava/lang/String;)V" />
-		<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="ignorableWhitespace([CII)V" />
-		<method name="parse(Ljava/lang/String;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
-		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
-		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)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" />
-		<method name="startDocument()V" />
-		<method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)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>
@@ -46887,39 +46373,6 @@
 		<implements name="org/xml/sax/XMLFilter" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/xml/sax/XMLReader;)V" />
-		<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="error(Lorg/xml/sax/SAXParseException;)V" />
-		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
-		<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="getParent()Lorg/xml/sax/XMLReader;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="ignorableWhitespace([CII)V" />
-		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="parse(Ljava/lang/String;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
-		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
-		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
-		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)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="setParent(Lorg/xml/sax/XMLReader;)V" />
-		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)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" />
-		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
 	</class>
 	<class name="org/xml/sax/helpers/XMLReaderAdapter" since="1">
 		<extends name="java/lang/Object" />
@@ -46927,31 +46380,15 @@
 		<implements name="org/xml/sax/Parser" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/xml/sax/XMLReader;)V" />
-		<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="parse(Ljava/lang/String;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;)V" />
-		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
-		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
-		<method name="setDocumentHandler(Lorg/xml/sax/DocumentHandler;)V" />
-		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
-		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
-		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
-		<method name="setLocale(Ljava/util/Locale;)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/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;" />
@@ -47038,6 +46475,7 @@
 		<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" />
@@ -47071,37 +46509,7 @@
 		<implements name="org/xml/sax/XMLReader" />
 		<method name="&lt;init>()V" />
 		<method name="&lt;init>(Lorg/xmlpull/v1/XmlPullParser;)V" />
-		<method name="getColumnNumber()I" />
-		<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="getIndex(Ljava/lang/String;)I" />
-		<method name="getIndex(Ljava/lang/String;Ljava/lang/String;)I" />
-		<method name="getLength()I" />
-		<method name="getLineNumber()I" />
-		<method name="getLocalName(I)Ljava/lang/String;" />
-		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
-		<method name="getPublicId()Ljava/lang/String;" />
-		<method name="getQName(I)Ljava/lang/String;" />
-		<method name="getSystemId()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;" />
-		<method name="parse(Ljava/lang/String;)V" />
-		<method name="parse(Lorg/xml/sax/InputSource;)V" />
 		<method name="parseSubTree(Lorg/xmlpull/v1/XmlPullParser;)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" />
 		<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" />
diff --git a/sdk/images_armeabi-v7a_source.prop_template b/sdk/images_armeabi-v7a_source.prop_template
index ae67647..86fc2a0 100644
--- a/sdk/images_armeabi-v7a_source.prop_template
+++ b/sdk/images_armeabi-v7a_source.prop_template
@@ -4,3 +4,4 @@
 AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
 AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
 SystemImage.Abi=armeabi-v7a
+SystemImage.GpuSupport=true
diff --git a/sdk/images_armeabi_source.prop_template b/sdk/images_armeabi_source.prop_template
index b100e53..8644d10 100644
--- a/sdk/images_armeabi_source.prop_template
+++ b/sdk/images_armeabi_source.prop_template
@@ -4,3 +4,4 @@
 AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
 AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
 SystemImage.Abi=armeabi
+SystemImage.GpuSupport=true
diff --git a/sdk/images_x86_source.prop_template b/sdk/images_x86_source.prop_template
index 62e2e0d..a587cd1 100644
--- a/sdk/images_x86_source.prop_template
+++ b/sdk/images_x86_source.prop_template
@@ -4,3 +4,4 @@
 AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
 AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
 SystemImage.Abi=x86
+SystemImage.GpuSupport=true
diff --git a/sdk/prebuilt/v7/gridlayout/.classpath b/sdk/prebuilt/v7/gridlayout/.classpath
deleted file mode 100644
index a4f1e40..0000000
--- a/sdk/prebuilt/v7/gridlayout/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="src" path="gen"/>

-	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>

-	<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>

-	<classpathentry kind="output" path="bin/classes"/>

-</classpath>

diff --git a/sdk/prebuilt/v7/gridlayout/.project b/sdk/prebuilt/v7/gridlayout/.project
deleted file mode 100644
index ed51f1d..0000000
--- a/sdk/prebuilt/v7/gridlayout/.project
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>gridlayout_v7</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-		<buildCommand>

-			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>org.eclipse.jdt.core.javabuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-		<buildCommand>

-			<name>com.android.ide.eclipse.adt.ApkBuilder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-	</buildSpec>

-	<natures>

-		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>

-		<nature>org.eclipse.jdt.core.javanature</nature>

-	</natures>

-</projectDescription>

diff --git a/sdk/prebuilt/v7/gridlayout/AndroidManifest.xml b/sdk/prebuilt/v7/gridlayout/AndroidManifest.xml
deleted file mode 100644
index c3f7168..0000000
--- a/sdk/prebuilt/v7/gridlayout/AndroidManifest.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.support.v7.gridlayout"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <uses-sdk android:minSdkVersion="7" />
-
-</manifest>
diff --git a/sdk/prebuilt/v7/gridlayout/README.txt b/sdk/prebuilt/v7/gridlayout/README.txt
deleted file mode 100644
index 86853b0..0000000
--- a/sdk/prebuilt/v7/gridlayout/README.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-Library Project including GridLayout.
-
-This can be used by an Android project to provide
-access to GridLayout on applications running on API 7+
-
-There is technically no source, but the src folder is necessary
-to ensure that the build system works. The content is actually
-located in libs/android-support-v7-gridlayout.jar
diff --git a/sdk/prebuilt/v7/gridlayout/libs/android-support-v7-gridlayout.jar b/sdk/prebuilt/v7/gridlayout/libs/android-support-v7-gridlayout.jar
deleted file mode 100644
index ecef47d..0000000
--- a/sdk/prebuilt/v7/gridlayout/libs/android-support-v7-gridlayout.jar
+++ /dev/null
Binary files differ
diff --git a/sdk/prebuilt/v7/gridlayout/project.properties b/sdk/prebuilt/v7/gridlayout/project.properties
deleted file mode 100644
index 5ca3505..0000000
--- a/sdk/prebuilt/v7/gridlayout/project.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# 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-7
-android.library=true
diff --git a/sdk/prebuilt/v7/gridlayout/res/values/attrs.xml b/sdk/prebuilt/v7/gridlayout/res/values/attrs.xml
deleted file mode 100644
index ad2ef4e..0000000
--- a/sdk/prebuilt/v7/gridlayout/res/values/attrs.xml
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-
-    <declare-styleable name="GridLayout">
-
-        <!--
-              support versions. All attributes not present in ViewGroup/View are
-              redefined in the support library namespace.
-        -->
-
-
-        <!--
-        The orientation property is not used during layout. It is only used to
-        allocate row and column parameters when they are not specified by its children's
-        layout parameters. GridLayout works like LinearLayout in this case;
-        putting all the components either in a single row or in a single column -
-        depending on the value of this flag. In the horizontal case, a columnCount
-        property may be additionally supplied to force new rows to be created when a
-        row is full. The rowCount attribute may be used similarly in the vertical case.
-        The default is horizontal.
-        -->
-        <attr name="orientation">
-
-            <!-- Defines an horizontal widget. -->
-            <enum name="horizontal" value="0" />
-            <!-- Defines a vertical widget. -->
-            <enum name="vertical" value="1" />
-        </attr>
-        <!-- The maximum number of rows to create when automatically positioning children. -->
-        <attr name="rowCount" format="integer" />
-        <!-- The maximum number of columns to create when automatically positioning children. -->
-        <attr name="columnCount" format="integer" />
-        <!--
-        When set to true, tells GridLayout to use default margins when none are specified
-        in a view's layout parameters.
-        The default value is false.
-        See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}.
-        -->
-        <attr name="useDefaultMargins" format="boolean" />
-        <!--
-        When set to alignMargins, causes alignment to take place between the outer
-        boundary of a view, as defined by its margins. When set to alignBounds,
-        causes alignment to take place between the edges of the view.
-        The default is alignMargins.
-        See {@link android.widget.GridLayout#setAlignmentMode(int)}.
-        -->
-        <attr name="alignmentMode">
-
-            <!--
-            Align the bounds of the children.
-            See {@link android.widget.GridLayout#ALIGN_BOUNDS}.
-            -->
-            <enum name="alignBounds" value="0" />
-            <!--
-            Align the margins of the children.
-            See {@link android.widget.GridLayout#ALIGN_MARGINS}.
-            -->
-            <enum name="alignMargins" value="1" />
-        </attr>
-        <!--
-        When set to true, forces row boundaries to appear in the same order
-        as row indices.
-        The default is true.
-        See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}.
-        -->
-        <attr name="rowOrderPreserved" format="boolean" />
-        <!--
-        When set to true, forces column boundaries to appear in the same order
-        as column indices.
-        The default is true.
-        See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}.
-        -->
-        <attr name="columnOrderPreserved" format="boolean" />
-    </declare-styleable>
-    <declare-styleable name="GridLayout_Layout">
-
-        <!--
-              support versions. All attributes not present in MarginLayout are
-              redefined in the support library name space.
-        -->
-
-
-        <!-- START MarginLayout layoutparams -->
-
-        <attr name="android:layout_width" />
-        <attr name="android:layout_height" />
-        <!--
-              Specifies extra space on the left, top, right and bottom
-              sides of this view. This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_margin" />
-        <!--
-              Specifies extra space on the left side of this view.
-              This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_marginLeft" />
-        <!--
-              Specifies extra space on the top side of this view.
-              This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_marginTop" />
-        <!--
-              Specifies extra space on the right side of this view.
-              This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_marginRight" />
-        <!--
-              Specifies extra space on the bottom side of this view.
-              This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_marginBottom" />
-        <!--
-              Specifies extra space on the start side of this view.
-              This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_marginStart" />
-        <!--
-              Specifies extra space on the end side of this view.
-              This space is outside this view's bounds.
-        -->
-        <attr name="android:layout_marginEnd" />
-
-        <!-- END MarginLayout layoutparams -->
-
-
-        <!--
-        The row boundary delimiting the top of the group of cells
-        occupied by this view.
-        -->
-        <attr name="layout_row" format="integer" />
-        <!--
-        The row span: the difference between the bottom and top
-        boundaries delimiting the group of cells occupied by this view.
-        The default is one.
-        See {@link android.widget.GridLayout.Spec}.
-        -->
-        <attr name="layout_rowSpan" format="integer" min="1" />
-        <!--
-        The column boundary delimiting the left of the group of cells
-        occupied by this view.
-        -->
-        <attr name="layout_column" format="integer" />
-        <!--
-        The column span: the difference between the right and left
-        boundaries delimiting the group of cells occupied by this view.
-        The default is one.
-        See {@link android.widget.GridLayout.Spec}.
-        -->
-        <attr name="layout_columnSpan" format="integer" min="1" />
-        <!--
-        Gravity specifies how a component should be placed in its group of cells.
-        The default is LEFT | BASELINE.
-        See {@link android.widget.GridLayout.LayoutParams#setGravity(int)}.
-        -->
-        <attr name="layout_gravity">
-
-            <!-- Push object to the top of its container, not changing its size. -->
-            <flag name="top" value="0x30" />
-            <!-- Push object to the bottom of its container, not changing its size. -->
-            <flag name="bottom" value="0x50" />
-            <!-- Push object to the left of its container, not changing its size. -->
-            <flag name="left" value="0x03" />
-            <!-- Push object to the right of its container, not changing its size. -->
-            <flag name="right" value="0x05" />
-            <!-- Place object in the vertical center of its container, not changing its size. -->
-            <flag name="center_vertical" value="0x10" />
-            <!-- Grow the vertical size of the object if needed so it completely fills its container. -->
-            <flag name="fill_vertical" value="0x70" />
-            <!-- Place object in the horizontal center of its container, not changing its size. -->
-            <flag name="center_horizontal" value="0x01" />
-            <!-- Grow the horizontal size of the object if needed so it completely fills its container. -->
-            <flag name="fill_horizontal" value="0x07" />
-            <!-- Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. -->
-            <flag name="center" value="0x11" />
-            <!-- Grow the horizontal and vertical size of the object if needed so it completely fills its container. -->
-            <flag name="fill" value="0x77" />
-            <!--
-             Additional option that can be set to have the top and/or bottom edges of
-             the child clipped to its container's bounds.
-             The clip will be based on the vertical gravity: a top gravity will clip the bottom
-             edge, a bottom gravity will clip the top edge, and neither will clip both edges.
-            -->
-            <flag name="clip_vertical" value="0x80" />
-            <!--
-             Additional option that can be set to have the left and/or right edges of
-             the child clipped to its container's bounds.
-             The clip will be based on the horizontal gravity: a left gravity will clip the right
-             edge, a right gravity will clip the left edge, and neither will clip both edges.
-            -->
-            <flag name="clip_horizontal" value="0x08" />
-            <!-- Push object to the beginning of its container, not changing its size. -->
-            <flag name="start" value="0x00800003" />
-            <!-- Push object to the end of its container, not changing its size. -->
-            <flag name="end" value="0x00800005" />
-        </attr>
-    </declare-styleable>
-
-</resources>
diff --git a/sdk/prebuilt/v7/gridlayout/res/values/dimens.xml b/sdk/prebuilt/v7/gridlayout/res/values/dimens.xml
deleted file mode 100644
index fda3feb..0000000
--- a/sdk/prebuilt/v7/gridlayout/res/values/dimens.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-
-    <!-- The default gap between components in a layout. -->
-    <dimen name="default_gap">16dip</dimen>
-
-</resources>
diff --git a/sdk/prebuilt/v7/gridlayout/src/.readme b/sdk/prebuilt/v7/gridlayout/src/.readme
deleted file mode 100644
index 4bcebad..0000000
--- a/sdk/prebuilt/v7/gridlayout/src/.readme
+++ /dev/null
@@ -1,2 +0,0 @@
-This hidden file is there to ensure there is an src folder.
-Once we support binary library this will go away.
\ No newline at end of file
diff --git a/sdk/support_source.properties b/sdk/support_source.properties
index 7ea8c5d..b4e5eb6 100644
--- a/sdk/support_source.properties
+++ b/sdk/support_source.properties
@@ -1,9 +1,8 @@
 Pkg.UserSrc=false
-Pkg.Revision=7
+Pkg.Revision=8
 Extra.Vendor=android
 Extra.VendorId=android
 Extra.VendorDisplay=Android
 Extra.NameDisplay=Android Support Library
 Extra.Path=support
 Extra.OldPaths=compatibility
-
diff --git a/sdk_overlay/frameworks/base/core/res/res/values/config.xml b/sdk_overlay/frameworks/base/core/res/res/values/config.xml
index 22cc16e..fdeb8bd 100644
--- a/sdk_overlay/frameworks/base/core/res/res/values/config.xml
+++ b/sdk_overlay/frameworks/base/core/res/res/values/config.xml
@@ -20,8 +20,8 @@
 <!-- These resources are around just to allow their values to be customized
      for different hardware and product builds. -->
 <resources>
-    <!-- Component name of the service providing geocoder API support. -->
-    <string name="config_geocodeProvider">com.google.android.location.GeocodeProvider</string>
+    <!-- Package name providing geocoder API support. -->
+    <string name="config_geocodeProviderPackageName" translatable="false">com.google.android.location</string>
 
     <bool name="config_voice_capable">true</bool>
 </resources>
diff --git a/testrunner/create_test.py b/testrunner/create_test.py
index faea013..90da254 100755
--- a/testrunner/create_test.py
+++ b/testrunner/create_test.py
@@ -121,20 +121,21 @@
   _PrintMessage("Created %s" % tests_manifest_path)
 
 
-def _GenerateTestMK(mk, mapping=None):
+def _GenerateTestMK(mk, app_path, mapping=None):
   """Create and populate tests/Android.mk with variable values from Android.mk.
 
   Does nothing if tests/Android.mk already exists.
 
   Args:
     mk: AndroidMK object for application makefile
+    app_path: path to the application being tested
     mapping: optional user defined mapping of variable values, replaces
         values stored in mk
   Raises:
     IOError: tests/Android.mk cannot be opened for writing
   """
   # skip if file already exists
-  tests_path = "%s/%s" % (mk.app_path, TestsConsts.TESTS_FOLDER)
+  tests_path = "%s/%s" % (app_path, TestsConsts.TESTS_FOLDER)
   tests_mk_path = "%s/%s" % (tests_path, mk.FILENAME)
   if os.path.exists(tests_mk_path):
     _PrintMessage("%s already exists, not overwritten" % tests_mk_path)
@@ -142,7 +143,7 @@
 
   # append test build if not existent in makefile
   if not mk.HasInclude(TestsConsts.MK_BUILD_INCLUDE):
-    mk_path = "%s/%s" % (mk.app_path, mk.FILENAME)
+    mk_path = "%s/%s" % (app_path, mk.FILENAME)
     mk_file = open(mk_path, mode="a")
     mk_file.write(TestsConsts.MK_BUILD_STRING)
     mk_file.close()
@@ -224,12 +225,12 @@
     sys.exit()
 
   try:
-    mk = android_mk.AndroidMK(app_path=app_path)
+    mk = android_mk.CreateAndroidMK(path=app_path)
     manifest = android_manifest.AndroidManifest(app_path=app_path)
     _ValidateInputFiles(mk, manifest)
 
     module_name = mk.GetVariable(mk.PACKAGE_NAME)
-    _GenerateTestMK(mk)
+    _GenerateTestMK(mk, app_path)
     _GenerateTestManifest(manifest, module_name)
   except Exception, e:
     _PrintError("Error: %s" % e)
diff --git a/testrunner/runtest.py b/testrunner/runtest.py
index 6226350..6c1b1b6 100755
--- a/testrunner/runtest.py
+++ b/testrunner/runtest.py
@@ -69,7 +69,7 @@
       "for a list of tests, or you can launch one or more tests.")
 
   # default value for make -jX
-  _DEFAULT_JOBS = 4
+  _DEFAULT_JOBS = 16
 
   _DALVIK_VERIFIER_OFF_PROP = "dalvik.vm.dexopt-flags = v=n"
 
@@ -233,8 +233,9 @@
     self._TurnOffVerifier(tests)
     self._DoFullBuild(tests)
 
-    target_set = Set()
-    extra_args_set = Set()
+    target_set = []
+
+    extra_args_set = []
     for test_suite in tests:
       self._AddBuildTarget(test_suite, target_set, extra_args_set)
 
@@ -260,8 +261,8 @@
           logger.Log(cmd)
           run_command.RunCommand(cmd, return_output=False)
 
-      target_build_string = " ".join(list(target_set))
-      extra_args_string = " ".join(list(extra_args_set))
+      target_build_string = " ".join(target_set)
+      extra_args_string = " ".join(extra_args_set)
 
       # mmm cannot be used from python, so perform a similar operation using
       # ONE_SHOT_MAKEFILE
@@ -315,7 +316,7 @@
     if not test_suite.IsFullMake():
       build_dir = test_suite.GetBuildPath()
       if self._AddBuildTargetPath(build_dir, target_set):
-        extra_args_set.add(test_suite.GetExtraBuildArgs())
+        extra_args_set.append(test_suite.GetExtraBuildArgs())
       for path in test_suite.GetBuildDependencies(self._options):
         self._AddBuildTargetPath(path, target_set)
 
@@ -323,7 +324,7 @@
     if build_dir is not None:
       build_file_path = os.path.join(build_dir, "Android.mk")
       if os.path.isfile(os.path.join(self._root_path, build_file_path)):
-        target_set.add(build_file_path)
+        target_set.append(build_file_path)
         return True
       else:
         logger.Log("%s has no Android.mk, skipping" % build_dir)
@@ -382,18 +383,33 @@
         if self._options.preview:
           logger.Log("adb shell \"echo %s >> /data/local.prop\""
                      % self._DALVIK_VERIFIER_OFF_PROP)
+          logger.Log("adb shell chmod 644 /data/local.prop")
           logger.Log("adb reboot")
           logger.Log("adb wait-for-device")
         else:
           logger.Log("Turning off dalvik verifier and rebooting")
           self._adb.SendShellCommand("\"echo %s >> /data/local.prop\""
                                      % self._DALVIK_VERIFIER_OFF_PROP)
-          self._adb.SendCommand("reboot")
-          # wait for device to go offline
-          time.sleep(10)
-          self._adb.SendCommand("wait-for-device", timeout_time=60,
-                                retry_count=3)
-          self._adb.EnableAdbRoot()
+
+          self._ChmodReboot()
+      elif not self._options.preview:
+        # check the permissions on the file
+        permout = self._adb.SendShellCommand("ls -l /data/local.prop")
+        if not "-rw-r--r--" in permout:
+          logger.Log("Fixing permissions on /data/local.prop and rebooting")
+          self._ChmodReboot()
+
+  def _ChmodReboot(self):
+    """Perform a chmod of /data/local.prop and reboot.
+    """
+    self._adb.SendShellCommand("chmod 644 /data/local.prop")
+    self._adb.SendCommand("reboot")
+    # wait for device to go offline
+    time.sleep(10)
+    self._adb.SendCommand("wait-for-device", timeout_time=60,
+                          retry_count=3)
+    self._adb.EnableAdbRoot()
+
 
   def RunTests(self):
     """Main entry method - executes the tests according to command line args."""
diff --git a/testrunner/test_defs.xml b/testrunner/test_defs.xml
index 4321796..ada90d2 100644
--- a/testrunner/test_defs.xml
+++ b/testrunner/test_defs.xml
@@ -124,18 +124,23 @@
     continuous="true"
     description="Framework variable speed audio tests" />
 
-<test-native name="libui"
-    build_path="frameworks/base/libs/ui/tests"
-    description="Framework libui unit tests." />
+<test-native name="libandroidfw"
+    build_path="frameworks/base/libs/androidfw/tests"
+    description="Framework libandroidfw unit tests." />
 
 <test-native name="libutils"
-    build_path="frameworks/base/libs/utils/tests"
+    build_path="frameworks/native/libs/utils/tests"
     description="Framework libutils unit tests." />
 
 <test-native name="libinput"
     build_path="frameworks/base/services/input/tests"
     description="Framework libinput unit tests." />
 
+<test name="volley"
+    build_path="frameworks/support/volley/tests"
+    package="com.android.volley.tests"
+    continuous="true" />
+
 <!--  end of framework tests -->
 
 <!-- media framework tests -->
@@ -253,12 +258,6 @@
     package="android.tests.sigtest.tests"
     suite="cts" />
 
-<test name="cts-apidemos"
-    build_path="cts/tests/ApiDemosReferenceTest"
-    package="android.apidemos.cts"
-    coverage_target="ApiDemos"
-    suite="cts" />
-
 <test name="cts-app"
     build_path="cts/tests/tests/app"
     package="com.android.cts.app"
@@ -319,7 +318,7 @@
 <test name="cts-net"
     build_path="cts/tests/tests/net"
     package="com.android.cts.net"
-    runner="android.test.InstrumentationCtsTestRunner"
+    runner="android.test.InstrumentationTestRunner"
     coverage_target="framework"
     suite="cts" />
 
@@ -330,36 +329,6 @@
     coverage_target="framework"
     suite="cts" />
 
-<test name="cts-perf1"
-    build_path="cts/tests/tests/performance"
-    package="com.android.cts.performance"
-    runner="android.test.InstrumentationCtsTestRunner"
-    suite="cts" />
-
-<test name="cts-perf2"
-    build_path="cts/tests/tests/performance2"
-    package="com.android.cts.performance2"
-    runner="android.test.InstrumentationCtsTestRunner"
-    suite="cts" />
-
-<test name="cts-perf3"
-    build_path="cts/tests/tests/performance3"
-    package="com.android.cts.performance3"
-    runner="android.test.InstrumentationCtsTestRunner"
-    suite="cts" />
-
-<test name="cts-perf4"
-    build_path="cts/tests/tests/performance4"
-    package="com.android.cts.performance4"
-    runner="android.test.InstrumentationCtsTestRunner"
-    suite="cts" />
-
-<test name="cts-perf5"
-    build_path="cts/tests/tests/performance5"
-    package="com.android.cts.performance5"
-    runner="android.test.InstrumentationCtsTestRunner"
-    suite="cts" />
-
 <test name="cts-provider"
     build_path="cts/tests/tests/provider"
     package="com.android.cts.provider"
@@ -446,6 +415,14 @@
     coverage_target="CalendarProvider"
     continuous="true" />
 
+<test name="camera-functional"
+    build_path="packages/apps/Camera"
+    package="com.google.android.camera.tests"
+    runner="com.android.camera.CameraTestRunner"
+    coverage_target="Camera"
+    description="Camera functional test"
+    continuous="true" />
+
 <test name="contactsprov"
     build_path="packages/providers/ContactsProvider"
     package="com.android.providers.contacts.tests"
@@ -559,7 +536,7 @@
 
 <!-- host java tests -->
 <test-host name="cts-appsecurity"
-    build_path="cts/tests/appsecurity-tests"
+    build_path="cts/hostsidetests/appsecurity"
     class="com.android.cts.appsecurity.AppSecurityTests"
     jar_name="CtsAppSecurityTests.jar"
     suite="cts" />
diff --git a/testrunner/test_defs/host_test.py b/testrunner/test_defs/host_test.py
index 273042a..ca65c2a 100644
--- a/testrunner/test_defs/host_test.py
+++ b/testrunner/test_defs/host_test.py
@@ -32,7 +32,8 @@
   _JUNIT_JAR_NAME = "junit.jar"
   _HOSTTESTLIB_NAME = "hosttestlib.jar"
   _DDMLIB_NAME = "ddmlib-prebuilt.jar"
-  _lib_names = [_JUNIT_JAR_NAME, _HOSTTESTLIB_NAME, _DDMLIB_NAME]
+  _TRADEFED_NAME = "tradefed-prebuilt.jar"
+  _lib_names = [_JUNIT_JAR_NAME, _HOSTTESTLIB_NAME, _DDMLIB_NAME, _TRADEFED_NAME]
 
   _JUNIT_BUILD_PATH = os.path.join("external", "junit")
   _HOSTTESTLIB_BUILD_PATH = os.path.join("development", "tools", "hosttestlib")
diff --git a/tools/a3dconvert/Android.mk b/tools/a3dconvert/Android.mk
deleted file mode 100644
index f85c70b..0000000
--- a/tools/a3dconvert/Android.mk
+++ /dev/null
@@ -1,47 +0,0 @@
-# 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.
-
-LOCAL_PATH := $(call my-dir)
-
-# Host executable
-include $(CLEAR_VARS)
-LOCAL_MODULE := a3dconvert
-LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS += -DANDROID_RS_SERIALIZE
-# Needed for colladaDom
-LOCAL_CFLAGS += -DNO_BOOST -DDOM_INCLUDE_TINYXML -DNO_ZAE
-
-LOCAL_SRC_FILES := \
-    a3dconvert.cpp \
-    ObjLoader.cpp \
-    ColladaConditioner.cpp \
-    ColladaGeometry.cpp \
-    ColladaLoader.cpp
-
-# Needed to maintain libRS dependencies
-intermediates := $(call intermediates-dir-for,STATIC_LIBRARIES,libRS,HOST,)
-librs_generated_headers := \
-    $(intermediates)/rsgApiStructs.h \
-    $(intermediates)/rsgApiFuncDecl.h
-LOCAL_GENERATED_SOURCES := $(librs_generated_headers)
-
-LOCAL_C_INCLUDES += external/collada/include
-LOCAL_C_INCLUDES += external/collada/include/1.4
-LOCAL_C_INCLUDES += frameworks/base/libs/rs
-LOCAL_C_INCLUDES += $(intermediates)
-
-LOCAL_LDLIBS := -ldl -lpthread
-LOCAL_STATIC_LIBRARIES += libRS libutils libcutils
-LOCAL_STATIC_LIBRARIES += colladadom libtinyxml libpcrecpp libpcre
-include $(BUILD_HOST_EXECUTABLE)
diff --git a/tools/a3dconvert/ColladaConditioner.cpp b/tools/a3dconvert/ColladaConditioner.cpp
deleted file mode 100644
index 0a99e0e..0000000
--- a/tools/a3dconvert/ColladaConditioner.cpp
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
-* Copyright 2006 Sony Computer Entertainment Inc.
-*
-* Licensed under the MIT Open Source License, for details please see license.txt or the website
-* http://www.opensource.org/licenses/mit-license.php
-*
-*/
-
-#include "ColladaConditioner.h"
-unsigned int ColladaConditioner::getMaxOffset( domInputLocalOffset_Array &input_array ) {
-
-    unsigned int maxOffset = 0;
-    for ( unsigned int i = 0; i < input_array.getCount(); i++ ) {
-        if ( input_array[i]->getOffset() > maxOffset ) {
-            maxOffset = (unsigned int)input_array[i]->getOffset();
-        }
-    }
-    return maxOffset;
-}
-
-void ColladaConditioner::createTrianglesFromPolylist( domMesh *thisMesh, domPolylist *thisPolylist ) {
-
-    // Create a new <triangles> inside the mesh that has the same material as the <polylist>
-    domTriangles *thisTriangles = (domTriangles *)thisMesh->createAndPlace("triangles");
-    //thisTriangles->setCount( 0 );
-    unsigned int triangles = 0;
-    thisTriangles->setMaterial(thisPolylist->getMaterial());
-    domP* p_triangles = (domP*)thisTriangles->createAndPlace("p");
-
-    // Give the new <triangles> the same <_dae> and <parameters> as the old <polylist>
-    for(int i=0; i<(int)(thisPolylist->getInput_array().getCount()); i++) {
-
-        thisTriangles->placeElement( thisPolylist->getInput_array()[i]->clone() );
-    }
-
-    // Get the number of inputs and primitives for the polygons array
-    int numberOfInputs = (int)getMaxOffset(thisPolylist->getInput_array()) + 1;
-    int numberOfPrimitives = (int)(thisPolylist->getVcount()->getValue().getCount());
-
-    unsigned int offset = 0;
-
-    // Triangulate all the primitives, this generates all the triangles in a single <p> element
-    for(int j = 0; j < numberOfPrimitives; j++) {
-
-        int triangleCount = (int)thisPolylist->getVcount()->getValue()[j] -2;
-        // Write out the primitives as triangles, just fan using the first element as the base
-        int idx = numberOfInputs;
-        for(int k = 0; k < triangleCount; k++) {
-            // First vertex
-            for(int l = 0; l < numberOfInputs; l++) {
-
-                p_triangles->getValue().append(thisPolylist->getP()->getValue()[offset + l]);
-            }
-            // Second vertex
-            for(int l = 0; l < numberOfInputs; l++) {
-
-                p_triangles->getValue().append(thisPolylist->getP()->getValue()[offset + idx + l]);
-            }
-            // Third vertex
-            idx += numberOfInputs;
-            for(int l = 0; l < numberOfInputs; l++) {
-
-                p_triangles->getValue().append(thisPolylist->getP()->getValue()[offset + idx + l]);
-            }
-            triangles++;
-        }
-        offset += (unsigned int)thisPolylist->getVcount()->getValue()[j] * numberOfInputs;
-    }
-    thisTriangles->setCount( triangles );
-
-}
-
-void ColladaConditioner::createTrianglesFromPolygons( domMesh *thisMesh, domPolygons *thisPolygons ) {
-
-    // Create a new <triangles> inside the mesh that has the same material as the <polygons>
-    domTriangles *thisTriangles = (domTriangles *)thisMesh->createAndPlace("triangles");
-    thisTriangles->setCount( 0 );
-    thisTriangles->setMaterial(thisPolygons->getMaterial());
-    domP* p_triangles = (domP*)thisTriangles->createAndPlace("p");
-
-    // Give the new <triangles> the same <_dae> and <parameters> as the old <polygons>
-    for(int i=0; i<(int)(thisPolygons->getInput_array().getCount()); i++) {
-
-        thisTriangles->placeElement( thisPolygons->getInput_array()[i]->clone() );
-    }
-
-    // Get the number of inputs and primitives for the polygons array
-    int numberOfInputs = (int)getMaxOffset(thisPolygons->getInput_array()) +1;
-    int numberOfPrimitives = (int)(thisPolygons->getP_array().getCount());
-
-    // Triangulate all the primitives, this generates all the triangles in a single <p> element
-    for(int j = 0; j < numberOfPrimitives; j++) {
-
-        // Check the polygons for consistancy (some exported files have had the wrong number of indices)
-        domP * thisPrimitive = thisPolygons->getP_array()[j];
-        int elementCount = (int)(thisPrimitive->getValue().getCount());
-        // Skip the invalid primitive
-        if((elementCount % numberOfInputs) != 0) {
-            continue;
-        } else {
-            int triangleCount = (elementCount/numberOfInputs)-2;
-            // Write out the primitives as triangles, just fan using the first element as the base
-            int idx = numberOfInputs;
-            for(int k = 0; k < triangleCount; k++) {
-                // First vertex
-                for(int l = 0; l < numberOfInputs; l++) {
-
-                    p_triangles->getValue().append(thisPrimitive->getValue()[l]);
-                }
-                // Second vertex
-                for(int l = 0; l < numberOfInputs; l++) {
-
-                    p_triangles->getValue().append(thisPrimitive->getValue()[idx + l]);
-                }
-                // Third vertex
-                idx += numberOfInputs;
-                for(int l = 0; l < numberOfInputs; l++) {
-
-                    p_triangles->getValue().append(thisPrimitive->getValue()[idx + l]);
-                }
-                thisTriangles->setCount(thisTriangles->getCount()+1);
-            }
-        }
-    }
-
-}
-
-
-bool ColladaConditioner::triangulate(DAE *dae) {
-
-    int error = 0;
-
-    // How many geometry elements are there?
-    int geometryElementCount = (int)(dae->getDatabase()->getElementCount(NULL, "geometry" ));
-
-    for(int currentGeometry = 0; currentGeometry < geometryElementCount; currentGeometry++) {
-
-        // Find the next geometry element
-        domGeometry *thisGeometry;
-        //      error = _dae->getDatabase()->getElement((daeElement**)&thisGeometry,currentGeometry, NULL, "geometry");
-        daeElement * element = 0;
-        error = dae->getDatabase()->getElement(&element,currentGeometry, NULL, "geometry");
-        thisGeometry = (domGeometry *) element;
-
-        // Get the mesh out of the geometry
-        domMesh *thisMesh = thisGeometry->getMesh();
-
-        if (thisMesh == NULL){
-            continue;
-        }
-
-        // Loop over all the polygon elements
-        for(int currentPolygons = 0; currentPolygons < (int)(thisMesh->getPolygons_array().getCount()); currentPolygons++) {
-
-            // Get the polygons out of the mesh
-            // Always get index 0 because every pass through this loop deletes the <polygons> element as it finishes with it
-            domPolygons *thisPolygons = thisMesh->getPolygons_array()[currentPolygons];
-            createTrianglesFromPolygons( thisMesh, thisPolygons );
-        }
-        while (thisMesh->getPolygons_array().getCount() > 0) {
-
-            domPolygons *thisPolygons = thisMesh->getPolygons_array().get(0);
-            // Remove the polygons from the mesh
-            thisMesh->removeChildElement(thisPolygons);
-        }
-        int polylistElementCount = (int)(thisMesh->getPolylist_array().getCount());
-        for(int currentPolylist = 0; currentPolylist < polylistElementCount; currentPolylist++) {
-
-            // Get the polylist out of the mesh
-            // Always get index 0 because every pass through this loop deletes the <polygons> element as it finishes with it
-            domPolylist *thisPolylist = thisMesh->getPolylist_array()[currentPolylist];
-            createTrianglesFromPolylist( thisMesh, thisPolylist );
-        }
-        while (thisMesh->getPolylist_array().getCount() > 0) {
-
-            domPolylist *thisPolylist = thisMesh->getPolylist_array().get(0);
-            // Remove the polylist from the mesh
-            thisMesh->removeChildElement(thisPolylist);
-        }
-    }
-    return (error == 0);
-}
-
-bool ColladaConditioner::triangulate(const char *inputFile) {
-
-    DAE dae;
-    bool convertSuceeded = true;
-    domCOLLADA* root = dae.open(inputFile);
-
-    if (!root) {
-        printf("Failed to read file %s.\n", inputFile);
-        return false;
-    }
-
-    convertSuceeded = triangulate(&dae);
-
-    dae.writeAll();
-    if(!convertSuceeded) {
-        printf("Encountered errors\n");
-    }
-
-    return convertSuceeded;
-}
-
-bool ColladaConditioner::stripGeometry(DAE *dae) {
-    bool convertSuceeded = true;
-    int geometryElementCount = (int)(dae->getDatabase()->getElementCount(NULL,
-                                                                         "library_geometries" ));
-
-    for(int currentGeometry = 0; currentGeometry < geometryElementCount; currentGeometry++) {
-
-        daeElement * element = 0;
-        int error = dae->getDatabase()->getElement(&element, currentGeometry,
-                                                   NULL, "library_geometries");
-        daeBool removed = daeElement::removeFromParent(element);
-        convertSuceeded = convertSuceeded && removed;
-    }
-    return convertSuceeded;
-}
-
-bool ColladaConditioner::stripGeometry(const char *inputFile) {
-    DAE dae;
-    bool convertSuceeded = true;
-    domCOLLADA* root = dae.open(inputFile);
-
-    if (!root) {
-        printf("Failed to read file %s.\n", inputFile);
-        return false;
-    }
-
-    stripGeometry(&dae);
-
-    dae.writeAll();
-    if(!convertSuceeded) {
-        printf("Encountered errors\n");
-    }
-
-    return convertSuceeded;
-}
diff --git a/tools/a3dconvert/ColladaConditioner.h b/tools/a3dconvert/ColladaConditioner.h
deleted file mode 100644
index bd5e5c9..0000000
--- a/tools/a3dconvert/ColladaConditioner.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-* Copyright 2006 Sony Computer Entertainment Inc.
-*
-* Licensed under the MIT Open Source License, for details please see license.txt or the website
-* http://www.opensource.org/licenses/mit-license.php
-*
-*/
-
-#ifndef COLLADA_CONDITIONER
-#define COLLADA_CONDITIONER
-
-#include <dae.h>
-#include <dom/domConstants.h>
-#include <dom/domCOLLADA.h>
-
-class ColladaConditioner {
-
-private:
-    unsigned int getMaxOffset( domInputLocalOffset_Array &input_array );
-    void createTrianglesFromPolylist( domMesh *thisMesh, domPolylist *thisPolylist );
-    void createTrianglesFromPolygons( domMesh *thisMesh, domPolygons *thisPolygons );
-
-public:
-    bool triangulate(DAE *dae);
-    bool triangulate(const char *inputFile);
-    bool stripGeometry(DAE *dae);
-    bool stripGeometry(const char *inputFile);
-};
-
-#endif //COLLADA_CONDITIONER
diff --git a/tools/a3dconvert/ColladaGeometry.cpp b/tools/a3dconvert/ColladaGeometry.cpp
deleted file mode 100644
index 1aba4f1..0000000
--- a/tools/a3dconvert/ColladaGeometry.cpp
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
-* Copyright 2006 Sony Computer Entertainment Inc.
-*
-* Licensed under the MIT Open Source License, for details please see license.txt or the website
-* http://www.opensource.org/licenses/mit-license.php
-*
-*/
-
-#include "ColladaGeometry.h"
-#include <iostream>
-#include <sstream>
-
-ColladaGeometry::ColladaGeometry() :
-        mPositionFloats(NULL), mPositionOffset(-1),
-        mNormalFloats(NULL), mNormalOffset(-1),
-        mTangentFloats(NULL), mTangentOffset(-1),
-        mBinormalFloats(NULL), mBinormalOffset(-1),
-        mTexture1Floats(NULL), mTexture1Offset(-1),
-        mMultiIndexOffset(-1),
-        mPositionsStride(3), mNormalsStride(3),
-        mTextureCoordsStride(2), mTangentssStride(3), mBinormalsStride(3) {
-
-    mConvertedMesh.appendChannel("position", mPositionsStride);
-    mConvertedMesh.appendChannel("normal", mNormalsStride);
-    mConvertedMesh.appendChannel("texture0", mTextureCoordsStride);
-    mConvertedMesh.appendChannel("binormal", mBinormalsStride);
-    mConvertedMesh.appendChannel("tangent", mTangentssStride);
-
-    mPositions = &mConvertedMesh.mChannels[0].mData;
-    mNormals = &mConvertedMesh.mChannels[1].mData;
-    mTextureCoords = &mConvertedMesh.mChannels[2].mData;
-    mBinormals = &mConvertedMesh.mChannels[3].mData;
-    mTangents = &mConvertedMesh.mChannels[4].mData;
-}
-
-bool ColladaGeometry::init(domGeometryRef geometry) {
-
-    bool convertSuceeded = true;
-
-    const char* geoName = geometry->getName();
-    if (geoName == NULL) {
-        geoName = geometry->getId();
-    }
-    mConvertedMesh.mName = geoName;
-    mMesh = geometry->getMesh();
-
-    // Iterate over all the index groups and build up a simple resolved tri list and vertex array
-    const domTriangles_Array &allTriLists = mMesh->getTriangles_array();
-    int numTriLists = allTriLists.getCount();
-    mConvertedMesh.mTriangleLists.reserve(numTriLists);
-    mConvertedMesh.mTriangleListNames.reserve(numTriLists);
-    for (int i = 0; i < numTriLists; i ++) {
-        addTriangles(allTriLists[i]);
-    }
-
-    return convertSuceeded;
-}
-
-void ColladaGeometry::addTriangles(domTriangles * colladaTriangles) {
-
-    int numTriangles = colladaTriangles->getCount();
-    int triListIndex = mConvertedMesh.mTriangleLists.size();
-    mConvertedMesh.mTriangleLists.resize(triListIndex + 1);
-    std::string materialName = colladaTriangles->getMaterial();
-    if (materialName.size() == 0) {
-        char buffer[128];
-        sprintf(buffer, "index%d", triListIndex);
-        materialName = buffer;
-    }
-    mConvertedMesh.mTriangleListNames.push_back(materialName);
-
-    // It's a good idea to tell stl how much memory we intend to use
-    // to limit the number of reallocations
-    mPositions->reserve(numTriangles * 3);
-    mNormals->reserve(numTriangles * 3);
-    mTangents->reserve(numTriangles * 3);
-    mBinormals->reserve(numTriangles * 3);
-    mTextureCoords->reserve(numTriangles * 3);
-
-    // Stores the pointers to the image data and where in the tri list that data comes from
-    cacheOffsetsAndDataPointers(colladaTriangles);
-
-    // Collapse the multiindex that collada uses
-    const domListOfUInts &colladaIndexList = colladaTriangles->getP()->getValue();
-    std::vector<uint32_t> &a3dIndexList = mConvertedMesh.mTriangleLists[triListIndex];
-    a3dIndexList.resize(numTriangles * 3);
-    for (int i = 0; i < numTriangles * 3; i ++) {
-
-        a3dIndexList[i] = remapIndexAndStoreData(colladaIndexList, i);
-    }
-
-}
-
-void ColladaGeometry::cacheOffsetsAndDataPointers(domTriangles * colladaTriangles) {
-    // Define the names of known vertex channels
-    const char *positionSemantic = "POSITION";
-    const char *vertexSemantic = "VERTEX";
-    const char *normalSemantic = "NORMAL";
-    const char *tangentSemantic = "TANGENT";
-    const char *binormalSemantic = "BINORMAL";
-    const char *texture1Semantic = "TEXCOORD";
-
-    const domInputLocalOffset_Array &inputs = colladaTriangles->getInput_array();
-    mMultiIndexOffset = inputs.getCount();
-
-    // inputs with offsets
-    // There are two places collada can put links to our data
-    // 1 - in the VERTEX, which is its way of saying follow a link to the vertex structure
-    //     then every geometry array you find there is the same size as the position array
-    // 2 - a direct link to the channel from the primitive list. This tells us that there are
-    //     potentially more or less floats in those channels because there is some vertex re-use
-    //     or divergence in that data channel. For example, highly segmented uv set would produce a
-    //     larger array because for every physical vertex position thre might be 2 or more uv coords
-    for (uint32_t i = 0; i < inputs.getCount(); i ++) {
-
-        int currentOffset = inputs[i]->getOffset();
-        const char *currentSemantic = inputs[i]->getSemantic();
-
-        domSource * source = (domSource*) (domElement*) inputs[i]->getSource().getElement();
-        if (strcmp(vertexSemantic, currentSemantic) == 0) {
-            mPositionOffset = currentOffset;
-        }
-        else if (strcmp(normalSemantic, currentSemantic) == 0) {
-            mNormalOffset = currentOffset;
-            mNormalFloats = &source->getFloat_array()->getValue();
-        }
-        else if (strcmp(tangentSemantic, currentSemantic) == 0) {
-            mTangentOffset = currentOffset;
-            mTangentFloats = &source->getFloat_array()->getValue();
-        }
-        else if (strcmp(binormalSemantic, currentSemantic) == 0) {
-            mBinormalOffset = currentOffset;
-            mBinormalFloats = &source->getFloat_array()->getValue();
-        }
-        else if (strcmp(texture1Semantic, currentSemantic) == 0) {
-            mTexture1Offset = currentOffset;
-            mTexture1Floats = & source->getFloat_array()->getValue();
-        }
-    }
-
-    // There are multiple ways of getting to data, so follow them all
-    domVertices * vertices = mMesh->getVertices();
-    const domInputLocal_Array &verticesInputs = vertices->getInput_array();
-    for (uint32_t i = 0; i < verticesInputs.getCount(); i ++) {
-
-        const char *currentSemantic = verticesInputs[i]->getSemantic();
-
-        domSource * source = (domSource*) (domElement*) verticesInputs[i]->getSource().getElement();
-        if (strcmp(positionSemantic, currentSemantic) == 0) {
-            mPositionFloats = & source->getFloat_array()->getValue();
-            // TODO: Querry this from the accessor in the future because
-            // I supopose it's possible to have 4 floats if we hide something in w
-            int numberOfFloatsPerPoint = 3;
-            // We want to cllapse duplicate vertices, otherwise we could just unroll the tri list
-            mVertexRemap.resize(source->getFloat_array()->getCount()/numberOfFloatsPerPoint);
-        }
-        else if (strcmp(normalSemantic, currentSemantic) == 0) {
-            mNormalFloats = & source->getFloat_array()->getValue();
-            mNormalOffset = mPositionOffset;
-        }
-        else if (strcmp(tangentSemantic, currentSemantic) == 0) {
-            mTangentFloats = & source->getFloat_array()->getValue();
-            mTangentOffset = mPositionOffset;
-        }
-        else if (strcmp(binormalSemantic, currentSemantic) == 0) {
-            mBinormalFloats = & source->getFloat_array()->getValue();
-            mBinormalOffset = mPositionOffset;
-        }
-        else if (strcmp(texture1Semantic, currentSemantic) == 0) {
-            mTexture1Floats = & source->getFloat_array()->getValue();
-            mTexture1Offset = mPositionOffset;
-        }
-    }
-}
-
-int ColladaGeometry::remapIndexAndStoreData(const domListOfUInts &colladaIndexList, int indexToRemap) {
-
-    domUint positionIndex = colladaIndexList[indexToRemap*mMultiIndexOffset + mPositionOffset];
-
-    float posX = (*mPositionFloats)[positionIndex * mPositionsStride + 0];
-    float posY = (*mPositionFloats)[positionIndex * mPositionsStride + 1];
-    float posZ = (*mPositionFloats)[positionIndex * mPositionsStride + 2];
-
-    float normX = 0;
-    float normY = 0;
-    float normZ = 0;
-
-    if (mNormalOffset != -1) {
-        domUint normalIndex = colladaIndexList[indexToRemap*mMultiIndexOffset + mNormalOffset];
-        normX = (*mNormalFloats)[normalIndex * mNormalsStride + 0];
-        normY = (*mNormalFloats)[normalIndex * mNormalsStride + 1];
-        normZ = (*mNormalFloats)[normalIndex * mNormalsStride + 2];
-    }
-
-    float tanX = 0;
-    float tanY = 0;
-    float tanZ = 0;
-
-    if (mTangentOffset != -1) {
-        domUint tangentIndex = colladaIndexList[indexToRemap*mMultiIndexOffset + mTangentOffset];
-        tanX = (*mTangentFloats)[tangentIndex * mTangentssStride + 0];
-        tanY = (*mTangentFloats)[tangentIndex * mTangentssStride + 1];
-        tanZ = (*mTangentFloats)[tangentIndex * mTangentssStride + 2];
-    }
-
-    float binormX = 0;
-    float binormY = 0;
-    float binormZ = 0;
-
-    if (mBinormalOffset != -1) {
-        domUint binormalIndex = colladaIndexList[indexToRemap*mMultiIndexOffset + mNormalOffset];
-        binormX = (*mBinormalFloats)[binormalIndex * mBinormalsStride + 0];
-        binormY = (*mBinormalFloats)[binormalIndex * mBinormalsStride + 1];
-        binormZ = (*mBinormalFloats)[binormalIndex * mBinormalsStride + 2];
-    }
-
-    float texCoordX = 0;
-    float texCoordY = 0;
-
-    if (mTexture1Offset != -1) {
-        domUint texCoordIndex = colladaIndexList[indexToRemap*mMultiIndexOffset + mTexture1Offset];
-        texCoordX = (*mTexture1Floats)[texCoordIndex * mTextureCoordsStride + 0];
-        texCoordY = (*mTexture1Floats)[texCoordIndex * mTextureCoordsStride + 1];
-    }
-
-    std::vector<uint32_t> &ithRemapList = mVertexRemap[positionIndex];
-    // We may have some potential vertices we can reuse
-    // loop over all the potential candidates and see if any match our guy
-    for (uint32_t i = 0; i < ithRemapList.size(); i ++) {
-
-        int ithRemap = ithRemapList[i];
-        // compare existing vertex with the new one
-        if ((*mPositions)[ithRemap * mPositionsStride + 0] != posX ||
-            (*mPositions)[ithRemap * mPositionsStride + 1] != posY ||
-            (*mPositions)[ithRemap * mPositionsStride + 2] != posZ) {
-            continue;
-        }
-
-        // Now go over normals
-        if (mNormalOffset != -1) {
-            if ((*mNormals)[ithRemap * mNormalsStride + 0] != normX ||
-                (*mNormals)[ithRemap * mNormalsStride + 1] != normY ||
-                (*mNormals)[ithRemap * mNormalsStride + 2] != normZ) {
-                continue;
-            }
-        }
-
-        // Now go over tangents
-        if (mTangentOffset != -1) {
-            if ((*mTangents)[ithRemap * mTangentssStride + 0] != tanX ||
-                (*mTangents)[ithRemap * mTangentssStride + 1] != tanY ||
-                (*mTangents)[ithRemap * mTangentssStride + 2] != tanZ) {
-                continue;
-            }
-        }
-
-        // Now go over binormals
-        if (mBinormalOffset != -1) {
-            if ((*mBinormals)[ithRemap * mBinormalsStride + 0] != binormX ||
-                (*mBinormals)[ithRemap * mBinormalsStride + 1] != binormY ||
-                (*mBinormals)[ithRemap * mBinormalsStride + 2] != binormZ) {
-                continue;
-            }
-        }
-
-        // And texcoords
-        if (mTexture1Offset != -1) {
-            if ((*mTextureCoords)[ithRemap * mTextureCoordsStride + 0] != texCoordX ||
-                (*mTextureCoords)[ithRemap * mTextureCoordsStride + 1] != texCoordY) {
-               continue;
-            }
-        }
-
-        // If we got here the new vertex is identical to the one that we already stored
-        return ithRemap;
-    }
-
-    // We did not encounter this vertex yet, store it and return its index
-    mPositions->push_back(posX);
-    mPositions->push_back(posY);
-    mPositions->push_back(posZ);
-
-    if (mNormalOffset != -1) {
-        mNormals->push_back(normX);
-        mNormals->push_back(normY);
-        mNormals->push_back(normZ);
-    }
-
-    if (mTangentOffset != -1) {
-        mTangents->push_back(tanX);
-        mTangents->push_back(tanY);
-        mTangents->push_back(tanZ);
-    }
-
-    if (mBinormalOffset != -1) {
-        mBinormals->push_back(binormX);
-        mBinormals->push_back(binormY);
-        mBinormals->push_back(binormZ);
-    }
-
-    if (mTexture1Offset != -1) {
-        mTextureCoords->push_back(texCoordX);
-        mTextureCoords->push_back(texCoordY);
-    }
-
-    // We need to remember this mapping. Since we are storing floats, not vec3's, need to
-    // divide by position size to get the right index
-    int currentVertexIndex = (mPositions->size()/mPositionsStride) - 1;
-    ithRemapList.push_back(currentVertexIndex);
-
-    return currentVertexIndex;
-}
-
-
-
-
-
-
-
diff --git a/tools/a3dconvert/ColladaGeometry.h b/tools/a3dconvert/ColladaGeometry.h
deleted file mode 100644
index a89fa69..0000000
--- a/tools/a3dconvert/ColladaGeometry.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-* Copyright 2006 Sony Computer Entertainment Inc.
-*
-* Licensed under the MIT Open Source License, for details please see license.txt or the website
-* http://www.opensource.org/licenses/mit-license.php
-*
-*/
-
-#ifndef _COLLADA_GEOMETRY_H_
-#define _COLLADA_GEOMETRY_H_
-
-#include <dae.h>
-#include <dom/domCOLLADA.h>
-#include <vector>
-#include <string>
-
-#include "rsContext.h"
-#include "rsMesh.h"
-#include "SimpleMesh.h"
-
-using namespace android;
-using namespace android::renderscript;
-
-
-class ColladaGeometry {
-public:
-    ColladaGeometry();
-    bool init(domGeometryRef geometry);
-
-    SimpleMesh *getMesh() {
-        return &mConvertedMesh;
-    }
-
-private:
-
-    //Store some collada stuff
-    domMesh *mMesh;
-
-    // Cache the pointers to the collada version of the data
-    // This contains raw vertex data that is not necessarily the same size for all
-    // Offset refers to the way collada packs each triangle's index to position / normal / etc.
-    domListOfFloats *mPositionFloats;
-    int mPositionOffset;
-    domListOfFloats *mNormalFloats;
-    int mNormalOffset;
-    domListOfFloats *mTangentFloats;
-    int mTangentOffset;
-    domListOfFloats *mBinormalFloats;
-    int mBinormalOffset;
-    domListOfFloats *mTexture1Floats;
-    int mTexture1Offset;
-
-    // In the list of triangles, collada uses multiple indecies per triangle to point to the correct
-    // index in all the different arrays. We need to know the total number of these guys so we can
-    // just to the next triangle to process
-    int mMultiIndexOffset;
-
-    // All these vectors would contain the same number of "points"
-    // index*stride would properly get to the uv, normal etc.
-    // collada, like maya and many others keep point array, normal array etc
-    // different size in the cases the same vertex produces divergent normals for different faces
-    std::vector<float> *mPositions;
-    unsigned int mPositionsStride;
-    std::vector<float> *mNormals;
-    unsigned int mNormalsStride;
-    std::vector<float> *mTextureCoords;
-    unsigned int mTextureCoordsStride;
-    std::vector<float> *mTangents;
-    unsigned int mTangentssStride;
-    std::vector<float> *mBinormals;
-    unsigned int mBinormalsStride;
-
-    SimpleMesh mConvertedMesh;
-
-    // This vector is used to remap a position index into a list of all divergent vertices
-    std::vector<std::vector<unsigned int> > mVertexRemap;
-
-    void addTriangles(domTriangles * colladaTriangles);
-    void cacheOffsetsAndDataPointers(domTriangles * colladaTriangles);
-    int remapIndexAndStoreData(const domListOfUInts &colladaIndexList, int indexToRemap);
-
-};
-
-#endif //COLLADA_TO_A3D_GEOMETRY
diff --git a/tools/a3dconvert/ColladaLoader.cpp b/tools/a3dconvert/ColladaLoader.cpp
deleted file mode 100644
index 3fc954d..0000000
--- a/tools/a3dconvert/ColladaLoader.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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 "ColladaLoader.h"
-#include "ColladaConditioner.h"
-#include "ColladaGeometry.h"
-
-#include <dae.h>
-#include <dom/domCOLLADA.h>
-
-ColladaLoader::ColladaLoader() {
-
-}
-
-ColladaLoader::~ColladaLoader() {
-    if (mDae) {
-        delete mDae;
-    }
-    clearGeometry();
-}
-
-void ColladaLoader::clearGeometry() {
-    for (uint32_t i = 0; i < mGeometries.size(); i++) {
-        delete mGeometries[i];
-    }
-    mGeometries.clear();
-}
-
-bool ColladaLoader::init(const char *colladaFile) {
-    if (mDae) {
-        delete mDae;
-    }
-    clearGeometry();
-
-    mDae = new DAE();
-
-    bool convertSuceeded = true;
-
-    domCOLLADA* root = mDae->open(colladaFile);
-    if (!root) {
-        fprintf(stderr, "Failed to read file %s.\n", colladaFile);
-        return false;
-    }
-
-    // We only want to deal with triangulated meshes since rendering complex polygons is not feasible
-    ColladaConditioner conditioner;
-    conditioner.triangulate(mDae);
-
-    domLibrary_geometries *allGeometry = daeSafeCast<domLibrary_geometries>(root->getDescendant("library_geometries"));
-
-    if (allGeometry) {
-        convertSuceeded = convertAllGeometry(allGeometry) && convertSuceeded;
-    }
-
-    return convertSuceeded;
-}
-
-SimpleMesh *ColladaLoader::getMesh(uint32_t meshIndex) {
-    return mGeometries[meshIndex]->getMesh();
-}
-
-bool ColladaLoader::convertAllGeometry(domLibrary_geometries *allGeometry) {
-
-    bool convertSuceeded = true;
-    domGeometry_Array &geo_array = allGeometry->getGeometry_array();
-    for (size_t i = 0; i < geo_array.getCount(); i++) {
-        domGeometry *geometry = geo_array[i];
-        const char *geometryName = geometry->getName();
-        if (geometryName == NULL) {
-            geometryName = geometry->getId();
-        }
-
-        domMeshRef mesh = geometry->getMesh();
-        if (mesh != NULL) {
-            printf("Converting geometry: %s\n", geometryName);
-            convertSuceeded = convertGeometry(geometry) && convertSuceeded;
-        } else {
-            printf("Skipping geometry: %s, unsupported type\n", geometryName);
-        }
-
-    }
-
-    return convertSuceeded;
-}
-
-bool ColladaLoader::convertGeometry(domGeometry *geometry) {
-    bool convertSuceeded = true;
-
-    domMeshRef mesh = geometry->getMesh();
-
-    ColladaGeometry *convertedGeo = new ColladaGeometry();
-    convertedGeo->init(geometry);
-
-    mGeometries.push_back(convertedGeo);
-
-    return convertSuceeded;
-}
-
-bool ColladaLoader::stripGeometryAndSave() {
-
-    ColladaConditioner conditioner;
-    bool convertSuceeded = conditioner.stripGeometry(mDae);
-
-    mDae->writeAll();
-    if(!convertSuceeded) {
-        printf("Encountered errors\n");
-    } else {
-        printf("Stripped geometry data from collada file\n");
-    }
-
-    return convertSuceeded;
-}
diff --git a/tools/a3dconvert/ColladaLoader.h b/tools/a3dconvert/ColladaLoader.h
deleted file mode 100644
index b1a6e3b..0000000
--- a/tools/a3dconvert/ColladaLoader.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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 _COLLADA_LOADER_H_
-#define _COLLADA_LOADER_H_
-
-#include <vector>
-
-class DAE;
-class domLibrary_geometries;
-class domGeometry;
-class ColladaGeometry;
-class SimpleMesh;
-
-#include "GeometryLoader.h"
-
-class ColladaLoader : public GeometryLoader {
-public:
-    ColladaLoader();
-    virtual ~ColladaLoader();
-
-    virtual bool init(const char *colladaFile);
-    virtual SimpleMesh *getMesh(uint32_t meshIndex);
-    virtual uint32_t getNumMeshes() const {
-        return mGeometries.size();
-    }
-    bool stripGeometryAndSave();
-
-private:
-    DAE *mDae;
-    void clearGeometry();
-    std::vector<ColladaGeometry*> mGeometries;
-
-    bool convertAllGeometry(domLibrary_geometries *allGeometry);
-    bool convertGeometry(domGeometry *geometry);
-
-};
-
-#endif
\ No newline at end of file
diff --git a/tools/a3dconvert/GeometryLoader.h b/tools/a3dconvert/GeometryLoader.h
deleted file mode 100644
index e0aca7a..0000000
--- a/tools/a3dconvert/GeometryLoader.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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 _GEOMETRY_LOADER_H_
-#define _GEOMETRY_LOADER_H_
-
-#include "SimpleMesh.h"
-
-class GeometryLoader {
-public:
-    virtual ~GeometryLoader() {
-    }
-    virtual bool init(const char *file) = 0;
-    virtual uint32_t getNumMeshes() const = 0;
-    virtual SimpleMesh *getMesh(uint32_t meshIndex) = 0;
-};
-
-#endif _GEOMETRY_LOADER_H_
diff --git a/tools/a3dconvert/ObjLoader.cpp b/tools/a3dconvert/ObjLoader.cpp
deleted file mode 100644
index 19b6e0b..0000000
--- a/tools/a3dconvert/ObjLoader.cpp
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * 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 "ObjLoader.h"
-#include <rsFileA3D.h>
-#include <sstream>
-
-ObjLoader::ObjLoader() :
-    mPositionsStride(3), mNormalsStride(3), mTextureCoordsStride(2) {
-
-}
-
-bool isWhitespace(char c) {
-    const char whiteSpace[] = { ' ', '\n', '\t', '\f', '\r' };
-    const uint32_t numWhiteSpaceChars = 5;
-    for (uint32_t i = 0; i < numWhiteSpaceChars; i ++) {
-        if (whiteSpace[i] == c) {
-            return true;
-        }
-    }
-    return false;
-}
-
-void eatWhitespace(std::istream &is) {
-    while(is.good() && isWhitespace(is.peek())) {
-        is.get();
-    }
-}
-
-bool getToken(std::istream &is, std::string &token) {
-    eatWhitespace(is);
-    token.clear();
-    char c;
-    while(is.good() && !isWhitespace(is.peek())) {
-        c = is.get();
-        if (is.good()){
-            token += c;
-        }
-    }
-    return token.size() > 0;
-}
-
-void appendDataFromStream(std::vector<float> &dataVec, uint32_t numFloats, std::istream &is) {
-    std::string token;
-    for (uint32_t i = 0; i < numFloats; i ++){
-        bool valid = getToken(is, token);
-        if (valid) {
-            dataVec.push_back((float)atof(token.c_str()));
-        } else {
-            fprintf(stderr, "Encountered error reading geometry data");
-            dataVec.push_back(0.0f);
-        }
-    }
-}
-
-bool checkNegativeIndex(int idx) {
-    if(idx < 0) {
-        fprintf(stderr, "Negative indices are not supported. Skipping face\n");
-        return false;
-    }
-    return true;
-}
-
-void ObjLoader::parseRawFaces(){
-    // We need at least a triangle
-    if (mRawFaces.size() < 3) {
-        return;
-    }
-
-    const char slash = '/';
-    mParsedFaces.resize(mRawFaces.size());
-    for (uint32_t i = 0; i < mRawFaces.size(); i ++) {
-        size_t firstSeparator = mRawFaces[i].find_first_of(slash);
-        size_t nextSeparator = mRawFaces[i].find_last_of(slash);
-
-        // Use the string as a temp buffer to parse the index
-        // Insert 0 instead of the slash to avoid substrings
-        if (firstSeparator != std::string::npos) {
-            mRawFaces[i][firstSeparator] = 0;
-        }
-        // Simple case, only one index
-        int32_t vIdx = atoi(mRawFaces[i].c_str());
-        // We do not support negative indices
-        if (!checkNegativeIndex(vIdx)) {
-            return;
-        }
-        // obj indices things beginning 1
-        mParsedFaces[i].vertIdx = (uint32_t)vIdx - 1;
-
-        if (nextSeparator != std::string::npos && nextSeparator != firstSeparator) {
-            mRawFaces[i][nextSeparator] = 0;
-            uint32_t nIdx = atoi(mRawFaces[i].c_str() + nextSeparator + 1);
-            if (!checkNegativeIndex(nIdx)) {
-                return;
-            }
-            // obj indexes things beginning 1
-            mParsedFaces[i].normIdx = (uint32_t)nIdx - 1;
-        }
-
-        // second case is where we have vertex and texture indices
-        if (nextSeparator != std::string::npos &&
-           (nextSeparator > firstSeparator + 1 || nextSeparator == firstSeparator)) {
-            uint32_t tIdx = atoi(mRawFaces[i].c_str() + firstSeparator + 1);
-            if (!checkNegativeIndex(tIdx)) {
-                return;
-            }
-            // obj indexes things beginning 1
-            mParsedFaces[i].texIdx = (uint32_t)tIdx - 1;
-        }
-    }
-
-    // Make sure a face list exists before we go adding to it
-    if (mMeshes.back().mUnfilteredFaces.size() == 0) {
-        mMeshes.back().appendUnfilteredFaces(mLastMtl);
-    }
-
-    // Now we have our parsed face, that we need to triangulate as necessary
-    // Treat more complex polygons as fans.
-    // This approach will only work only for convex polygons
-    // but concave polygons need to be addressed elsewhere anyway
-    for (uint32_t next = 1; next < mParsedFaces.size() - 1; next ++) {
-        // push it to our current mesh
-        mMeshes.back().mUnfilteredFaces.back().push_back(mParsedFaces[0]);
-        mMeshes.back().mUnfilteredFaces.back().push_back(mParsedFaces[next]);
-        mMeshes.back().mUnfilteredFaces.back().push_back(mParsedFaces[next + 1]);
-    }
-}
-
-void ObjLoader::checkNewMeshCreation(std::string &newGroup) {
-    // start a new mesh if we have some faces
-    // accumulated on the current mesh.
-    // It's possible to have multiple group statements
-    // but we only care to actually start a new mesh
-    // once we can have something we can draw on the previous one
-    if (mMeshes.back().mUnfilteredFaces.size()) {
-        mMeshes.push_back(ObjMesh());
-    }
-
-    mMeshes.back().mName = newGroup;
-    printf("Converting vertex group: %s\n", newGroup.c_str());
-}
-
-void ObjLoader::handleObjLine(char *line) {
-    const char* vtxToken    = "v";
-    const char* normToken   = "vn";
-    const char* texToken    = "vt";
-    const char* groupToken  = "g";
-    const char* mtlToken    = "usemtl";
-    const char* faceToken   = "f";
-
-    std::istringstream lineStream(line, std::istringstream::in);
-
-    std::string token;
-    bool valid = getToken(lineStream, token);
-    if (!valid) {
-        return;
-    }
-
-    if (token == vtxToken) {
-        appendDataFromStream(mObjPositions, 3, lineStream);
-    } else if (token == normToken) {
-        appendDataFromStream(mObjNormals, 3, lineStream);
-    } else if (token == texToken) {
-        appendDataFromStream(mObjTextureCoords, 2, lineStream);
-    } else if (token == groupToken) {
-        valid = getToken(lineStream, token);
-        checkNewMeshCreation(token);
-    } else if (token == faceToken) {
-        mRawFaces.clear();
-        while(getToken(lineStream, token)) {
-            mRawFaces.push_back(token);
-        }
-        parseRawFaces();
-    }
-    // Ignore materials for now
-    else if (token == mtlToken) {
-        valid = getToken(lineStream, token);
-        mLastMtl = token;
-
-        mMeshes.back().appendUnfilteredFaces(token);
-    }
-}
-
-bool ObjLoader::init(const char *fileName) {
-
-    std::ifstream ifs(fileName , std::ifstream::in);
-    if (!ifs.good()) {
-        fprintf(stderr, "Failed to read file %s.\n", fileName);
-        return false;
-    }
-
-    mMeshes.clear();
-
-    const uint32_t maxBufferSize = 2048;
-    char *buffer = new char[maxBufferSize];
-
-    mMeshes.push_back(ObjMesh());
-
-    std::string token;
-    bool isDone = false;
-    while(!isDone) {
-        ifs.getline(buffer, maxBufferSize);
-        if (ifs.good() && ifs.gcount() > 0) {
-            handleObjLine(buffer);
-        } else {
-            isDone = true;
-        }
-    }
-
-    ifs.close();
-    delete buffer;
-
-    reIndexGeometry();
-
-    return true;
-}
-
-void ObjLoader::reIndexGeometry() {
-    // We want to know where each vertex lands
-    mVertexRemap.resize(mObjPositions.size() / mPositionsStride);
-
-    for (uint32_t m = 0; m < mMeshes.size(); m ++) {
-        // clear the remap vector of old data
-        for (uint32_t r = 0; r < mVertexRemap.size(); r ++) {
-            mVertexRemap[r].clear();
-        }
-
-        for (uint32_t i = 0; i < mMeshes[m].mUnfilteredFaces.size(); i ++) {
-            mMeshes[m].mTriangleLists[i].reserve(mMeshes[m].mUnfilteredFaces[i].size() * 2);
-            for (uint32_t fI = 0; fI < mMeshes[m].mUnfilteredFaces[i].size(); fI ++) {
-                uint32_t newIndex = reIndexGeometryPrim(mMeshes[m], mMeshes[m].mUnfilteredFaces[i][fI]);
-                mMeshes[m].mTriangleLists[i].push_back(newIndex);
-            }
-        }
-    }
-}
-
-uint32_t ObjLoader::reIndexGeometryPrim(ObjMesh &mesh, PrimitiveVtx &prim) {
-
-    std::vector<float> &mPositions = mesh.mChannels[0].mData;
-    std::vector<float> &mNormals = mesh.mChannels[1].mData;
-    std::vector<float> &mTextureCoords = mesh.mChannels[2].mData;
-
-    float posX = mObjPositions[prim.vertIdx * mPositionsStride + 0];
-    float posY = mObjPositions[prim.vertIdx * mPositionsStride + 1];
-    float posZ = mObjPositions[prim.vertIdx * mPositionsStride + 2];
-
-    float normX = 0.0f;
-    float normY = 0.0f;
-    float normZ = 0.0f;
-    if (prim.normIdx != MAX_INDEX) {
-        normX = mObjNormals[prim.normIdx * mNormalsStride + 0];
-        normY = mObjNormals[prim.normIdx * mNormalsStride + 1];
-        normZ = mObjNormals[prim.normIdx * mNormalsStride + 2];
-    }
-
-    float texCoordX = 0.0f;
-    float texCoordY = 0.0f;
-    if (prim.texIdx != MAX_INDEX) {
-        texCoordX = mObjTextureCoords[prim.texIdx * mTextureCoordsStride + 0];
-        texCoordY = mObjTextureCoords[prim.texIdx * mTextureCoordsStride + 1];
-    }
-
-    std::vector<unsigned int> &ithRemapList = mVertexRemap[prim.vertIdx];
-    // We may have some potential vertices we can reuse
-    // loop over all the potential candidates and see if any match our guy
-    for (unsigned int i = 0; i < ithRemapList.size(); i ++) {
-
-        int ithRemap = ithRemapList[i];
-        // compare existing vertex with the new one
-        if (mPositions[ithRemap * mPositionsStride + 0] != posX ||
-            mPositions[ithRemap * mPositionsStride + 1] != posY ||
-            mPositions[ithRemap * mPositionsStride + 2] != posZ) {
-            continue;
-        }
-
-        // Now go over normals
-        if (prim.normIdx != MAX_INDEX) {
-            if (mNormals[ithRemap * mNormalsStride + 0] != normX ||
-                mNormals[ithRemap * mNormalsStride + 1] != normY ||
-                mNormals[ithRemap * mNormalsStride + 2] != normZ) {
-                continue;
-            }
-        }
-
-        // And texcoords
-        if (prim.texIdx != MAX_INDEX) {
-            if (mTextureCoords[ithRemap * mTextureCoordsStride + 0] != texCoordX ||
-                mTextureCoords[ithRemap * mTextureCoordsStride + 1] != texCoordY) {
-                continue;
-            }
-        }
-
-        // If we got here the new vertex is identical to the one that we already stored
-        return ithRemap;
-    }
-
-    // We did not encounter this vertex yet, store it and return its index
-    mPositions.push_back(posX);
-    mPositions.push_back(posY);
-    mPositions.push_back(posZ);
-
-    if (prim.normIdx != MAX_INDEX) {
-        mNormals.push_back(normX);
-        mNormals.push_back(normY);
-        mNormals.push_back(normZ);
-    }
-
-    if (prim.texIdx != MAX_INDEX) {
-        mTextureCoords.push_back(texCoordX);
-        mTextureCoords.push_back(texCoordY);
-    }
-
-    // We need to remember this mapping. Since we are storing floats, not vec3's, need to
-    // divide by position size to get the right index
-    int currentVertexIndex = (mPositions.size()/mPositionsStride) - 1;
-    ithRemapList.push_back(currentVertexIndex);
-
-    return currentVertexIndex;
-}
diff --git a/tools/a3dconvert/ObjLoader.h b/tools/a3dconvert/ObjLoader.h
deleted file mode 100644
index a3eee04..0000000
--- a/tools/a3dconvert/ObjLoader.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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 _OBJ_LOADER_H_
-#define _OBJ_LOADER_H_
-
-#include <vector>
-#include <string>
-#include <iostream>
-#include <fstream>
-
-#include "GeometryLoader.h"
-
-using namespace android;
-using namespace android::renderscript;
-
-#define MAX_INDEX 0xffffffff
-
-class ObjLoader : public GeometryLoader {
-public:
-    ObjLoader();
-    virtual ~ObjLoader() {
-    }
-    virtual bool init(const char *objFile);
-
-    virtual SimpleMesh *getMesh(uint32_t meshIndex) {
-        return &mMeshes[meshIndex];
-    }
-    virtual uint32_t getNumMeshes() const {
-        return mMeshes.size();
-    }
-
-private:
-    // .obj has a global list of vertex data
-    std::vector<float> mObjPositions;
-    std::vector<float> mObjNormals;
-    std::vector<float> mObjTextureCoords;
-
-    struct PrimitiveVtx {
-        uint32_t vertIdx;
-        uint32_t normIdx;
-        uint32_t texIdx;
-
-        PrimitiveVtx() : vertIdx(MAX_INDEX),
-                         normIdx(MAX_INDEX),
-                         texIdx(MAX_INDEX){
-        }
-    };
-
-    // Scratch buffer for faces
-    std::vector<std::string> mRawFaces;
-    std::vector<PrimitiveVtx> mParsedFaces;
-    std::string mLastMtl;
-
-    // Groups are used to separate multiple meshes within the same .obj file
-    class ObjMesh : public SimpleMesh {
-    public:
-
-        std::vector<std::vector<PrimitiveVtx> > mUnfilteredFaces;
-
-        void appendUnfilteredFaces(std::string name) {
-            appendFaceList(name);
-            mUnfilteredFaces.push_back(std::vector<PrimitiveVtx>());
-            // Reserve some space for index data
-            static const uint32_t numReserveIndecies = 128;
-            mUnfilteredFaces.back().reserve(numReserveIndecies);
-        }
-
-        ObjMesh() {
-            appendChannel("position", 3);
-            appendChannel("normal", 3);
-            appendChannel("texture0", 2);
-        }
-    };
-
-    std::vector<ObjMesh> mMeshes;
-    void checkNewMeshCreation(std::string &newGroup);
-
-    void parseRawFaces();
-    void handleObjLine(char *line);
-
-    void reIndexGeometry();
-    uint32_t reIndexGeometryPrim(ObjMesh &mesh, PrimitiveVtx &prim);
-
-    unsigned int mPositionsStride;
-    unsigned int mNormalsStride;
-    unsigned int mTextureCoordsStride;
-
-    // This vector is used to remap a position index into a list
-    //  of all divergent vertices
-    std::vector<std::vector<unsigned int> > mVertexRemap;
-};
-
-#endif //_OBJ_LOADER_H_
diff --git a/tools/a3dconvert/SimpleMesh.h b/tools/a3dconvert/SimpleMesh.h
deleted file mode 100644
index c87bb7d..0000000
--- a/tools/a3dconvert/SimpleMesh.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * 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 _SIMPLE_MESH_H_
-#define _SIMPLE_MESH_H_
-
-#include <rsContext.h>
-#include <rsMesh.h>
-#include <string>
-using namespace android;
-using namespace android::renderscript;
-
-class SimpleMesh {
-public:
-    struct Channel {
-        std::vector<float> mData;
-        std::string mName;
-        uint32_t mStride;
-    };
-
-    // Vertex channels (position, normal)
-    // This assumes all the data array are the same size
-    std::vector<Channel> mChannels;
-
-    // Triangle list index data
-    std::vector<std::vector<uint32_t> > mTriangleLists;
-    // Names of all the triangle lists
-    std::vector<std::string> mTriangleListNames;
-    // Name of the entire object
-    std::string mName;
-
-    // Adds another index set to the mesh
-    void appendFaceList(std::string name) {
-        mTriangleListNames.push_back(name);
-        mTriangleLists.push_back(std::vector<uint32_t>());
-    }
-
-    // Adds another data channel (position, normal, etc.)
-    void appendChannel(std::string name, uint32_t stride) {
-        mChannels.push_back(Channel());
-        static const uint32_t reserveVtx = 128;
-        mChannels.back().mData.reserve(reserveVtx*stride);
-        mChannels.back().mName = name;
-        mChannels.back().mStride = stride;
-    }
-
-    SimpleMesh() {
-        // reserve some data in the vectors
-        // simply letting it grow by itself tends to waste a lot of time on
-        // rallocations / copies when dealing with geometry data
-        static const uint32_t reserveFaces = 8;
-        static const uint32_t reserveChannels = 8;
-        mTriangleLists.reserve(reserveFaces);
-        mTriangleListNames.reserve(reserveFaces);
-        mChannels.reserve(reserveChannels);
-    }
-
-    // Generates a renderscript mesh that could be used for a3d serialization
-    Mesh *getRsMesh(Context *rsc) {
-        if (mChannels.size() == 0) {
-            return NULL;
-        }
-
-        // Generate the element that describes our channel layout
-        Element::Builder vtxBuilder;
-        for (uint32_t c = 0; c < mChannels.size(); c ++) {
-            // Skip empty channels
-            if (mChannels[c].mData.size() == 0) {
-                continue;
-            }
-            ObjectBaseRef<const Element> subElem = Element::createRef(rsc,
-                                                                      RS_TYPE_FLOAT_32,
-                                                                      RS_KIND_USER,
-                                                                      false,
-                                                                      mChannels[c].mStride);
-            vtxBuilder.add(subElem.get(), mChannels[c].mName.c_str(), 1);
-        }
-        ObjectBaseRef<const Element> vertexDataElem = vtxBuilder.create(rsc);
-
-        uint32_t numVerts = mChannels[0].mData.size()/mChannels[0].mStride;
-        ObjectBaseRef<Type> vertexDataType = Type::getTypeRef(rsc, vertexDataElem.get(),
-                                                              numVerts, 0, 0, false, false);
-        vertexDataType->compute();
-
-        Allocation *vertexAlloc = Allocation::createAllocation(rsc, vertexDataType.get(),
-                                                               RS_ALLOCATION_USAGE_SCRIPT);
-
-        uint32_t vertexSize = vertexDataElem->getSizeBytes()/sizeof(float);
-        // Fill this allocation with some data
-        float *dataPtr = (float*)vertexAlloc->getPtr();
-        for (uint32_t i = 0; i < numVerts; i ++) {
-            // Find the pointer to the current vertex's data
-            uint32_t vertexPos = i*vertexSize;
-            float *vertexPtr = dataPtr + vertexPos;
-
-            for (uint32_t c = 0; c < mChannels.size(); c ++) {
-                // Skip empty channels
-                if (mChannels[c].mData.size() == 0) {
-                    continue;
-                }
-                for (uint32_t cStride = 0; cStride < mChannels[c].mStride; cStride ++) {
-                    *(vertexPtr++) = mChannels[c].mData[i * mChannels[c].mStride + cStride];
-                }
-            }
-        }
-
-        // Now lets write index data
-        ObjectBaseRef<const Element> indexElem = Element::createRef(rsc, RS_TYPE_UNSIGNED_16,
-                                                                    RS_KIND_USER, false, 1);
-
-        Mesh *mesh = new Mesh(rsc, 1, mTriangleLists.size());
-        mesh->setName(mName.c_str());
-        mesh->setVertexBuffer(vertexAlloc, 0);
-
-        // load all primitives
-        for (uint32_t pCount = 0; pCount < mTriangleLists.size(); pCount ++) {
-
-            uint32_t numIndicies = mTriangleLists[pCount].size();
-            ObjectBaseRef<Type> indexType = Type::getTypeRef(rsc, indexElem.get(),
-                                                             numIndicies, 0, 0, false, false );
-
-            indexType->compute();
-
-            Allocation *indexAlloc = Allocation::createAllocation(rsc, indexType.get(),
-                                                                  RS_ALLOCATION_USAGE_SCRIPT);
-            uint16_t *indexPtr = (uint16_t*)indexAlloc->getPtr();
-            const std::vector<uint32_t> &indexList = mTriangleLists[pCount];
-            uint32_t numTries = numIndicies / 3;
-
-            for (uint32_t i = 0; i < numTries; i ++) {
-                indexPtr[i * 3 + 0] = (uint16_t)indexList[i * 3 + 0];
-                indexPtr[i * 3 + 1] = (uint16_t)indexList[i * 3 + 1];
-                indexPtr[i * 3 + 2] = (uint16_t)indexList[i * 3 + 2];
-            }
-            indexAlloc->setName(mTriangleListNames[pCount].c_str());
-            mesh->setPrimitive(indexAlloc, RS_PRIMITIVE_TRIANGLE, pCount);
-        }
-
-        return mesh;
-    }
-};
-
-#endif
diff --git a/tools/a3dconvert/a3dconvert.cpp b/tools/a3dconvert/a3dconvert.cpp
deleted file mode 100644
index 3535b17..0000000
--- a/tools/a3dconvert/a3dconvert.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * 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 <iostream>
-#include <vector>
-
-#include "ColladaLoader.h"
-#include "ObjLoader.h"
-#include <rsContext.h>
-#include <rsFileA3D.h>
-
-bool rsdAllocationInit(const Context *rsc, Allocation *alloc, bool forceZero) {
-    void * ptr = malloc(alloc->mHal.state.type->getSizeBytes());
-    if (!ptr) {
-        return false;
-    }
-
-    alloc->mHal.drvState.mallocPtr = ptr;
-    if (forceZero) {
-        memset(ptr, 0, alloc->mHal.state.type->getSizeBytes());
-    }
-    return true;
-}
-
-void rsdAllocationDestroy(const Context *rsc, Allocation *alloc) {
-    if (alloc->mHal.drvState.mallocPtr) {
-        free(alloc->mHal.drvState.mallocPtr);
-        alloc->mHal.drvState.mallocPtr = NULL;
-    }
-}
-
-// We only care to implement allocation memory initialization and destruction
-// because we need no other renderscript hal features for serialization
-static RsdHalFunctions FunctionTable = {
-    NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,NULL },
-    {
-        rsdAllocationInit,
-        rsdAllocationDestroy,
-        NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
-    },
-    { NULL, NULL, NULL }, { NULL, NULL, NULL }, { NULL, NULL, NULL },
-    { NULL, NULL, NULL }, { NULL, NULL, NULL }, { NULL, NULL },
-    { NULL, NULL, NULL},
-};
-
-// No-op initizlizer for rs context hal since we only
-bool rsdHalInit(Context *rsc, uint32_t version_major, uint32_t version_minor) {
-    rsc->mHal.funcs = FunctionTable;
-    return true;
-}
-
-bool convertToA3D(GeometryLoader *loader, const char *a3dFile) {
-    if (!loader->getNumMeshes()) {
-        return false;
-    }
-    // Now write all this stuff out
-    Context *rsc = Context::createContextLite();
-    rsdHalInit(rsc, 0, 0);
-    FileA3D file(rsc);
-
-    for (uint32_t i = 0; i < loader->getNumMeshes(); i ++) {
-        Mesh *exportedMesh = loader->getMesh(i)->getRsMesh(rsc);
-        file.appendToFile(exportedMesh);
-        delete exportedMesh;
-    }
-
-    file.writeFile(a3dFile);
-    delete rsc;
-    return true;
-}
-
-int main (int argc, char * const argv[]) {
-    const char *objExt = ".obj";
-    const char *daeExt = ".dae";
-
-    if(argc != 3 && argc != 4) {
-        printf("-----------------------------------------------------------------\n");
-        printf("Usage:\n");
-        printf("a3dconvert input_file a3d_output_file\n");
-        printf("Currently .obj and .dae (collada) input files are accepted\n");
-        printf("-----------------------------------------------------------------\n");
-        return 1;
-    }
-
-    bool isSuccessful = false;
-
-    std::string filename = argv[1];
-    size_t dotPos = filename.find_last_of('.');
-    if (dotPos == std::string::npos) {
-        printf("Invalid input. Currently .obj and .dae (collada) input files are accepted\n");
-        return 1;
-    }
-
-    bool stripColladaGeo = false;
-    GeometryLoader *loader = NULL;
-    std::string ext = filename.substr(dotPos);
-    if (ext == daeExt) {
-        loader = new ColladaLoader();
-        if (argc == 4) {
-            std::string option = argv[3];
-            if (option == "-d") {
-                stripColladaGeo = true;
-            }
-        }
-    } else if (ext == objExt) {
-        loader = new ObjLoader();
-    } else {
-        printf("Invalid input. Currently .obj and .dae (collada) input files are accepted\n");
-        return 1;
-    }
-
-    isSuccessful = loader->init(argv[1]);
-    if (isSuccessful) {
-        isSuccessful = convertToA3D(loader, argv[2]);
-    }
-
-    if (isSuccessful && stripColladaGeo) {
-        ColladaLoader *colladaLoader = (ColladaLoader*)loader;
-        colladaLoader->stripGeometryAndSave();
-    }
-
-    delete loader;
-
-    if(isSuccessful) {
-        printf("---All done---\n");
-    } else {
-        printf("---Encountered errors, conversion failed---\n");
-    }
-
-    return isSuccessful ? 0 : 1;
-}
diff --git a/tools/a3dconvert/license.txt b/tools/a3dconvert/license.txt
deleted file mode 100755
index 354667a..0000000
--- a/tools/a3dconvert/license.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Parts of this code come from colladaDom with the license below. The rest is AOSP.
-
-
-
-The MIT License

-

-Copyright 2006 Sony Computer Entertainment Inc.

-

-Permission is hereby granted, free of charge, to any person obtaining a copy

-of this software and associated documentation files (the "Software"), to deal

-in the Software without restriction, including without limitation the rights

-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

-copies of the Software, and to permit persons to whom the Software is

-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 Software.

-

-THE SOFTWARE IS 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 SOFTWARE OR THE USE OR OTHER DEALINGS IN

-THE SOFTWARE.

diff --git a/tools/elftree/Android.mk b/tools/elftree/Android.mk
index 0bba0f2..c2199aa 100644
--- a/tools/elftree/Android.mk
+++ b/tools/elftree/Android.mk
@@ -14,6 +14,10 @@
 
 LOCAL_PATH := $(call my-dir)
 
+supported_platforms := linux-x86 darwin-x86
+cur_platform := $(filter $(HOST_OS)-$(HOST_ARCH),$(supported_platforms))
+
+ifdef cur_platform
 
 # Target executable
 # TODO: Requires libelf for target
@@ -35,5 +39,10 @@
 LOCAL_MODULE := elftree
 LOCAL_SRC_FILES := elftree.c
 LOCAL_C_INCLUDES := external/elfutils/libelf
+# to fix compatibility issues in elf headers across different platforms
+LOCAL_CFLAGS += \
+	-include external/elfutils/host-$(HOST_OS)-fixup/AndroidFixup.h
 LOCAL_STATIC_LIBRARIES := libelf
 include $(BUILD_HOST_EXECUTABLE)
+
+endif #cur_platform
diff --git a/tools/emulator/skins/WXGA800-7in/arrow_down.png b/tools/emulator/skins/WXGA800-7in/arrow_down.png
new file mode 100755
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/arrow_left.png b/tools/emulator/skins/WXGA800-7in/arrow_left.png
new file mode 100755
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/arrow_right.png b/tools/emulator/skins/WXGA800-7in/arrow_right.png
new file mode 100755
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/arrow_up.png b/tools/emulator/skins/WXGA800-7in/arrow_up.png
new file mode 100755
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/background_land.png b/tools/emulator/skins/WXGA800-7in/background_land.png
new file mode 100755
index 0000000..cb10cd8
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/background_port.png b/tools/emulator/skins/WXGA800-7in/background_port.png
new file mode 100755
index 0000000..76851da
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/button.png b/tools/emulator/skins/WXGA800-7in/button.png
new file mode 100755
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/button.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/controls.png b/tools/emulator/skins/WXGA800-7in/controls.png
new file mode 100755
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/controls.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/hardware.ini b/tools/emulator/skins/WXGA800-7in/hardware.ini
new file mode 100755
index 0000000..43aae6d
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/hardware.ini
@@ -0,0 +1,7 @@
+# skin-specific hardware values
+hw.lcd.density=213
+vm.heapSize=48
+hw.ramSize=1024
+hw.keyboard.lid=no
+hw.mainKeys=no
+
diff --git a/tools/emulator/skins/WXGA800-7in/key.png b/tools/emulator/skins/WXGA800-7in/key.png
new file mode 100755
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/key.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/keyboard.png b/tools/emulator/skins/WXGA800-7in/keyboard.png
new file mode 100755
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/layout b/tools/emulator/skins/WXGA800-7in/layout
new file mode 100755
index 0000000..0aaeb1e
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/layout
@@ -0,0 +1,88 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   1280
+            height  800
+            x       0
+            y       0
+        }
+    }
+    
+}
+
+layouts {
+
+    landscape {
+        width     1333
+        height    855
+        color     0xe0e0e0
+        event     EV_SW:0:1
+
+        part1 {
+            name    portrait
+            x       1400
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         26
+            y         29
+        }
+    }
+
+    portrait {
+        width     853
+        height    1334
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        dpad-rotation 3
+        
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       1400
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       27
+            y       1307
+            rotation  3
+        }
+    }
+
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/WXGA800-7in/select.png b/tools/emulator/skins/WXGA800-7in/select.png
new file mode 100755
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/select.png
Binary files differ
diff --git a/tools/emulator/skins/WXGA800-7in/spacebar.png b/tools/emulator/skins/WXGA800-7in/spacebar.png
new file mode 100755
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/WXGA800-7in/spacebar.png
Binary files differ
diff --git a/tools/emulator/system/camera/Android.mk b/tools/emulator/system/camera/Android.mk
index 2e5c19c..c51f621 100755
--- a/tools/emulator/system/camera/Android.mk
+++ b/tools/emulator/system/camera/Android.mk
@@ -35,12 +35,15 @@
 	libandroid_runtime \
 
 LOCAL_C_INCLUDES += external/jpeg \
-					external/skia/include/core/ \
-					frameworks/base/core/jni/android/graphics
+	external/skia/include/core/ \
+	frameworks/native/include/media/hardware \
+	frameworks/base/core/jni/android/graphics \
+	$(call include-path-for, camera)
 
 LOCAL_SRC_FILES := \
 	EmulatedCameraHal.cpp \
     EmulatedCameraFactory.cpp \
+    EmulatedBaseCamera.cpp \
     EmulatedCamera.cpp \
 	EmulatedCameraDevice.cpp \
 	EmulatedQemuCamera.cpp \
@@ -51,7 +54,10 @@
 	PreviewWindow.cpp \
 	CallbackNotifier.cpp \
 	QemuClient.cpp \
-	JpegCompressor.cpp
+	JpegCompressor.cpp \
+    EmulatedCamera2.cpp \
+	EmulatedFakeCamera2.cpp \
+	EmulatedQemuCamera2.cpp
 
 ifeq ($(TARGET_PRODUCT),vbox_x86)
 LOCAL_MODULE := camera.vbox_x86
diff --git a/tools/emulator/system/camera/CallbackNotifier.cpp b/tools/emulator/system/camera/CallbackNotifier.cpp
index f974b86..140c872 100755
--- a/tools/emulator/system/camera/CallbackNotifier.cpp
+++ b/tools/emulator/system/camera/CallbackNotifier.cpp
@@ -22,7 +22,7 @@
 #define LOG_NDEBUG 0
 #define LOG_TAG "EmulatedCamera_CallbackNotifier"
 #include <cutils/log.h>
-#include <media/stagefright/MetadataBufferType.h>
+#include <MetadataBufferType.h>
 #include "EmulatedCameraDevice.h"
 #include "CallbackNotifier.h"
 #include "JpegCompressor.h"
@@ -80,7 +80,7 @@
     const char* strs[lCameraMessagesNum];
     const int translated = GetMessageStrings(msg, strs, lCameraMessagesNum);
     for (int n = 0; n < translated; n++) {
-        LOGV("    %s", strs[n]);
+        ALOGV("    %s", strs[n]);
     }
 }
 
@@ -113,7 +113,7 @@
                                     camera_request_memory get_memory,
                                     void* user)
 {
-    LOGV("%s: %p, %p, %p, %p (%p)",
+    ALOGV("%s: %p, %p, %p, %p (%p)",
          __FUNCTION__, notify_cb, data_cb, data_cb_timestamp, get_memory, user);
 
     Mutex::Autolock locker(&mObjectLock);
@@ -126,29 +126,29 @@
 
 void CallbackNotifier::enableMessage(uint msg_type)
 {
-    LOGV("%s: msg_type = 0x%x", __FUNCTION__, msg_type);
+    ALOGV("%s: msg_type = 0x%x", __FUNCTION__, msg_type);
     PrintMessages(msg_type);
 
     Mutex::Autolock locker(&mObjectLock);
     mMessageEnabler |= msg_type;
-    LOGV("**** Currently enabled messages:");
+    ALOGV("**** Currently enabled messages:");
     PrintMessages(mMessageEnabler);
 }
 
 void CallbackNotifier::disableMessage(uint msg_type)
 {
-    LOGV("%s: msg_type = 0x%x", __FUNCTION__, msg_type);
+    ALOGV("%s: msg_type = 0x%x", __FUNCTION__, msg_type);
     PrintMessages(msg_type);
 
     Mutex::Autolock locker(&mObjectLock);
     mMessageEnabler &= ~msg_type;
-    LOGV("**** Currently enabled messages:");
+    ALOGV("**** Currently enabled messages:");
     PrintMessages(mMessageEnabler);
 }
 
 status_t CallbackNotifier::enableVideoRecording(int fps)
 {
-    LOGV("%s: FPS = %d", __FUNCTION__, fps);
+    ALOGV("%s: FPS = %d", __FUNCTION__, fps);
 
     Mutex::Autolock locker(&mObjectLock);
     mVideoRecEnabled = true;
@@ -160,7 +160,7 @@
 
 void CallbackNotifier::disableVideoRecording()
 {
-    LOGV("%s:", __FUNCTION__);
+    ALOGV("%s:", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     mVideoRecEnabled = false;
@@ -215,7 +215,7 @@
             mDataCBTimestamp(timestamp, CAMERA_MSG_VIDEO_FRAME,
                                cam_buff, 0, mCBOpaque);
         } else {
-            LOGE("%s: Memory failure in CAMERA_MSG_VIDEO_FRAME", __FUNCTION__);
+            ALOGE("%s: Memory failure in CAMERA_MSG_VIDEO_FRAME", __FUNCTION__);
         }
     }
 
@@ -227,7 +227,7 @@
             mDataCB(CAMERA_MSG_PREVIEW_FRAME, cam_buff, 0, NULL, mCBOpaque);
             cam_buff->release(cam_buff);
         } else {
-            LOGE("%s: Memory failure in CAMERA_MSG_PREVIEW_FRAME", __FUNCTION__);
+            ALOGE("%s: Memory failure in CAMERA_MSG_PREVIEW_FRAME", __FUNCTION__);
         }
     }
 
@@ -261,10 +261,10 @@
                     mDataCB(CAMERA_MSG_COMPRESSED_IMAGE, jpeg_buff, 0, NULL, mCBOpaque);
                     jpeg_buff->release(jpeg_buff);
                 } else {
-                    LOGE("%s: Memory failure in CAMERA_MSG_VIDEO_FRAME", __FUNCTION__);
+                    ALOGE("%s: Memory failure in CAMERA_MSG_VIDEO_FRAME", __FUNCTION__);
                 }
             } else {
-                LOGE("%s: Compression failure in CAMERA_MSG_VIDEO_FRAME", __FUNCTION__);
+                ALOGE("%s: Compression failure in CAMERA_MSG_VIDEO_FRAME", __FUNCTION__);
             }
         }
     }
diff --git a/tools/emulator/system/camera/EmulatedBaseCamera.cpp b/tools/emulator/system/camera/EmulatedBaseCamera.cpp
new file mode 100644
index 0000000..19d398e
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedBaseCamera.cpp
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+
+/*
+ * Contains implementation of a class EmulatedBaseCamera that encapsulates
+ * functionality common to all emulated camera device versions ("fake",
+ * "webcam", "video file", "cam2.0" etc.).  Instances of this class (for each
+ * emulated camera) are created during the construction of the
+ * EmulatedCameraFactory instance.  This class serves as an entry point for all
+ * camera API calls that are common across all versions of the
+ * camera_device_t/camera_module_t structures.
+ */
+
+#define LOG_NDEBUG 0
+#define LOG_TAG "EmulatedCamera_BaseCamera"
+#include <cutils/log.h>
+
+#include "EmulatedBaseCamera.h"
+
+namespace android {
+
+EmulatedBaseCamera::EmulatedBaseCamera(int cameraId,
+        uint32_t cameraVersion,
+        struct hw_device_t* device,
+        struct hw_module_t* module)
+        : mCameraInfo(NULL),
+          mCameraID(cameraId),
+          mCameraDeviceVersion(cameraVersion)
+{
+    /*
+     * Initialize camera_device descriptor for this object.
+     */
+
+    /* Common header */
+    device->tag = HARDWARE_DEVICE_TAG;
+    device->version = cameraVersion;
+    device->module = module;
+    device->close = NULL; // Must be filled in by child implementation
+}
+
+EmulatedBaseCamera::~EmulatedBaseCamera()
+{
+}
+
+status_t EmulatedBaseCamera::getCameraInfo(struct camera_info* info)
+{
+    ALOGV("%s", __FUNCTION__);
+
+    info->device_version = mCameraDeviceVersion;
+    if (mCameraDeviceVersion >= HARDWARE_DEVICE_API_VERSION(2, 0)) {
+        info->static_camera_characteristics = mCameraInfo;
+    } else {
+        info->static_camera_characteristics = (camera_metadata_t*)0xcafef00d;
+    }
+
+    return NO_ERROR;
+}
+
+
+} /* namespace android */
diff --git a/tools/emulator/system/camera/EmulatedBaseCamera.h b/tools/emulator/system/camera/EmulatedBaseCamera.h
new file mode 100644
index 0000000..5888ca0
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedBaseCamera.h
@@ -0,0 +1,101 @@
+/*
+ * 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 HW_EMULATOR_CAMERA_EMULATED_BASE_CAMERA_H
+#define HW_EMULATOR_CAMERA_EMULATED_BASE_CAMERA_H
+
+#include <hardware/camera_common.h>
+#include <utils/Errors.h>
+
+namespace android {
+
+/*
+ * Contains declaration of a class EmulatedBaseCamera that encapsulates
+ * functionality common to all emulated camera device versions ("fake",
+ * "webcam", "video file", etc.).  Instances of this class (for each emulated
+ * camera) are created during the construction of the EmulatedCameraFactory
+ * instance.  This class serves as an entry point for all camera API calls that
+ * are common across all versions of the camera_device_t/camera_module_t
+ * structures.
+ */
+
+class EmulatedBaseCamera {
+  public:
+    EmulatedBaseCamera(int cameraId,
+            uint32_t cameraVersion,
+            struct hw_device_t* device,
+            struct hw_module_t* module);
+
+    virtual ~EmulatedBaseCamera();
+
+    /****************************************************************************
+     * Public API
+     ***************************************************************************/
+
+  public:
+    /* Initializes EmulatedCamera instance.
+     * Return:
+     *  NO_ERROR on success, or an appropriate error status on failure.
+     */
+    virtual status_t Initialize() = 0;
+
+    /****************************************************************************
+     * Camera API implementation
+     ***************************************************************************/
+
+  public:
+    /* Creates connection to the emulated camera device.
+     * This method is called in response to hw_module_methods_t::open callback.
+     * NOTE: When this method is called the object is locked.
+     * Note that failures in this method are reported as negative EXXX statuses.
+     */
+    virtual status_t connectCamera(hw_device_t** device) = 0;
+
+    /* Closes connection to the emulated camera.
+     * This method is called in response to camera_device::close callback.
+     * NOTE: When this method is called the object is locked.
+     * Note that failures in this method are reported as negative EXXX statuses.
+     */
+    virtual status_t closeCamera() = 0;
+
+    /* Gets camera information.
+     * This method is called in response to camera_module_t::get_camera_info
+     * callback.
+     * NOTE: When this method is called the object is locked.
+     * Note that failures in this method are reported as negative EXXX statuses.
+     */
+    virtual status_t getCameraInfo(struct camera_info* info) = 0;
+
+    /****************************************************************************
+     * Data members
+     ***************************************************************************/
+
+  protected:
+    /* Fixed camera information for camera2 devices. Must be valid to access if
+     * mCameraDeviceVersion is >= HARDWARE_DEVICE_API_VERSION(2,0)  */
+    camera_metadata_t *mCameraInfo;
+
+  private:
+    /* Zero-based ID assigned to this camera. */
+    int mCameraID;
+
+    /* Version of the camera device HAL implemented by this camera */
+    int mCameraDeviceVersion;
+};
+
+} /* namespace android */
+
+#endif /* HW_EMULATOR_CAMERA_EMULATED_BASE_CAMERA_H */
diff --git a/tools/emulator/system/camera/EmulatedCamera.cpp b/tools/emulator/system/camera/EmulatedCamera.cpp
index 02b4683..28aede1 100755
--- a/tools/emulator/system/camera/EmulatedCamera.cpp
+++ b/tools/emulator/system/camera/EmulatedCamera.cpp
@@ -28,7 +28,7 @@
 #include <cutils/log.h>
 #include <ui/Rect.h>
 #include "EmulatedCamera.h"
-#include "EmulatedFakeCameraDevice.h"
+//#include "EmulatedFakeCameraDevice.h"
 #include "Converters.h"
 
 /* Defines whether we should trace parameter changes. */
@@ -58,22 +58,17 @@
  */
 static char* AddValue(const char* param, const char* val);
 
-EmulatedCamera::EmulatedCamera(int cameraId, struct hw_module_t* module)
-        : mPreviewWindow(),
-          mCallbackNotifier(),
-          mCameraID(cameraId)
+EmulatedCamera::EmulatedCamera(int cameraId,
+                               struct hw_module_t* module)
+        : EmulatedBaseCamera(cameraId,
+                HARDWARE_DEVICE_API_VERSION(1, 0),
+                &common,
+                module),
+          mPreviewWindow(),
+          mCallbackNotifier()
 {
-    /*
-     * Initialize camera_device descriptor for this object.
-     */
-
-    /* Common header */
-    common.tag = HARDWARE_DEVICE_TAG;
-    common.version = 0;
-    common.module = module;
+    /* camera_device v1 fields. */
     common.close = EmulatedCamera::close;
-
-    /* camera_device fields. */
     ops = &mDeviceOps;
     priv = this;
 }
@@ -99,12 +94,8 @@
      * Fake required parameters.
      */
 
-    mParameters.set(CameraParameters::KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES,
-                    "320x240,0x0");
-    mParameters.set(CameraParameters::KEY_MAX_EXPOSURE_COMPENSATION, "6");
-    mParameters.set(CameraParameters::KEY_MIN_EXPOSURE_COMPENSATION, "-6");
-    mParameters.set(CameraParameters::KEY_EXPOSURE_COMPENSATION_STEP, "0.5");
-    mParameters.set(CameraParameters::KEY_EXPOSURE_COMPENSATION, "0");
+    mParameters.set(CameraParameters::KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES, "320x240,0x0");
+
     mParameters.set(CameraParameters::KEY_JPEG_THUMBNAIL_WIDTH, "512");
     mParameters.set(CameraParameters::KEY_JPEG_THUMBNAIL_HEIGHT, "384");
     mParameters.set(CameraParameters::KEY_JPEG_QUALITY, "90");
@@ -137,10 +128,36 @@
                     CameraParameters::PIXEL_FORMAT_JPEG);
     mParameters.setPictureFormat(CameraParameters::PIXEL_FORMAT_JPEG);
 
-    /*
-     * Not supported features
-     */
+    /* Set exposure compensation. */
+    mParameters.set(CameraParameters::KEY_MAX_EXPOSURE_COMPENSATION, "6");
+    mParameters.set(CameraParameters::KEY_MIN_EXPOSURE_COMPENSATION, "-6");
+    mParameters.set(CameraParameters::KEY_EXPOSURE_COMPENSATION_STEP, "0.5");
+    mParameters.set(CameraParameters::KEY_EXPOSURE_COMPENSATION, "0");
 
+    /* Sets the white balance modes and the device-dependent scale factors. */
+    char supported_white_balance[1024];
+    snprintf(supported_white_balance, sizeof(supported_white_balance),
+             "%s,%s,%s,%s",
+             CameraParameters::WHITE_BALANCE_AUTO,
+             CameraParameters::WHITE_BALANCE_INCANDESCENT,
+             CameraParameters::WHITE_BALANCE_DAYLIGHT,
+             CameraParameters::WHITE_BALANCE_TWILIGHT);
+    mParameters.set(CameraParameters::KEY_SUPPORTED_WHITE_BALANCE,
+                    supported_white_balance);
+    mParameters.set(CameraParameters::KEY_WHITE_BALANCE,
+                    CameraParameters::WHITE_BALANCE_AUTO);
+    getCameraDevice()->initializeWhiteBalanceModes(
+            CameraParameters::WHITE_BALANCE_AUTO, 1.0f, 1.0f);
+    getCameraDevice()->initializeWhiteBalanceModes(
+            CameraParameters::WHITE_BALANCE_INCANDESCENT, 1.38f, 0.60f);
+    getCameraDevice()->initializeWhiteBalanceModes(
+            CameraParameters::WHITE_BALANCE_DAYLIGHT, 1.09f, 0.92f);
+    getCameraDevice()->initializeWhiteBalanceModes(
+            CameraParameters::WHITE_BALANCE_TWILIGHT, 0.92f, 1.22f);
+    getCameraDevice()->setWhiteBalanceMode(CameraParameters::WHITE_BALANCE_AUTO);
+
+    /* Not supported features
+     */
     mParameters.set(CameraParameters::KEY_SUPPORTED_FOCUS_MODES,
                     CameraParameters::FOCUS_MODE_FIXED);
     mParameters.set(CameraParameters::KEY_FOCUS_MODE,
@@ -172,11 +189,11 @@
 
 status_t EmulatedCamera::connectCamera(hw_device_t** device)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     status_t res = EINVAL;
     EmulatedCameraDevice* const camera_dev = getCameraDevice();
-    LOGE_IF(camera_dev == NULL, "%s: No camera device instance.", __FUNCTION__);
+    ALOGE_IF(camera_dev == NULL, "%s: No camera device instance.", __FUNCTION__);
 
     if (camera_dev != NULL) {
         /* Connect to the camera device. */
@@ -191,14 +208,14 @@
 
 status_t EmulatedCamera::closeCamera()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     return cleanupCamera();
 }
 
 status_t EmulatedCamera::getCameraInfo(struct camera_info* info)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     const char* valstr = NULL;
 
@@ -221,7 +238,7 @@
         info->orientation = 0;
     }
 
-    return NO_ERROR;
+    return EmulatedBaseCamera::getCameraInfo(info);
 }
 
 status_t EmulatedCamera::setPreviewWindow(struct preview_stream_ops* window)
@@ -301,7 +318,7 @@
 
 status_t EmulatedCamera::setAutoFocus()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     /* TODO: Future enhancements. */
     return NO_ERROR;
@@ -309,7 +326,7 @@
 
 status_t EmulatedCamera::cancelAutoFocus()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     /* TODO: Future enhancements. */
     return NO_ERROR;
@@ -317,7 +334,7 @@
 
 status_t EmulatedCamera::takePicture()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     status_t res;
     int width, height;
@@ -336,7 +353,7 @@
         /* We only have JPEG converted for NV21 format. */
         org_fmt = V4L2_PIX_FMT_NV21;
     } else {
-        LOGE("%s: Unsupported pixel format %s", __FUNCTION__, pix_fmt);
+        ALOGE("%s: Unsupported pixel format %s", __FUNCTION__, pix_fmt);
         return EINVAL;
     }
     /* Get JPEG quality. */
@@ -359,7 +376,7 @@
      * enabled. */
     EmulatedCameraDevice* const camera_dev = getCameraDevice();
     if (camera_dev->isStarted()) {
-        LOGW("%s: Camera device is started", __FUNCTION__);
+        ALOGW("%s: Camera device is started", __FUNCTION__);
         camera_dev->stopDeliveringFrames();
         camera_dev->stopDevice();
     }
@@ -369,7 +386,7 @@
      */
 
     /* Start camera device for the picture frame. */
-    LOGD("Starting camera for picture: %.4s(%s)[%dx%d]",
+    ALOGD("Starting camera for picture: %.4s(%s)[%dx%d]",
          reinterpret_cast<const char*>(&org_fmt), pix_fmt, width, height);
     res = camera_dev->startDevice(width, height, org_fmt);
     if (res != NO_ERROR) {
@@ -394,20 +411,23 @@
 
 status_t EmulatedCamera::cancelPicture()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     return NO_ERROR;
 }
 
 status_t EmulatedCamera::setParameters(const char* parms)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
     PrintParamDiff(mParameters, parms);
 
     CameraParameters new_param;
     String8 str8_param(parms);
     new_param.unflatten(str8_param);
 
+    /*
+     * Check for new exposure compensation parameter.
+     */
     int new_exposure_compensation = new_param.getInt(
             CameraParameters::KEY_EXPOSURE_COMPENSATION);
     const int min_exposure_compensation = new_param.getInt(
@@ -435,6 +455,24 @@
                     exposure_value);
         }
     }
+
+    const char* new_white_balance = new_param.get(
+            CameraParameters::KEY_WHITE_BALANCE);
+    const char* supported_white_balance = new_param.get(
+            CameraParameters::KEY_SUPPORTED_WHITE_BALANCE);
+
+    if ((supported_white_balance != NULL) && (new_white_balance != NULL) &&
+        (strstr(supported_white_balance, new_white_balance) != NULL)) {
+
+        const char* current_white_balance = mParameters.get(
+                CameraParameters::KEY_WHITE_BALANCE);
+        if ((current_white_balance == NULL) ||
+            (strcmp(current_white_balance, new_white_balance) != 0)) {
+            ALOGV("Setting white balance to %s", new_white_balance);
+            getCameraDevice()->setWhiteBalanceMode(new_white_balance);
+        }
+    }
+
     mParameters = new_param;
 
     return NO_ERROR;
@@ -453,7 +491,7 @@
         strncpy(ret_str, params.string(), params.length()+1);
         return ret_str;
     } else {
-        LOGE("%s: Unable to allocate string for %s", __FUNCTION__, params.string());
+        ALOGE("%s: Unable to allocate string for %s", __FUNCTION__, params.string());
         /* Apparently, we can't return NULL fron this routine. */
         return &lNoParam;
     }
@@ -469,7 +507,7 @@
 
 status_t EmulatedCamera::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2)
 {
-    LOGV("%s: cmd = %d, arg1 = %d, arg2 = %d", __FUNCTION__, cmd, arg1, arg2);
+    ALOGV("%s: cmd = %d, arg1 = %d, arg2 = %d", __FUNCTION__, cmd, arg1, arg2);
 
     /* TODO: Future enhancements. */
     return 0;
@@ -477,14 +515,14 @@
 
 void EmulatedCamera::releaseCamera()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     cleanupCamera();
 }
 
 status_t EmulatedCamera::dumpCamera(int fd)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     /* TODO: Future enhancements. */
     return -EINVAL;
@@ -496,7 +534,7 @@
 
 status_t EmulatedCamera::doStartPreview()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     EmulatedCameraDevice* camera_dev = getCameraDevice();
     if (camera_dev->isStarted()) {
@@ -547,7 +585,7 @@
         pix_fmt = mParameters.getPreviewFormat();
     }
     if (pix_fmt == NULL) {
-        LOGE("%s: Unable to obtain video format", __FUNCTION__);
+        ALOGE("%s: Unable to obtain video format", __FUNCTION__);
         mPreviewWindow.stopPreview();
         return EINVAL;
     }
@@ -561,11 +599,11 @@
     } else if (strcmp(pix_fmt, CameraParameters::PIXEL_FORMAT_YUV420SP) == 0) {
         org_fmt = V4L2_PIX_FMT_NV21;
     } else {
-        LOGE("%s: Unsupported pixel format %s", __FUNCTION__, pix_fmt);
+        ALOGE("%s: Unsupported pixel format %s", __FUNCTION__, pix_fmt);
         mPreviewWindow.stopPreview();
         return EINVAL;
     }
-    LOGD("Starting camera: %dx%d -> %.4s(%s)",
+    ALOGD("Starting camera: %dx%d -> %.4s(%s)",
          width, height, reinterpret_cast<const char*>(&org_fmt), pix_fmt);
     res = camera_dev->startDevice(width, height, org_fmt);
     if (res != NO_ERROR) {
@@ -584,7 +622,7 @@
 
 status_t EmulatedCamera::doStopPreview()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     status_t res = NO_ERROR;
     if (mPreviewWindow.isPreviewEnabled()) {
@@ -652,7 +690,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->setPreviewWindow(window);
@@ -668,7 +706,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->setCallbacks(notify_cb, data_cb, data_cb_timestamp, get_memory, user);
@@ -678,7 +716,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->enableMsgType(msg_type);
@@ -688,7 +726,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->disableMsgType(msg_type);
@@ -698,7 +736,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->isMsgTypeEnabled(msg_type);
@@ -708,7 +746,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->startPreview();
@@ -718,7 +756,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->stopPreview();
@@ -728,7 +766,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->isPreviewEnabled();
@@ -739,7 +777,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->storeMetaDataInBuffers(enable);
@@ -749,7 +787,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->startRecording();
@@ -759,7 +797,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->stopRecording();
@@ -769,7 +807,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->isRecordingEnabled();
@@ -780,7 +818,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->releaseRecordingFrame(opaque);
@@ -790,7 +828,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->setAutoFocus();
@@ -800,7 +838,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->cancelAutoFocus();
@@ -810,7 +848,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->takePicture();
@@ -820,7 +858,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->cancelPicture();
@@ -830,7 +868,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->setParameters(parms);
@@ -840,7 +878,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return NULL;
     }
     return ec->getParameters();
@@ -850,7 +888,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->putParameters(params);
@@ -863,7 +901,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->sendCommand(cmd, arg1, arg2);
@@ -873,7 +911,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return;
     }
     ec->releaseCamera();
@@ -883,7 +921,7 @@
 {
     EmulatedCamera* ec = reinterpret_cast<EmulatedCamera*>(dev->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->dumpCamera(fd);
@@ -894,7 +932,7 @@
     EmulatedCamera* ec =
         reinterpret_cast<EmulatedCamera*>(reinterpret_cast<struct camera_device*>(device)->priv);
     if (ec == NULL) {
-        LOGE("%s: Unexpected NULL camera device", __FUNCTION__);
+        ALOGE("%s: Unexpected NULL camera device", __FUNCTION__);
         return -EINVAL;
     }
     return ec->closeCamera();
@@ -954,7 +992,7 @@
     const size_t len1 = strlen(param);
     const size_t len2 = strlen(val);
     char* ret = reinterpret_cast<char*>(malloc(len1 + len2 + 2));
-    LOGE_IF(ret == NULL, "%s: Memory failure", __FUNCTION__);
+    ALOGE_IF(ret == NULL, "%s: Memory failure", __FUNCTION__);
     if (ret != NULL) {
         memcpy(ret, param, len1);
         ret[len1] = ',';
@@ -986,13 +1024,13 @@
             const char* in_current = current.get(tmp);
             if (in_current != NULL) {
                 if (strcmp(in_current, val)) {
-                    LOGD("=== Value changed: %s: %s -> %s", tmp, in_current, val);
+                    ALOGD("=== Value changed: %s: %s -> %s", tmp, in_current, val);
                 }
             } else {
-                LOGD("+++ New parameter: %s=%s", tmp, val);
+                ALOGD("+++ New parameter: %s=%s", tmp, val);
             }
         } else {
-            LOGW("No value separator in %s", tmp);
+            ALOGW("No value separator in %s", tmp);
         }
         wrk = next + 1;
         next = strchr(wrk, ';');
diff --git a/tools/emulator/system/camera/EmulatedCamera.h b/tools/emulator/system/camera/EmulatedCamera.h
index 0a7584e..9825d5d 100755
--- a/tools/emulator/system/camera/EmulatedCamera.h
+++ b/tools/emulator/system/camera/EmulatedCamera.h
@@ -18,31 +18,32 @@
 #define HW_EMULATOR_CAMERA_EMULATED_CAMERA_H
 
 /*
- * Contains declaration of a class EmulatedCamera that encapsulates functionality
- * common to all emulated cameras ("fake", "webcam", "video file", etc.).
- * Instances of this class (for each emulated camera) are created during the
- * construction of the EmulatedCameraFactory instance.
- * This class serves as an entry point for all camera API calls that defined
- * by camera_device_ops_t API.
+ * Contains declaration of a class EmulatedCamera that encapsulates
+ * functionality common to all version 1.0 emulated camera devices ("fake",
+ * "webcam", "video file", etc.).  Instances of this class (for each emulated
+ * camera) are created during the construction of the EmulatedCameraFactory
+ * instance.  This class serves as an entry point for all camera API calls that
+ * defined by camera_device_ops_t API.
  */
 
 #include <camera/CameraParameters.h>
+#include "EmulatedBaseCamera.h"
 #include "EmulatedCameraDevice.h"
 #include "PreviewWindow.h"
 #include "CallbackNotifier.h"
 
 namespace android {
 
-/* Encapsulates functionality common to all emulated cameras ("fake", "webcam",
- * "file stream", etc.).
+/* Encapsulates functionality common to all version 1.0 emulated camera devices
+ * ("fake", "webcam", "file stream", etc.).
  *
  * Note that EmulatedCameraFactory instantiates object of this class just once,
  * when EmulatedCameraFactory instance gets constructed. Connection to /
- * disconnection from the actual camera device is handled by calls to connectDevice(),
- * and closeCamera() methods of this class that are ivoked in response to
- * hw_module_methods_t::open, and camera_device::close callbacks.
+ * disconnection from the actual camera device is handled by calls to
+ * connectDevice(), and closeCamera() methods of this class that are ivoked in
+ * response to hw_module_methods_t::open, and camera_device::close callbacks.
  */
-class EmulatedCamera : public camera_device {
+class EmulatedCamera : public camera_device, public EmulatedBaseCamera {
 public:
     /* Constructs EmulatedCamera instance.
      * Param:
@@ -50,7 +51,8 @@
      *      instance in camera factory's array.
      *  module - Emulated camera HAL module descriptor.
      */
-    EmulatedCamera(int cameraId, struct hw_module_t* module);
+    EmulatedCamera(int cameraId,
+                   struct hw_module_t* module);
 
     /* Destructs EmulatedCamera instance. */
     virtual ~EmulatedCamera();
@@ -69,10 +71,7 @@
      ***************************************************************************/
 
 public:
-    /* Initializes EmulatedCamera instance.
-     * Return:
-     *  NO_ERROR on success, or an appropriate error status on failure.
-     */
+    /** Override of base class method */
     virtual status_t Initialize();
 
     /* Next frame is available in the camera device.
@@ -105,26 +104,13 @@
      ***************************************************************************/
 
 public:
-    /* Creates connection to the emulated camera device.
-     * This method is called in response to hw_module_methods_t::open callback.
-     * NOTE: When this method is called the object is locked.
-     * Note that failures in this method are reported as negave EXXX statuses.
-     */
+    /** Override of base class method */
     virtual status_t connectCamera(hw_device_t** device);
 
-    /* Closes connection to the emulated camera.
-     * This method is called in response to camera_device::close callback.
-     * NOTE: When this method is called the object is locked.
-     * Note that failures in this method are reported as negave EXXX statuses.
-     */
+    /** Override of base class method */
     virtual status_t closeCamera();
 
-    /* Gets camera information.
-     * This method is called in response to camera_module_t::get_camera_info
-     * callback.
-     * NOTE: When this method is called the object is locked.
-     * Note that failures in this method are reported as negave EXXX statuses.
-     */
+    /** Override of base class method */
     virtual status_t getCameraInfo(struct camera_info* info);
 
     /****************************************************************************
@@ -388,9 +374,6 @@
     /* Callback notifier. */
     CallbackNotifier                mCallbackNotifier;
 
-    /* Zero-based ID assigned to this camera. */
-    int                             mCameraID;
-
 private:
     /* Registered callbacks implementing camera API. */
     static camera_device_ops_t      mDeviceOps;
diff --git a/tools/emulator/system/camera/EmulatedCamera2.cpp b/tools/emulator/system/camera/EmulatedCamera2.cpp
new file mode 100644
index 0000000..f7672f4
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedCamera2.cpp
@@ -0,0 +1,528 @@
+/*
+ * 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.
+ */
+
+/*
+ * Contains implementation of a class EmulatedCamera that encapsulates
+ * functionality common to all version 2.0 emulated camera devices.  Instances
+ * of this class (for each emulated camera) are created during the construction
+ * of the EmulatedCameraFactory instance.  This class serves as an entry point
+ * for all camera API calls that defined by camera2_device_ops_t API.
+ */
+
+#define LOG_NDEBUG 0
+#define LOG_TAG "EmulatedCamera2_Camera"
+#include <cutils/log.h>
+
+#include "EmulatedCamera2.h"
+#include "system/camera_metadata.h"
+
+namespace android {
+
+/* Constructs EmulatedCamera2 instance.
+ * Param:
+ *  cameraId - Zero based camera identifier, which is an index of the camera
+ *      instance in camera factory's array.
+ *  module - Emulated camera HAL module descriptor.
+ */
+EmulatedCamera2::EmulatedCamera2(int cameraId,
+        struct hw_module_t* module):
+        EmulatedBaseCamera(cameraId,
+                CAMERA_DEVICE_API_VERSION_2_0,
+                &common,
+                module)
+{
+    common.close = EmulatedCamera2::close;
+    ops = &sDeviceOps;
+    priv = this;
+
+    mRequestQueueDstOps.notify_queue_not_empty =
+            EmulatedCamera2::request_queue_notify_queue_not_empty;
+    mRequestQueueDstOps.parent                 = this;
+
+    mRequestQueueDstOps.notify_queue_not_empty =
+            EmulatedCamera2::reprocess_queue_notify_queue_not_empty;
+    mReprocessQueueDstOps.parent               = this;
+
+    mFrameQueueSrcOps.buffer_count = EmulatedCamera2::frame_queue_buffer_count;
+    mFrameQueueSrcOps.dequeue      = EmulatedCamera2::frame_queue_dequeue;
+    mFrameQueueSrcOps.free         = EmulatedCamera2::frame_queue_free;
+    mFrameQueueSrcOps.parent       = this;
+
+    mReprocessStreamOps.dequeue_buffer =
+            EmulatedCamera2::reprocess_stream_dequeue_buffer;
+    mReprocessStreamOps.enqueue_buffer =
+            EmulatedCamera2::reprocess_stream_enqueue_buffer;
+    mReprocessStreamOps.cancel_buffer =
+            EmulatedCamera2::reprocess_stream_cancel_buffer;
+    mReprocessStreamOps.set_buffer_count =
+            EmulatedCamera2::reprocess_stream_set_buffer_count;
+    mReprocessStreamOps.set_crop = EmulatedCamera2::reprocess_stream_set_crop;
+    mReprocessStreamOps.set_timestamp =
+            EmulatedCamera2::reprocess_stream_set_timestamp;
+    mReprocessStreamOps.set_usage = EmulatedCamera2::reprocess_stream_set_usage;
+    mReprocessStreamOps.get_min_undequeued_buffer_count =
+            EmulatedCamera2::reprocess_stream_get_min_undequeued_buffer_count;
+    mReprocessStreamOps.lock_buffer =
+            EmulatedCamera2::reprocess_stream_lock_buffer;
+    mReprocessStreamOps.parent   = this;
+
+    mVendorTagOps.get_camera_vendor_section_name =
+            EmulatedCamera2::get_camera_vendor_section_name;
+    mVendorTagOps.get_camera_vendor_tag_name =
+            EmulatedCamera2::get_camera_vendor_tag_name;
+    mVendorTagOps.get_camera_vendor_tag_type =
+            EmulatedCamera2::get_camera_vendor_tag_type;
+    mVendorTagOps.parent = this;
+}
+
+/* Destructs EmulatedCamera2 instance. */
+EmulatedCamera2::~EmulatedCamera2() {
+}
+
+/****************************************************************************
+ * Abstract API
+ ***************************************************************************/
+
+/****************************************************************************
+ * Public API
+ ***************************************************************************/
+
+status_t EmulatedCamera2::Initialize() {
+    return NO_ERROR;
+}
+
+/****************************************************************************
+ * Camera API implementation
+ ***************************************************************************/
+
+status_t EmulatedCamera2::connectCamera(hw_device_t** device) {
+    return NO_ERROR;
+}
+
+status_t EmulatedCamera2::closeCamera() {
+    return NO_ERROR;
+}
+
+status_t EmulatedCamera2::getCameraInfo(struct camera_info* info) {
+
+    return EmulatedBaseCamera::getCameraInfo(info);
+}
+
+/****************************************************************************
+ * Camera API implementation.
+ * These methods are called from the camera API callback routines.
+ ***************************************************************************/
+
+/** Request input queue */
+
+int EmulatedCamera2::setRequestQueueSrcOps(
+    camera2_metadata_queue_src_ops *request_queue_src_ops) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::requestQueueNotifyNotEmpty() {
+    return NO_ERROR;
+}
+
+/** Reprocessing input queue */
+
+int EmulatedCamera2::setReprocessQueueSrcOps(
+    camera2_metadata_queue_src_ops *reprocess_queue_src_ops) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessQueueNotifyNotEmpty() {
+    return NO_ERROR;
+}
+
+/** Frame output queue */
+
+int EmulatedCamera2::setFrameQueueDstOps(camera2_metadata_queue_dst_ops *frame_queue_dst_ops) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::frameQueueBufferCount() {
+    return NO_ERROR;
+}
+int EmulatedCamera2::frameQueueDequeue(camera_metadata_t **buffer) {
+    return NO_ERROR;
+}
+int EmulatedCamera2::frameQueueFree(camera_metadata_t *old_buffer) {
+    return NO_ERROR;
+}
+
+/** Notifications to application */
+int EmulatedCamera2::setNotifyCallback(camera2_notify_callback notify_cb) {
+    return NO_ERROR;
+}
+
+/** Count of requests in flight */
+int EmulatedCamera2::getInProgressCount() {
+    return NO_ERROR;
+}
+
+/** Cancel all captures in flight */
+int EmulatedCamera2::flushCapturesInProgress() {
+    return NO_ERROR;
+}
+
+/** Reprocessing input stream management */
+int EmulatedCamera2::reprocessStreamDequeueBuffer(buffer_handle_t** buffer,
+        int *stride) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamEnqueueBuffer(buffer_handle_t* buffer) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamCancelBuffer(buffer_handle_t* buffer) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamSetBufferCount(int count) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamSetCrop(int left, int top, int right, int bottom) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamSetTimestamp(int64_t timestamp) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamSetUsage(int usage) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamSetSwapInterval(int interval) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamGetMinUndequeuedBufferCount(int *count) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocessStreamLockBuffer(buffer_handle_t *buffer) {
+    return NO_ERROR;
+}
+
+/** Output stream creation and management */
+
+int EmulatedCamera2::getStreamSlotCount() {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::allocateStream(uint32_t stream_slot,
+        uint32_t width,
+        uint32_t height,
+        int format,
+        camera2_stream_ops_t *stream_ops) {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::releaseStream(uint32_t stream_slot) {
+    return NO_ERROR;
+}
+
+/** Custom tag query methods */
+
+const char* EmulatedCamera2::getVendorSectionName(uint32_t tag) {
+    return NULL;
+}
+
+const char* EmulatedCamera2::getVendorTagName(uint32_t tag) {
+    return NULL;
+}
+
+int EmulatedCamera2::getVendorTagType(uint32_t tag) {
+    return -1;
+}
+
+/** Shutdown and debug methods */
+
+int EmulatedCamera2::release() {
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::dump(int fd) {
+    return NO_ERROR;
+}
+
+/****************************************************************************
+ * Private API.
+ ***************************************************************************/
+
+/****************************************************************************
+ * Camera API callbacks as defined by camera2_device_ops structure.  See
+ * hardware/libhardware/include/hardware/camera2.h for information on each
+ * of these callbacks. Implemented in this class, these callbacks simply
+ * dispatch the call into an instance of EmulatedCamera2 class defined by the
+ * 'camera_device2' parameter.
+ ***************************************************************************/
+
+int EmulatedCamera2::set_request_queue_src_ops(struct camera2_device *d,
+        camera2_metadata_queue_src_ops *queue_src_ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    return ec->setRequestQueueSrcOps(queue_src_ops);
+}
+
+int EmulatedCamera2::get_request_queue_dst_ops(struct camera2_device *d,
+        camera2_metadata_queue_dst_ops **queue_dst_ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    *queue_dst_ops = static_cast<camera2_metadata_queue_dst_ops*>(
+        &ec->mRequestQueueDstOps);
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::request_queue_notify_queue_not_empty(
+        camera2_metadata_queue_dst_ops *q) {
+    EmulatedCamera2* ec = static_cast<QueueDstOps*>(q)->parent;
+    return ec->requestQueueNotifyNotEmpty();
+}
+
+int EmulatedCamera2::set_reprocess_queue_src_ops(struct camera2_device *d,
+        camera2_metadata_queue_src_ops *queue_src_ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    return ec->setReprocessQueueSrcOps(queue_src_ops);
+}
+
+int EmulatedCamera2::get_reprocess_queue_dst_ops(struct camera2_device *d,
+        camera2_metadata_queue_dst_ops **queue_dst_ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    *queue_dst_ops = static_cast<camera2_metadata_queue_dst_ops*>(
+        &ec->mReprocessQueueDstOps);
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocess_queue_notify_queue_not_empty(
+        camera2_metadata_queue_dst_ops *q) {
+    EmulatedCamera2* ec = static_cast<QueueDstOps*>(q)->parent;
+    return ec->reprocessQueueNotifyNotEmpty();
+}
+
+int EmulatedCamera2::set_frame_queue_dst_ops(struct camera2_device *d,
+        camera2_metadata_queue_dst_ops *queue_dst_ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    return ec->setFrameQueueDstOps(queue_dst_ops);
+}
+
+int EmulatedCamera2::get_frame_queue_src_ops(struct camera2_device *d,
+        camera2_metadata_queue_src_ops **queue_src_ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    *queue_src_ops = static_cast<camera2_metadata_queue_src_ops*>(
+        &ec->mFrameQueueSrcOps);
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::frame_queue_buffer_count(camera2_metadata_queue_src_ops *q) {
+    EmulatedCamera2 *ec = static_cast<QueueSrcOps*>(q)->parent;
+    return ec->frameQueueBufferCount();
+}
+
+int EmulatedCamera2::frame_queue_dequeue(camera2_metadata_queue_src_ops *q,
+        camera_metadata_t **buffer) {
+    EmulatedCamera2 *ec = static_cast<QueueSrcOps*>(q)->parent;
+    return ec->frameQueueDequeue(buffer);
+}
+
+int EmulatedCamera2::frame_queue_free(camera2_metadata_queue_src_ops *q,
+        camera_metadata_t *old_buffer) {
+    EmulatedCamera2 *ec = static_cast<QueueSrcOps*>(q)->parent;
+    return ec->frameQueueFree(old_buffer);
+}
+
+int EmulatedCamera2::set_notify_callback(struct camera2_device *d,
+        camera2_notify_callback notify_cb) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    return ec->setNotifyCallback(notify_cb);
+}
+
+int EmulatedCamera2::get_in_progress_count(struct camera2_device *d) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    return ec->getInProgressCount();
+}
+
+int EmulatedCamera2::flush_captures_in_progress(struct camera2_device *d) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    return ec->flushCapturesInProgress();
+}
+
+int EmulatedCamera2::get_reprocess_stream_ops(camera2_device_t *d,
+        camera2_stream_ops **stream) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    *stream = static_cast<camera2_stream_ops*>(&ec->mReprocessStreamOps);
+    return NO_ERROR;
+}
+
+int EmulatedCamera2::reprocess_stream_dequeue_buffer(camera2_stream_ops *s,
+        buffer_handle_t** buffer, int *stride) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamDequeueBuffer(buffer, stride);
+}
+
+int EmulatedCamera2::reprocess_stream_enqueue_buffer(camera2_stream_ops *s,
+        buffer_handle_t* buffer) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamEnqueueBuffer(buffer);
+}
+
+int EmulatedCamera2::reprocess_stream_cancel_buffer(camera2_stream_ops *s,
+        buffer_handle_t* buffer) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamCancelBuffer(buffer);
+}
+
+int EmulatedCamera2::reprocess_stream_set_buffer_count(camera2_stream_ops *s,
+        int count) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamSetBufferCount(count);
+}
+
+int EmulatedCamera2::reprocess_stream_set_crop(camera2_stream_ops *s,
+        int left, int top, int right, int bottom) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamSetCrop(left, top, right, bottom);
+}
+
+int EmulatedCamera2::reprocess_stream_set_timestamp(camera2_stream_ops *s,
+        int64_t timestamp) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamSetTimestamp(timestamp);
+}
+
+int EmulatedCamera2::reprocess_stream_set_usage(camera2_stream_ops *s,
+        int usage) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamSetUsage(usage);
+}
+
+int EmulatedCamera2::reprocess_stream_set_swap_interval(camera2_stream_ops *s,
+        int interval) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamSetSwapInterval(interval);
+}
+
+int EmulatedCamera2::reprocess_stream_get_min_undequeued_buffer_count(
+        const camera2_stream_ops *s,
+        int *count) {
+    EmulatedCamera2* ec = static_cast<const StreamOps*>(s)->parent;
+    return ec->reprocessStreamGetMinUndequeuedBufferCount(count);
+}
+
+int EmulatedCamera2::reprocess_stream_lock_buffer(camera2_stream_ops *s,
+        buffer_handle_t* buffer) {
+    EmulatedCamera2* ec = static_cast<StreamOps*>(s)->parent;
+    return ec->reprocessStreamLockBuffer(buffer);
+}
+
+int EmulatedCamera2::get_stream_slot_count(struct camera2_device *d) {
+    EmulatedCamera2* ec =
+            static_cast<EmulatedCamera2*>(d);
+    return ec->getStreamSlotCount();
+}
+
+int EmulatedCamera2::allocate_stream(struct camera2_device *d,
+        uint32_t stream_slot,
+        uint32_t width,
+        uint32_t height,
+        uint32_t format,
+        camera2_stream_ops_t *stream_ops) {
+    EmulatedCamera2* ec =
+            static_cast<EmulatedCamera2*>(d);
+    return ec->allocateStream(stream_slot, width, height, format, stream_ops);
+}
+
+int EmulatedCamera2::release_stream(struct camera2_device *d,
+        uint32_t stream_slot) {
+    EmulatedCamera2* ec =
+            static_cast<EmulatedCamera2*>(d);
+    return ec->releaseStream(stream_slot);
+}
+
+void EmulatedCamera2::release(struct camera2_device *d) {
+    EmulatedCamera2* ec =
+            static_cast<EmulatedCamera2*>(d);
+    ec->release();
+}
+
+int EmulatedCamera2::dump(struct camera2_device *d, int fd) {
+    EmulatedCamera2* ec =
+            static_cast<EmulatedCamera2*>(d);
+    return ec->dump(fd);
+}
+
+int EmulatedCamera2::close(struct hw_device_t* device) {
+    EmulatedCamera2* ec =
+            static_cast<EmulatedCamera2*>(
+                reinterpret_cast<struct camera2_device*>(device) );
+    if (ec == NULL) {
+        ALOGE("%s: Unexpected NULL camera2 device", __FUNCTION__);
+        return -EINVAL;
+    }
+    return ec->closeCamera();
+}
+
+int EmulatedCamera2::get_metadata_vendor_tag_ops(struct camera2_device *d,
+        vendor_tag_query_ops_t **ops) {
+    EmulatedCamera2* ec = static_cast<EmulatedCamera2*>(d);
+    *ops = static_cast<vendor_tag_query_ops_t*>(
+            &ec->mVendorTagOps);
+    return NO_ERROR;
+}
+
+const char* EmulatedCamera2::get_camera_vendor_section_name(
+        const vendor_tag_query_ops_t *v,
+        uint32_t tag) {
+    EmulatedCamera2* ec = static_cast<const TagOps*>(v)->parent;
+    return ec->getVendorSectionName(tag);
+}
+
+const char* EmulatedCamera2::get_camera_vendor_tag_name(
+        const vendor_tag_query_ops_t *v,
+        uint32_t tag) {
+    EmulatedCamera2* ec = static_cast<const TagOps*>(v)->parent;
+    return ec->getVendorTagName(tag);
+}
+
+int EmulatedCamera2::get_camera_vendor_tag_type(
+        const vendor_tag_query_ops_t *v,
+        uint32_t tag)  {
+    EmulatedCamera2* ec = static_cast<const TagOps*>(v)->parent;
+    return ec->getVendorTagType(tag);
+}
+
+camera2_device_ops_t EmulatedCamera2::sDeviceOps = {
+    EmulatedCamera2::set_request_queue_src_ops,
+    EmulatedCamera2::get_request_queue_dst_ops,
+    EmulatedCamera2::set_reprocess_queue_src_ops,
+    EmulatedCamera2::get_reprocess_queue_dst_ops,
+    EmulatedCamera2::set_frame_queue_dst_ops,
+    EmulatedCamera2::get_frame_queue_src_ops,
+    EmulatedCamera2::set_notify_callback,
+    EmulatedCamera2::get_in_progress_count,
+    EmulatedCamera2::flush_captures_in_progress,
+    EmulatedCamera2::get_reprocess_stream_ops,
+    EmulatedCamera2::get_stream_slot_count,
+    EmulatedCamera2::allocate_stream,
+    EmulatedCamera2::release_stream,
+    EmulatedCamera2::get_metadata_vendor_tag_ops,
+    EmulatedCamera2::release,
+    EmulatedCamera2::dump
+};
+
+}; /* namespace android */
diff --git a/tools/emulator/system/camera/EmulatedCamera2.h b/tools/emulator/system/camera/EmulatedCamera2.h
new file mode 100644
index 0000000..feeadf9
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedCamera2.h
@@ -0,0 +1,305 @@
+/*
+ * 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 HW_EMULATOR_CAMERA_EMULATED_CAMERA2_H
+#define HW_EMULATOR_CAMERA_EMULATED_CAMERA2_H
+
+/*
+ * Contains declaration of a class EmulatedCamera that encapsulates
+ * functionality common to all version 2.0 emulated camera devices.  Instances
+ * of this class (for each emulated camera) are created during the construction
+ * of the EmulatedCameraFactory instance.  This class serves as an entry point
+ * for all camera API calls that defined by camera2_device_ops_t API.
+ */
+
+#include "hardware/camera2.h"
+#include "system/camera_metadata.h"
+#include "EmulatedBaseCamera.h"
+
+namespace android {
+
+/* Encapsulates functionality common to all version 2.0 emulated camera devices
+ *
+ * Note that EmulatedCameraFactory instantiates object of this class just once,
+ * when EmulatedCameraFactory instance gets constructed. Connection to /
+ * disconnection from the actual camera device is handled by calls to
+ * connectDevice(), and closeCamera() methods of this class that are invoked in
+ * response to hw_module_methods_t::open, and camera_device::close callbacks.
+ */
+class EmulatedCamera2 : public camera2_device, public EmulatedBaseCamera {
+public:
+    /* Constructs EmulatedCamera2 instance.
+     * Param:
+     *  cameraId - Zero based camera identifier, which is an index of the camera
+     *      instance in camera factory's array.
+     *  module - Emulated camera HAL module descriptor.
+     */
+    EmulatedCamera2(int cameraId,
+            struct hw_module_t* module);
+
+    /* Destructs EmulatedCamera2 instance. */
+    virtual ~EmulatedCamera2();
+
+    /****************************************************************************
+     * Abstract API
+     ***************************************************************************/
+
+public:
+
+    /****************************************************************************
+     * Public API
+     ***************************************************************************/
+
+public:
+    virtual status_t Initialize();
+
+    /****************************************************************************
+     * Camera API implementation
+     ***************************************************************************/
+
+public:
+    virtual status_t connectCamera(hw_device_t** device);
+
+    virtual status_t closeCamera();
+
+    virtual status_t getCameraInfo(struct camera_info* info);
+
+    /****************************************************************************
+     * Camera API implementation.
+     * These methods are called from the camera API callback routines.
+     ***************************************************************************/
+
+protected:
+    /** Request input queue */
+
+    int setRequestQueueSrcOps(
+        camera2_metadata_queue_src_ops *request_queue_src_ops);
+
+    int requestQueueNotifyNotEmpty();
+
+    /** Reprocessing input queue */
+
+    int setReprocessQueueSrcOps(
+        camera2_metadata_queue_src_ops *reprocess_queue_src_ops);
+
+    int reprocessQueueNotifyNotEmpty();
+
+    /** Frame output queue */
+
+    int setFrameQueueDstOps(camera2_metadata_queue_dst_ops *frame_queue_dst_ops);
+
+    int frameQueueBufferCount();
+    int frameQueueDequeue(camera_metadata_t **buffer);
+    int frameQueueFree(camera_metadata_t *old_buffer);
+
+    /** Notifications to application */
+    int setNotifyCallback(camera2_notify_callback notify_cb);
+
+    /** Count of requests in flight */
+    int getInProgressCount();
+
+    /** Cancel all captures in flight */
+    int flushCapturesInProgress();
+
+    /** Reprocessing input stream management */
+    int reprocessStreamDequeueBuffer(buffer_handle_t** buffer,
+            int *stride);
+
+    int reprocessStreamEnqueueBuffer(buffer_handle_t* buffer);
+
+    int reprocessStreamCancelBuffer(buffer_handle_t* buffer);
+
+    int reprocessStreamSetBufferCount(int count);
+
+    int reprocessStreamSetCrop(int left, int top, int right, int bottom);
+
+    int reprocessStreamSetTimestamp(int64_t timestamp);
+
+    int reprocessStreamSetUsage(int usage);
+
+    int reprocessStreamSetSwapInterval(int interval);
+
+    int reprocessStreamGetMinUndequeuedBufferCount(int *count);
+
+    int reprocessStreamLockBuffer(buffer_handle_t *buffer);
+
+    /** Output stream creation and management */
+
+    int getStreamSlotCount();
+
+    int allocateStream(uint32_t stream_slot,
+            uint32_t width,
+            uint32_t height,
+            int format,
+            camera2_stream_ops_t *stream_ops);
+
+    int releaseStream(uint32_t stream_slot);
+
+    /** Custom tag definitions */
+    const char* getVendorSectionName(uint32_t tag);
+    const char* getVendorTagName(uint32_t tag);
+    int         getVendorTagType(uint32_t tag);
+
+    /** Shutdown and debug methods */
+
+    int release();
+
+    int dump(int fd);
+
+    int close();
+
+    /****************************************************************************
+     * Camera API callbacks as defined by camera2_device_ops structure.  See
+     * hardware/libhardware/include/hardware/camera2.h for information on each
+     * of these callbacks. Implemented in this class, these callbacks simply
+     * dispatch the call into an instance of EmulatedCamera2 class defined in the
+     * 'camera_device2' parameter.
+     ***************************************************************************/
+
+private:
+    /** Input request queue */
+    static int set_request_queue_src_ops(camera2_device_t *,
+            camera2_metadata_queue_src_ops *queue_src_ops);
+    static int get_request_queue_dst_ops(camera2_device_t *,
+            camera2_metadata_queue_dst_ops **queue_dst_ops);
+    // for get_request_queue_dst_ops
+    static int request_queue_notify_queue_not_empty(
+        camera2_metadata_queue_dst_ops *);
+
+    /** Input reprocess queue */
+    static int set_reprocess_queue_src_ops(camera2_device_t *,
+            camera2_metadata_queue_src_ops *reprocess_queue_src_ops);
+    static int get_reprocess_queue_dst_ops(camera2_device_t *,
+            camera2_metadata_queue_dst_ops **queue_dst_ops);
+    // for reprocess_queue_dst_ops
+    static int reprocess_queue_notify_queue_not_empty(
+            camera2_metadata_queue_dst_ops *);
+
+    /** Output frame queue */
+    static int set_frame_queue_dst_ops(camera2_device_t *,
+            camera2_metadata_queue_dst_ops *queue_dst_ops);
+    static int get_frame_queue_src_ops(camera2_device_t *,
+            camera2_metadata_queue_src_ops **queue_src_ops);
+    // for get_frame_queue_src_ops
+    static int frame_queue_buffer_count(camera2_metadata_queue_src_ops *);
+    static int frame_queue_dequeue(camera2_metadata_queue_src_ops *,
+            camera_metadata_t **buffer);
+    static int frame_queue_free(camera2_metadata_queue_src_ops *,
+            camera_metadata_t *old_buffer);
+
+    /** Notifications to application */
+    static int set_notify_callback(camera2_device_t *,
+            camera2_notify_callback notify_cb);
+
+    /** In-progress request management */
+    static int get_in_progress_count(camera2_device_t *);
+
+    static int flush_captures_in_progress(camera2_device_t *);
+
+    /** Input reprocessing stream */
+    static int get_reprocess_stream_ops(camera2_device_t *,
+            camera2_stream_ops_t **stream);
+    // for get_reprocess_stream_ops
+    static int reprocess_stream_dequeue_buffer(camera2_stream_ops *,
+            buffer_handle_t** buffer, int *stride);
+    static int reprocess_stream_enqueue_buffer(camera2_stream_ops *,
+            buffer_handle_t* buffer);
+    static int reprocess_stream_cancel_buffer(camera2_stream_ops *,
+            buffer_handle_t* buffer);
+    static int reprocess_stream_set_buffer_count(camera2_stream_ops *,
+            int count);
+    static int reprocess_stream_set_crop(camera2_stream_ops *,
+            int left, int top, int right, int bottom);
+    static int reprocess_stream_set_timestamp(camera2_stream_ops *,
+            int64_t timestamp);
+    static int reprocess_stream_set_usage(camera2_stream_ops *,
+            int usage);
+    static int reprocess_stream_set_swap_interval(camera2_stream_ops *,
+            int interval);
+    static int reprocess_stream_get_min_undequeued_buffer_count(
+            const camera2_stream_ops *,
+            int *count);
+    static int reprocess_stream_lock_buffer(camera2_stream_ops *,
+            buffer_handle_t* buffer);
+
+    /** Output stream allocation and management */
+
+    static int get_stream_slot_count(camera2_device_t *);
+
+    static int allocate_stream(camera2_device_t *,
+            uint32_t stream_slot,
+            uint32_t width,
+            uint32_t height,
+            uint32_t format,
+            camera2_stream_ops_t *stream_ops);
+
+    static int release_stream(camera2_device_t *,
+            uint32_t stream_slot);
+
+    static void release(camera2_device_t *);
+
+    /** Vendor metadata registration */
+
+    static int get_metadata_vendor_tag_ops(camera2_device_t *,
+            vendor_tag_query_ops_t **ops);
+    // for get_metadata_vendor_tag_ops
+    static const char* get_camera_vendor_section_name(
+            const vendor_tag_query_ops_t *,
+            uint32_t tag);
+    static const char* get_camera_vendor_tag_name(
+            const vendor_tag_query_ops_t *,
+            uint32_t tag);
+    static int get_camera_vendor_tag_type(
+            const vendor_tag_query_ops_t *,
+            uint32_t tag);
+
+    static int dump(camera2_device_t *, int fd);
+
+    static int close(struct hw_device_t* device);
+
+    /****************************************************************************
+     * Data members
+     ***************************************************************************/
+
+  private:
+    static camera2_device_ops_t sDeviceOps;
+
+    struct QueueDstOps : public camera2_metadata_queue_dst_ops {
+        EmulatedCamera2 *parent;
+    };
+
+    struct QueueSrcOps : public camera2_metadata_queue_src_ops {
+        EmulatedCamera2 *parent;
+    };
+
+    struct StreamOps : public camera2_stream_ops {
+        EmulatedCamera2 *parent;
+    };
+
+    struct TagOps : public vendor_tag_query_ops {
+        EmulatedCamera2 *parent;
+    };
+
+    QueueDstOps mRequestQueueDstOps;
+    QueueDstOps mReprocessQueueDstOps;
+    QueueSrcOps mFrameQueueSrcOps;
+    StreamOps   mReprocessStreamOps;
+    TagOps      mVendorTagOps;
+};
+
+}; /* namespace android */
+
+#endif  /* HW_EMULATOR_CAMERA_EMULATED_CAMERA2_H */
diff --git a/tools/emulator/system/camera/EmulatedCameraCommon.h b/tools/emulator/system/camera/EmulatedCameraCommon.h
index 907985a..c1d575c 100755
--- a/tools/emulator/system/camera/EmulatedCameraCommon.h
+++ b/tools/emulator/system/camera/EmulatedCameraCommon.h
@@ -34,12 +34,12 @@
     /* Constructor that prints an "entry" trace message. */
     explicit HWERoutineTracker(const char* name)
             : mName(name) {
-        LOGV("Entering %s", mName);
+        ALOGV("Entering %s", mName);
     }
 
     /* Destructor that prints a "leave" trace message. */
     ~HWERoutineTracker() {
-        LOGV("Leaving %s", mName);
+        ALOGV("Leaving %s", mName);
     }
 
 private:
diff --git a/tools/emulator/system/camera/EmulatedCameraDevice.cpp b/tools/emulator/system/camera/EmulatedCameraDevice.cpp
index 71464d2..5c52808 100755
--- a/tools/emulator/system/camera/EmulatedCameraDevice.cpp
+++ b/tools/emulator/system/camera/EmulatedCameraDevice.cpp
@@ -29,25 +29,33 @@
 #include <sys/select.h>
 #include <cmath>
 #include "EmulatedCameraDevice.h"
-#include "Converters.h"
 
 namespace android {
 
+const float GAMMA_CORRECTION = 2.2f;
 EmulatedCameraDevice::EmulatedCameraDevice(EmulatedCamera* camera_hal)
     : mObjectLock(),
       mCurFrameTimestamp(0),
       mCameraHAL(camera_hal),
       mCurrentFrame(NULL),
       mExposureCompensation(1.0f),
+      mWhiteBalanceScale(NULL),
+      mSupportedWhiteBalanceScale(),
       mState(ECDS_CONSTRUCTED)
 {
 }
 
 EmulatedCameraDevice::~EmulatedCameraDevice()
 {
+    ALOGV("EmulatedCameraDevice destructor");
     if (mCurrentFrame != NULL) {
         delete[] mCurrentFrame;
     }
+    for (int i = 0; i < mSupportedWhiteBalanceScale.size(); ++i) {
+        if (mSupportedWhiteBalanceScale.valueAt(i) != NULL) {
+            delete[] mSupportedWhiteBalanceScale.valueAt(i);
+        }
+    }
 }
 
 /****************************************************************************
@@ -57,7 +65,7 @@
 status_t EmulatedCameraDevice::Initialize()
 {
     if (isInitialized()) {
-        LOGW("%s: Emulated camera device is already initialized: mState = %d",
+        ALOGW("%s: Emulated camera device is already initialized: mState = %d",
              __FUNCTION__, mState);
         return NO_ERROR;
     }
@@ -65,7 +73,7 @@
     /* Instantiate worker thread object. */
     mWorkerThread = new WorkerThread(this);
     if (getWorkerThread() == NULL) {
-        LOGE("%s: Unable to instantiate worker thread object", __FUNCTION__);
+        ALOGE("%s: Unable to instantiate worker thread object", __FUNCTION__);
         return ENOMEM;
     }
 
@@ -76,52 +84,85 @@
 
 status_t EmulatedCameraDevice::startDeliveringFrames(bool one_burst)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     if (!isStarted()) {
-        LOGE("%s: Device is not started", __FUNCTION__);
+        ALOGE("%s: Device is not started", __FUNCTION__);
         return EINVAL;
     }
 
     /* Frames will be delivered from the thread routine. */
     const status_t res = startWorkerThread(one_burst);
-    LOGE_IF(res != NO_ERROR, "%s: startWorkerThread failed", __FUNCTION__);
+    ALOGE_IF(res != NO_ERROR, "%s: startWorkerThread failed", __FUNCTION__);
     return res;
 }
 
 status_t EmulatedCameraDevice::stopDeliveringFrames()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     if (!isStarted()) {
-        LOGW("%s: Device is not started", __FUNCTION__);
+        ALOGW("%s: Device is not started", __FUNCTION__);
         return NO_ERROR;
     }
 
     const status_t res = stopWorkerThread();
-    LOGE_IF(res != NO_ERROR, "%s: startWorkerThread failed", __FUNCTION__);
+    ALOGE_IF(res != NO_ERROR, "%s: startWorkerThread failed", __FUNCTION__);
     return res;
 }
 
 void EmulatedCameraDevice::setExposureCompensation(const float ev) {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     if (!isStarted()) {
-        LOGW("%s: Fake camera device is not started.", __FUNCTION__);
+        ALOGW("%s: Fake camera device is not started.", __FUNCTION__);
     }
 
-    mExposureCompensation = std::pow(2.0f, ev);
-    LOGV("New exposure compensation is %f", mExposureCompensation);
+    mExposureCompensation = std::pow(2.0f, ev / GAMMA_CORRECTION);
+    ALOGV("New exposure compensation is %f", mExposureCompensation);
+}
+
+void EmulatedCameraDevice::initializeWhiteBalanceModes(const char* mode,
+                                                       const float r_scale,
+                                                       const float b_scale) {
+    ALOGV("%s with %s, %f, %f", __FUNCTION__, mode, r_scale, b_scale);
+    float* value = new float[3];
+    value[0] = r_scale; value[1] = 1.0f; value[2] = b_scale;
+    mSupportedWhiteBalanceScale.add(String8(mode), value);
+}
+
+void EmulatedCameraDevice::setWhiteBalanceMode(const char* mode) {
+    ALOGV("%s with white balance %s", __FUNCTION__, mode);
+    mWhiteBalanceScale =
+            mSupportedWhiteBalanceScale.valueFor(String8(mode));
+}
+
+/* Computes the pixel value after adjusting the white balance to the current
+ * one. The input the y, u, v channel of the pixel and the adjusted value will
+ * be stored in place. The adjustment is done in RGB space.
+ */
+void EmulatedCameraDevice::changeWhiteBalance(uint8_t& y,
+                                              uint8_t& u,
+                                              uint8_t& v) const {
+    float r_scale = mWhiteBalanceScale[0];
+    float b_scale = mWhiteBalanceScale[2];
+    int r = static_cast<float>(YUV2R(y, u, v)) / r_scale;
+    int g = YUV2G(y, u, v);
+    int b = static_cast<float>(YUV2B(y, u, v)) / b_scale;
+
+    y = RGB2Y(r, g, b);
+    u = RGB2U(r, g, b);
+    v = RGB2V(r, g, b);
 }
 
 status_t EmulatedCameraDevice::getCurrentPreviewFrame(void* buffer)
 {
     if (!isStarted()) {
-        LOGE("%s: Device is not started", __FUNCTION__);
+        ALOGE("%s: Device is not started", __FUNCTION__);
         return EINVAL;
     }
     if (mCurrentFrame == NULL || buffer == NULL) {
-        LOGE("%s: No framebuffer", __FUNCTION__);
+        ALOGE("%s: No framebuffer", __FUNCTION__);
         return EINVAL;
     }
 
@@ -141,7 +182,7 @@
             return NO_ERROR;
 
         default:
-            LOGE("%s: Unknown pixel format %.4s",
+            ALOGE("%s: Unknown pixel format %.4s",
                  __FUNCTION__, reinterpret_cast<const char*>(&mPixelFormat));
             return EINVAL;
     }
@@ -165,7 +206,7 @@
             break;
 
         default:
-            LOGE("%s: Unknown pixel format %.4s",
+            ALOGE("%s: Unknown pixel format %.4s",
                  __FUNCTION__, reinterpret_cast<const char*>(&pix_fmt));
             return EINVAL;
     }
@@ -179,10 +220,10 @@
     /* Allocate framebuffer. */
     mCurrentFrame = new uint8_t[mFrameBufferSize];
     if (mCurrentFrame == NULL) {
-        LOGE("%s: Unable to allocate framebuffer", __FUNCTION__);
+        ALOGE("%s: Unable to allocate framebuffer", __FUNCTION__);
         return ENOMEM;
     }
-    LOGV("%s: Allocated %p %d bytes for %d pixels in %.4s[%dx%d] frame",
+    ALOGV("%s: Allocated %p %d bytes for %d pixels in %.4s[%dx%d] frame",
          __FUNCTION__, mCurrentFrame, mFrameBufferSize, mTotalPixels,
          reinterpret_cast<const char*>(&mPixelFormat), mFrameWidth, mFrameHeight);
     return NO_ERROR;
@@ -205,29 +246,29 @@
 
 status_t EmulatedCameraDevice::startWorkerThread(bool one_burst)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     if (!isInitialized()) {
-        LOGE("%s: Emulated camera device is not initialized", __FUNCTION__);
+        ALOGE("%s: Emulated camera device is not initialized", __FUNCTION__);
         return EINVAL;
     }
 
     const status_t res = getWorkerThread()->startThread(one_burst);
-    LOGE_IF(res != NO_ERROR, "%s: Unable to start worker thread", __FUNCTION__);
+    ALOGE_IF(res != NO_ERROR, "%s: Unable to start worker thread", __FUNCTION__);
     return res;
 }
 
 status_t EmulatedCameraDevice::stopWorkerThread()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     if (!isInitialized()) {
-        LOGE("%s: Emulated camera device is not initialized", __FUNCTION__);
+        ALOGE("%s: Emulated camera device is not initialized", __FUNCTION__);
         return EINVAL;
     }
 
     const status_t res = getWorkerThread()->stopThread();
-    LOGE_IF(res != NO_ERROR, "%s: Unable to stop worker thread", __FUNCTION__);
+    ALOGE_IF(res != NO_ERROR, "%s: Unable to stop worker thread", __FUNCTION__);
     return res;
 }
 
@@ -244,19 +285,19 @@
 
 status_t EmulatedCameraDevice::WorkerThread::readyToRun()
 {
-    LOGV("Starting emulated camera device worker thread...");
+    ALOGV("Starting emulated camera device worker thread...");
 
-    LOGW_IF(mThreadControl >= 0 || mControlFD >= 0,
+    ALOGW_IF(mThreadControl >= 0 || mControlFD >= 0,
             "%s: Thread control FDs are opened", __FUNCTION__);
     /* Create a pair of FDs that would be used to control the thread. */
     int thread_fds[2];
     if (pipe(thread_fds) == 0) {
         mThreadControl = thread_fds[1];
         mControlFD = thread_fds[0];
-        LOGV("Emulated device's worker thread has been started.");
+        ALOGV("Emulated device's worker thread has been started.");
         return NO_ERROR;
     } else {
-        LOGE("%s: Unable to create thread control FDs: %d -> %s",
+        ALOGE("%s: Unable to create thread control FDs: %d -> %s",
              __FUNCTION__, errno, strerror(errno));
         return errno;
     }
@@ -264,7 +305,7 @@
 
 status_t EmulatedCameraDevice::WorkerThread::stopThread()
 {
-    LOGV("Stopping emulated camera device's worker thread...");
+    ALOGV("Stopping emulated camera device's worker thread...");
 
     status_t res = EINVAL;
     if (mThreadControl >= 0) {
@@ -285,18 +326,18 @@
                     close(mControlFD);
                     mControlFD = -1;
                 }
-                LOGV("Emulated camera device's worker thread has been stopped.");
+                ALOGV("Emulated camera device's worker thread has been stopped.");
             } else {
-                LOGE("%s: requestExitAndWait failed: %d -> %s",
+                ALOGE("%s: requestExitAndWait failed: %d -> %s",
                      __FUNCTION__, res, strerror(-res));
             }
         } else {
-            LOGE("%s: Unable to send THREAD_STOP message: %d -> %s",
+            ALOGE("%s: Unable to send THREAD_STOP message: %d -> %s",
                  __FUNCTION__, errno, strerror(errno));
             res = errno ? errno : EINVAL;
         }
     } else {
-        LOGE("%s: Thread control FDs are not opened", __FUNCTION__);
+        ALOGE("%s: Thread control FDs are not opened", __FUNCTION__);
     }
 
     return res;
@@ -322,7 +363,7 @@
     }
     int res = TEMP_FAILURE_RETRY(select(fd_num, fds, NULL, NULL, tvp));
     if (res < 0) {
-        LOGE("%s: select returned %d and failed: %d -> %s",
+        ALOGE("%s: select returned %d and failed: %d -> %s",
              __FUNCTION__, res, errno, strerror(errno));
         return ERROR;
     } else if (res == 0) {
@@ -333,21 +374,21 @@
         ControlMessage msg;
         res = TEMP_FAILURE_RETRY(read(mControlFD, &msg, sizeof(msg)));
         if (res != sizeof(msg)) {
-            LOGE("%s: Unexpected message size %d, or an error %d -> %s",
+            ALOGE("%s: Unexpected message size %d, or an error %d -> %s",
                  __FUNCTION__, res, errno, strerror(errno));
             return ERROR;
         }
         /* THREAD_STOP is the only message expected here. */
         if (msg == THREAD_STOP) {
-            LOGV("%s: THREAD_STOP message is received", __FUNCTION__);
+            ALOGV("%s: THREAD_STOP message is received", __FUNCTION__);
             return EXIT_THREAD;
         } else {
-            LOGE("Unknown worker thread message %d", msg);
+            ALOGE("Unknown worker thread message %d", msg);
             return ERROR;
         }
     } else {
         /* Must be an FD. */
-        LOGW_IF(fd < 0 || !FD_ISSET(fd, fds), "%s: Undefined 'select' result",
+        ALOGW_IF(fd < 0 || !FD_ISSET(fd, fds), "%s: Undefined 'select' result",
                 __FUNCTION__);
         return READY;
     }
diff --git a/tools/emulator/system/camera/EmulatedCameraDevice.h b/tools/emulator/system/camera/EmulatedCameraDevice.h
index 357c9e6..b7cdcb7 100755
--- a/tools/emulator/system/camera/EmulatedCameraDevice.h
+++ b/tools/emulator/system/camera/EmulatedCameraDevice.h
@@ -27,7 +27,10 @@
  */
 
 #include <utils/threads.h>
+#include <utils/KeyedVector.h>
+#include <utils/String8.h>
 #include "EmulatedCameraCommon.h"
+#include "Converters.h"
 
 namespace android {
 
@@ -116,6 +119,21 @@
      */
     virtual status_t Initialize();
 
+    /* Initializes the white balance modes parameters.
+     * The parameters are passed by each individual derived camera API to
+     * represent that different camera manufacturers may have different
+     * preferences on the white balance parameters. Green channel in the RGB
+     * color space is fixed to keep the luminance to be reasonably constant.
+     *
+     * Param:
+     * mode the text describing the current white balance mode
+     * r_scale the scale factor for the R channel in RGB space
+     * b_scale the scale factor for the B channel in RGB space.
+     */
+    void initializeWhiteBalanceModes(const char* mode,
+                                     const float r_scale,
+                                     const float b_scale);
+
     /* Starts delivering frames captured from the camera device.
      * This method will start the worker thread that would be pulling frames from
      * the camera device, and will deliver the pulled frames back to the emulated
@@ -145,7 +163,11 @@
 
     /* Sets the exposure compensation for the camera device.
      */
-    virtual void setExposureCompensation(const float ev);
+    void setExposureCompensation(const float ev);
+
+    /* Sets the white balance mode for the device.
+     */
+    void setWhiteBalanceMode(const char* mode);
 
     /* Gets current framebuffer, converted into preview frame format.
      * This method must be called on a connected instance of this class with a
@@ -170,7 +192,7 @@
      */
     inline int getFrameWidth() const
     {
-        LOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
+        ALOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
         return mFrameWidth;
     }
 
@@ -182,7 +204,7 @@
      */
     inline int getFrameHeight() const
     {
-        LOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
+        ALOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
         return mFrameHeight;
     }
 
@@ -193,7 +215,7 @@
      */
     inline size_t getFrameBufferSize() const
     {
-        LOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
+        ALOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
         return mFrameBufferSize;
     }
 
@@ -204,7 +226,7 @@
      */
     inline int getPixelNum() const
     {
-        LOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
+        ALOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
         return mTotalPixels;
     }
 
@@ -230,7 +252,7 @@
      */
     inline uint32_t getOriginalPixelFormat() const
     {
-        LOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
+        ALOGE_IF(!isStarted(), "%s: Device is not started", __FUNCTION__);
         return mPixelFormat;
     }
 
@@ -269,6 +291,24 @@
      */
     virtual void commonStopDevice();
 
+    /** Computes a luminance value after taking the exposure compensation.
+     * value into account.
+     *
+     * Param:
+     * inputY - The input luminance value.
+     * Return:
+     * The luminance value after adjusting the exposure compensation.
+     */
+    inline uint8_t changeExposure(const uint8_t& inputY) const {
+        return static_cast<uint8_t>(clamp(static_cast<float>(inputY) *
+                                    mExposureCompensation));
+    }
+
+    /** Computes the pixel value in YUV space after adjusting to the current
+     * white balance mode.
+     */
+    void changeWhiteBalance(uint8_t& y, uint8_t& u, uint8_t& v) const;
+
     /****************************************************************************
      * Worker thread management.
      * Typicaly when emulated camera device starts capturing frames from the
@@ -332,7 +372,7 @@
 
             inline ~WorkerThread()
             {
-                LOGW_IF(mThreadControl >= 0 || mControlFD >= 0,
+                ALOGW_IF(mThreadControl >= 0 || mControlFD >= 0,
                         "%s: Control FDs are opened in the destructor",
                         __FUNCTION__);
                 if (mThreadControl >= 0) {
@@ -478,6 +518,10 @@
     /* Exposure compensation value */
     float                       mExposureCompensation;
 
+    float*                      mWhiteBalanceScale;
+
+    DefaultKeyedVector<String8, float*>      mSupportedWhiteBalanceScale;
+
     /* Defines possible states of the emulated camera device object.
      */
     enum EmulatedCameraDeviceState {
diff --git a/tools/emulator/system/camera/EmulatedCameraFactory.cpp b/tools/emulator/system/camera/EmulatedCameraFactory.cpp
index 5c5c5de..2960751 100755
--- a/tools/emulator/system/camera/EmulatedCameraFactory.cpp
+++ b/tools/emulator/system/camera/EmulatedCameraFactory.cpp
@@ -25,6 +25,7 @@
 #include <cutils/properties.h>
 #include "EmulatedQemuCamera.h"
 #include "EmulatedFakeCamera.h"
+#include "EmulatedFakeCamera2.h"
 #include "EmulatedCameraFactory.h"
 
 extern camera_module_t HAL_MODULE_INFO_SYM;
@@ -40,9 +41,8 @@
         : mQemuClient(),
           mEmulatedCameras(NULL),
           mEmulatedCameraNum(0),
-          mFakeCameraID(-1),
+          mFakeCameraNum(0),
           mConstructedOK(false)
-
 {
     /* Connect to the factory service in the emulator, and create Qemu cameras. */
     if (mQemuClient.connectClient(NULL) == NO_ERROR) {
@@ -51,43 +51,101 @@
         createQemuCameras();
     }
 
-    if (isFakeCameraEmulationOn()) {
-        /* ID fake camera with the number of created 'qemud' cameras. */
-        mFakeCameraID = mEmulatedCameraNum;
+    if (isBackFakeCameraEmulationOn()) {
+        /* Camera ID. */
+        const int camera_id = mEmulatedCameraNum;
+        /* Use fake camera to emulate back-facing camera. */
+        mEmulatedCameraNum++;
+
+        /* Make sure that array is allocated (in case there were no 'qemu'
+         * cameras created. Note that we preallocate the array so it may contain
+         * two fake cameras: one facing back, and another facing front. */
+        if (mEmulatedCameras == NULL) {
+            mEmulatedCameras = new EmulatedBaseCamera*[mEmulatedCameraNum + 1];
+            if (mEmulatedCameras == NULL) {
+                ALOGE("%s: Unable to allocate emulated camera array for %d entries",
+                     __FUNCTION__, mEmulatedCameraNum);
+                return;
+            }
+            memset(mEmulatedCameras, 0,
+                    (mEmulatedCameraNum + 1) * sizeof(EmulatedBaseCamera*));
+        }
+
+        /* Create, and initialize the fake camera */
+        switch (getBackCameraHalVersion()) {
+            case 1:
+                mEmulatedCameras[camera_id] =
+                        new EmulatedFakeCamera(camera_id, false, &HAL_MODULE_INFO_SYM.common);
+                break;
+            case 2:
+                mEmulatedCameras[camera_id] =
+                        new EmulatedFakeCamera2(camera_id, false, &HAL_MODULE_INFO_SYM.common);
+                break;
+            default:
+                ALOGE("%s: Unknown back camera hal version requested: %d", __FUNCTION__,
+                        getBackCameraHalVersion());
+        }
+        if (mEmulatedCameras[camera_id] != NULL) {
+            ALOGV("%s: Back camera device version is %d", __FUNCTION__,
+                    getBackCameraHalVersion());
+            if (mEmulatedCameras[camera_id]->Initialize() != NO_ERROR) {
+                delete mEmulatedCameras[camera_id];
+                mEmulatedCameras--;
+            }
+        } else {
+            mEmulatedCameras--;
+            ALOGE("%s: Unable to instantiate fake camera class", __FUNCTION__);
+        }
+    }
+
+    if (isFrontFakeCameraEmulationOn()) {
+        /* Camera ID. */
+        const int camera_id = mEmulatedCameraNum;
+        /* Use fake camera to emulate front-facing camera. */
         mEmulatedCameraNum++;
 
         /* Make sure that array is allocated (in case there were no 'qemu'
          * cameras created. */
         if (mEmulatedCameras == NULL) {
-            mEmulatedCameras = new EmulatedCamera*[mEmulatedCameraNum];
+            mEmulatedCameras = new EmulatedBaseCamera*[mEmulatedCameraNum];
             if (mEmulatedCameras == NULL) {
-                LOGE("%s: Unable to allocate emulated camera array for %d entries",
+                ALOGE("%s: Unable to allocate emulated camera array for %d entries",
                      __FUNCTION__, mEmulatedCameraNum);
                 return;
             }
-            memset(mEmulatedCameras, 0, mEmulatedCameraNum * sizeof(EmulatedCamera*));
+            memset(mEmulatedCameras, 0,
+                    mEmulatedCameraNum * sizeof(EmulatedBaseCamera*));
         }
 
         /* Create, and initialize the fake camera */
-        mEmulatedCameras[mFakeCameraID] =
-            new EmulatedFakeCamera(mFakeCameraID, &HAL_MODULE_INFO_SYM.common);
-        if (mEmulatedCameras[mFakeCameraID] != NULL) {
-            if (mEmulatedCameras[mFakeCameraID]->Initialize() != NO_ERROR) {
-                delete mEmulatedCameras[mFakeCameraID];
+        switch (getFrontCameraHalVersion()) {
+            case 1:
+                mEmulatedCameras[camera_id] =
+                        new EmulatedFakeCamera(camera_id, false, &HAL_MODULE_INFO_SYM.common);
+                break;
+            case 2:
+                mEmulatedCameras[camera_id] =
+                        new EmulatedFakeCamera2(camera_id, false, &HAL_MODULE_INFO_SYM.common);
+                break;
+            default:
+                ALOGE("%s: Unknown front camera hal version requested: %d", __FUNCTION__,
+                        getFrontCameraHalVersion());
+        }
+        if (mEmulatedCameras[camera_id] != NULL) {
+            ALOGV("%s: Front camera device version is %d", __FUNCTION__,
+                    getFrontCameraHalVersion());
+            if (mEmulatedCameras[camera_id]->Initialize() != NO_ERROR) {
+                delete mEmulatedCameras[camera_id];
                 mEmulatedCameras--;
-                mFakeCameraID = -1;
             }
         } else {
             mEmulatedCameras--;
-            mFakeCameraID = -1;
-            LOGE("%s: Unable to instantiate fake camera class", __FUNCTION__);
+            ALOGE("%s: Unable to instantiate fake camera class", __FUNCTION__);
         }
-    } else {
-        LOGD("Fake camera emulation is disabled.");
     }
 
-    LOGV("%d cameras are being emulated. Fake camera ID is %d",
-         mEmulatedCameraNum, mFakeCameraID);
+    ALOGV("%d cameras are being emulated. %d of them are fake cameras.",
+          mEmulatedCameraNum, mFakeCameraNum);
 
     mConstructedOK = true;
 }
@@ -107,24 +165,24 @@
 /****************************************************************************
  * Camera HAL API handlers.
  *
- * Each handler simply verifies existence of an appropriate EmulatedCamera
+ * Each handler simply verifies existence of an appropriate EmulatedBaseCamera
  * instance, and dispatches the call to that instance.
  *
  ***************************************************************************/
 
 int EmulatedCameraFactory::cameraDeviceOpen(int camera_id, hw_device_t** device)
 {
-    LOGV("%s: id = %d", __FUNCTION__, camera_id);
+    ALOGV("%s: id = %d", __FUNCTION__, camera_id);
 
     *device = NULL;
 
     if (!isConstructedOK()) {
-        LOGE("%s: EmulatedCameraFactory has failed to initialize", __FUNCTION__);
+        ALOGE("%s: EmulatedCameraFactory has failed to initialize", __FUNCTION__);
         return -EINVAL;
     }
 
     if (camera_id < 0 || camera_id >= getEmulatedCameraNum()) {
-        LOGE("%s: Camera id %d is out of bounds (%d)",
+        ALOGE("%s: Camera id %d is out of bounds (%d)",
              __FUNCTION__, camera_id, getEmulatedCameraNum());
         return -EINVAL;
     }
@@ -134,15 +192,15 @@
 
 int EmulatedCameraFactory::getCameraInfo(int camera_id, struct camera_info* info)
 {
-    LOGV("%s: id = %d", __FUNCTION__, camera_id);
+    ALOGV("%s: id = %d", __FUNCTION__, camera_id);
 
     if (!isConstructedOK()) {
-        LOGE("%s: EmulatedCameraFactory has failed to initialize", __FUNCTION__);
+        ALOGE("%s: EmulatedCameraFactory has failed to initialize", __FUNCTION__);
         return -EINVAL;
     }
 
     if (camera_id < 0 || camera_id >= getEmulatedCameraNum()) {
-        LOGE("%s: Camera id %d is out of bounds (%d)",
+        ALOGE("%s: Camera id %d is out of bounds (%d)",
              __FUNCTION__, camera_id, getEmulatedCameraNum());
         return -EINVAL;
     }
@@ -164,12 +222,12 @@
      */
 
     if (module != &HAL_MODULE_INFO_SYM.common) {
-        LOGE("%s: Invalid module %p expected %p",
+        ALOGE("%s: Invalid module %p expected %p",
              __FUNCTION__, module, &HAL_MODULE_INFO_SYM.common);
         return -EINVAL;
     }
     if (name == NULL) {
-        LOGE("%s: NULL name is not expected here", __FUNCTION__);
+        ALOGE("%s: NULL name is not expected here", __FUNCTION__);
         return -EINVAL;
     }
 
@@ -230,15 +288,15 @@
     }
 
     /* Allocate the array for emulated camera instances. Note that we allocate
-     * one more entry for the fake camera emulation. */
-    mEmulatedCameras = new EmulatedCamera*[num + 1];
+     * two more entries for back and front fake camera emulation. */
+    mEmulatedCameras = new EmulatedBaseCamera*[num + 2];
     if (mEmulatedCameras == NULL) {
-        LOGE("%s: Unable to allocate emulated camera array for %d entries",
+        ALOGE("%s: Unable to allocate emulated camera array for %d entries",
              __FUNCTION__, num + 1);
         free(camera_list);
         return;
     }
-    memset(mEmulatedCameras, 0, sizeof(EmulatedCamera*) * (num + 1));
+    memset(mEmulatedCameras, 0, sizeof(EmulatedBaseCamera*) * (num + 1));
 
     /*
      * Iterate the list, creating, and initializin emulated qemu cameras for each
@@ -292,11 +350,11 @@
                     delete qemu_cam;
                 }
             } else {
-                LOGE("%s: Unable to instantiate EmulatedQemuCamera",
+                ALOGE("%s: Unable to instantiate EmulatedQemuCamera",
                      __FUNCTION__);
             }
         } else {
-            LOGW("%s: Bad camera information: %s", __FUNCTION__, cur_entry);
+            ALOGW("%s: Bad camera information: %s", __FUNCTION__, cur_entry);
         }
 
         cur_entry = next_entry;
@@ -305,19 +363,68 @@
     mEmulatedCameraNum = index;
 }
 
-bool EmulatedCameraFactory::isFakeCameraEmulationOn()
+bool EmulatedCameraFactory::isBackFakeCameraEmulationOn()
 {
-    /* Defined by 'qemu.sf.fake_camera' boot property: If property is there
-     * and contains 'off', fake camera emulation is disabled. */
+    /* Defined by 'qemu.sf.fake_camera' boot property: if property exist, and
+     * is set to 'both', or 'back', then fake camera is used to emulate back
+     * camera. */
     char prop[PROPERTY_VALUE_MAX];
-    if (property_get("qemu.sf.fake_camera", prop, NULL) <= 0 ||
-        strcmp(prop, "off")) {
+    if ((property_get("qemu.sf.fake_camera", prop, NULL) > 0) &&
+        (!strcmp(prop, "both") || !strcmp(prop, "back"))) {
         return true;
     } else {
         return false;
     }
 }
 
+int EmulatedCameraFactory::getBackCameraHalVersion()
+{
+    /* Defined by 'qemu.sf.back_camera_hal_version' boot property: if the
+     * property doesn't exist, it is assumed to be 1. */
+    char prop[PROPERTY_VALUE_MAX];
+    if (property_get("qemu.sf.back_camera_hal", prop, NULL) > 0) {
+        char *prop_end = prop;
+        int val = strtol(prop, &prop_end, 10);
+        if (*prop_end == '\0') {
+            return val;
+        }
+        // Badly formatted property, should just be a number
+        ALOGE("qemu.sf.back_camera_hal is not a number: %s", prop);
+    }
+    return 1;
+}
+
+bool EmulatedCameraFactory::isFrontFakeCameraEmulationOn()
+{
+    /* Defined by 'qemu.sf.fake_camera' boot property: if property exist, and
+     * is set to 'both', or 'front', then fake camera is used to emulate front
+     * camera. */
+    char prop[PROPERTY_VALUE_MAX];
+    if ((property_get("qemu.sf.fake_camera", prop, NULL) > 0) &&
+        (!strcmp(prop, "both") || !strcmp(prop, "front"))) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
+int EmulatedCameraFactory::getFrontCameraHalVersion()
+{
+    /* Defined by 'qemu.sf.front_camera_hal_version' boot property: if the
+     * property doesn't exist, it is assumed to be 1. */
+    char prop[PROPERTY_VALUE_MAX];
+    if (property_get("qemu.sf.front_camera_hal", prop, NULL) > 0) {
+        char *prop_end = prop;
+        int val = strtol(prop, &prop_end, 10);
+        if (*prop_end == '\0') {
+            return val;
+        }
+        // Badly formatted property, should just be a number
+        ALOGE("qemu.sf.front_camera_hal is not a number: %s", prop);
+    }
+    return 1;
+}
+
 /********************************************************************************
  * Initializer for the static member structure.
  *******************************************************************************/
diff --git a/tools/emulator/system/camera/EmulatedCameraFactory.h b/tools/emulator/system/camera/EmulatedCameraFactory.h
index 19745a3..123e735 100755
--- a/tools/emulator/system/camera/EmulatedCameraFactory.h
+++ b/tools/emulator/system/camera/EmulatedCameraFactory.h
@@ -17,7 +17,7 @@
 #ifndef HW_EMULATOR_CAMERA_EMULATED_CAMERA_FACTORY_H
 #define HW_EMULATOR_CAMERA_EMULATED_CAMERA_FACTORY_H
 
-#include "EmulatedCamera.h"
+#include "EmulatedBaseCamera.h"
 #include "QemuClient.h"
 
 namespace android {
@@ -131,8 +131,17 @@
      */
     void createQemuCameras();
 
-    /* Checks if fake camera emulation is on. */
-    bool isFakeCameraEmulationOn();
+    /* Checks if fake camera emulation is on for the camera facing back. */
+    bool isBackFakeCameraEmulationOn();
+
+    /* Gets camera device version number to use for back camera emulation */
+    int getBackCameraHalVersion();
+
+    /* Checks if fake camera emulation is on for the camera facing front. */
+    bool isFrontFakeCameraEmulationOn();
+
+    /* Gets camera device version number to use for front camera emulation */
+    int getFrontCameraHalVersion();
 
     /****************************************************************************
      * Data members.
@@ -143,13 +152,13 @@
     FactoryQemuClient   mQemuClient;
 
     /* Array of cameras available for the emulation. */
-    EmulatedCamera**    mEmulatedCameras;
+    EmulatedBaseCamera**    mEmulatedCameras;
 
-    /* Number of emulated cameras (including the fake one). */
+    /* Number of emulated cameras (including the fake ones). */
     int                 mEmulatedCameraNum;
 
-    /* Fake camera ID. */
-    int                 mFakeCameraID;
+    /* Number of emulated fake cameras. */
+    int                 mFakeCameraNum;
 
     /* Flags whether or not constructor has succeeded. */
     bool                mConstructedOK;
diff --git a/tools/emulator/system/camera/EmulatedCameraHal.cpp b/tools/emulator/system/camera/EmulatedCameraHal.cpp
index 7f3f7b8..aa0cb00 100755
--- a/tools/emulator/system/camera/EmulatedCameraHal.cpp
+++ b/tools/emulator/system/camera/EmulatedCameraHal.cpp
@@ -30,15 +30,15 @@
  */
 camera_module_t HAL_MODULE_INFO_SYM = {
     common: {
-         tag:           HARDWARE_MODULE_TAG,
-         version_major: 1,
-         version_minor: 0,
-         id:            CAMERA_HARDWARE_MODULE_ID,
-         name:          "Emulated Camera Module",
-         author:        "The Android Open Source Project",
-         methods:       &android::EmulatedCameraFactory::mCameraModuleMethods,
-         dso:           NULL,
-         reserved:      {0},
+         tag:                HARDWARE_MODULE_TAG,
+         module_api_version: CAMERA_MODULE_API_VERSION_2_0,
+         hal_api_version:    HARDWARE_HAL_API_VERSION,
+         id:                 CAMERA_HARDWARE_MODULE_ID,
+         name:               "Emulated Camera Module",
+         author:             "The Android Open Source Project",
+         methods:            &android::EmulatedCameraFactory::mCameraModuleMethods,
+         dso:                NULL,
+         reserved:           {0},
     },
     get_number_of_cameras:  android::EmulatedCameraFactory::get_number_of_cameras,
     get_camera_info:        android::EmulatedCameraFactory::get_camera_info,
diff --git a/tools/emulator/system/camera/EmulatedFakeCamera.cpp b/tools/emulator/system/camera/EmulatedFakeCamera.cpp
index 86b9d08..457850d 100755
--- a/tools/emulator/system/camera/EmulatedFakeCamera.cpp
+++ b/tools/emulator/system/camera/EmulatedFakeCamera.cpp
@@ -28,8 +28,11 @@
 
 namespace android {
 
-EmulatedFakeCamera::EmulatedFakeCamera(int cameraId, struct hw_module_t* module)
+EmulatedFakeCamera::EmulatedFakeCamera(int cameraId,
+                                       bool facingBack,
+                                       struct hw_module_t* module)
         : EmulatedCamera(cameraId, module),
+          mFacingBack(facingBack),
           mFakeCameraDevice(this)
 {
 }
@@ -49,13 +52,11 @@
         return res;
     }
 
-    /* Fake camera facing is defined by the qemu.sf.fake_camera boot property. */
-    char prop[PROPERTY_VALUE_MAX];
-    property_get("qemu.sf.fake_camera", prop, EmulatedCamera::FACING_BACK);
-    const char* facing = prop;
+    const char* facing = mFacingBack ? EmulatedCamera::FACING_BACK :
+                                       EmulatedCamera::FACING_FRONT;
 
     mParameters.set(EmulatedCamera::FACING_KEY, facing);
-    LOGD("%s: Fake camera is facing %s", __FUNCTION__, facing);
+    ALOGD("%s: Fake camera is facing %s", __FUNCTION__, facing);
 
     mParameters.set(EmulatedCamera::ORIENTATION_KEY,
                     gEmulatedCameraFactory.getFakeCameraOrientation());
diff --git a/tools/emulator/system/camera/EmulatedFakeCamera.h b/tools/emulator/system/camera/EmulatedFakeCamera.h
index 3debe9e..4bfbd70 100755
--- a/tools/emulator/system/camera/EmulatedFakeCamera.h
+++ b/tools/emulator/system/camera/EmulatedFakeCamera.h
@@ -35,7 +35,7 @@
 class EmulatedFakeCamera : public EmulatedCamera {
 public:
     /* Constructs EmulatedFakeCamera instance. */
-    EmulatedFakeCamera(int cameraId, struct hw_module_t* module);
+    EmulatedFakeCamera(int cameraId, bool facingBack, struct hw_module_t* module);
 
     /* Destructs EmulatedFakeCamera instance. */
     ~EmulatedFakeCamera();
@@ -62,6 +62,9 @@
      ***************************************************************************/
 
 protected:
+    /* Facing back (true) or front (false) switch. */
+    bool                        mFacingBack;
+
     /* Contained fake camera device object. */
     EmulatedFakeCameraDevice    mFakeCameraDevice;
 };
diff --git a/tools/emulator/system/camera/EmulatedFakeCamera2.cpp b/tools/emulator/system/camera/EmulatedFakeCamera2.cpp
new file mode 100644
index 0000000..aa62244
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedFakeCamera2.cpp
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+/*
+ * Contains implementation of a class EmulatedFakeCamera2 that encapsulates
+ * functionality of an advanced fake camera.
+ */
+
+#define LOG_NDEBUG 0
+#define LOG_TAG "EmulatedCamera_FakeCamera2"
+#include <cutils/log.h>
+#include <cutils/properties.h>
+#include "EmulatedFakeCamera2.h"
+#include "EmulatedCameraFactory.h"
+
+namespace android {
+
+EmulatedFakeCamera2::EmulatedFakeCamera2(int cameraId,
+        bool facingBack,
+        struct hw_module_t* module)
+        : EmulatedCamera2(cameraId,module),
+          mFacingBack(facingBack)
+{
+    ALOGD("Constructing emulated fake camera 2 facing %s",
+            facingBack ? "back" : "front");
+}
+
+EmulatedFakeCamera2::~EmulatedFakeCamera2()
+{
+}
+
+/****************************************************************************
+ * Public API overrides
+ ***************************************************************************/
+
+status_t EmulatedFakeCamera2::Initialize()
+{
+    return NO_ERROR;
+}
+
+};  /* namespace android */
diff --git a/tools/emulator/system/camera/EmulatedFakeCamera2.h b/tools/emulator/system/camera/EmulatedFakeCamera2.h
new file mode 100644
index 0000000..89b12d3
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedFakeCamera2.h
@@ -0,0 +1,67 @@
+/*
+ * 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 HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA2_H
+#define HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA2_H
+
+/*
+ * Contains declaration of a class EmulatedFakeCamera2 that encapsulates
+ * functionality of a fake camera that implements version 2 of the camera device
+ * interface.
+ */
+
+#include "EmulatedCamera2.h"
+
+namespace android {
+
+/* Encapsulates functionality of an advanced fake camera.  This camera contains
+ * a simple simulation of a scene, sensor, and image processing pipeline.
+ */
+class EmulatedFakeCamera2 : public EmulatedCamera2 {
+public:
+    /* Constructs EmulatedFakeCamera instance. */
+    EmulatedFakeCamera2(int cameraId, bool facingBack, struct hw_module_t* module);
+
+    /* Destructs EmulatedFakeCamera instance. */
+    ~EmulatedFakeCamera2();
+
+    /****************************************************************************
+     * EmulatedCamera2 virtual overrides.
+     ***************************************************************************/
+
+public:
+    /* Initializes EmulatedFakeCamera2 instance. */
+     status_t Initialize();
+
+    /****************************************************************************
+     * EmulatedCamera abstract API implementation.
+     ***************************************************************************/
+
+protected:
+
+    /****************************************************************************
+     * Data memebers.
+     ***************************************************************************/
+
+protected:
+    /* Facing back (true) or front (false) switch. */
+    bool                        mFacingBack;
+
+};
+
+}; /* namespace android */
+
+#endif  /* HW_EMULATOR_CAMERA_EMULATED_FAKE_CAMERA2_H */
diff --git a/tools/emulator/system/camera/EmulatedFakeCameraDevice.cpp b/tools/emulator/system/camera/EmulatedFakeCameraDevice.cpp
index 3666827..0bc4c54 100755
--- a/tools/emulator/system/camera/EmulatedFakeCameraDevice.cpp
+++ b/tools/emulator/system/camera/EmulatedFakeCameraDevice.cpp
@@ -46,11 +46,11 @@
 {
     // Makes the image with the original exposure compensation darker.
     // So the effects of changing the exposure compensation can be seen.
-    mBlackYUV.Y = mBlackYUV.Y / 4;
-    mWhiteYUV.Y = mWhiteYUV.Y / 4;
-    mRedYUV.Y = mRedYUV.Y / 4;
-    mGreenYUV.Y = mGreenYUV.Y / 4;
-    mBlueYUV.Y = mBlueYUV.Y / 4;
+    mBlackYUV.Y = mBlackYUV.Y / 2;
+    mWhiteYUV.Y = mWhiteYUV.Y / 2;
+    mRedYUV.Y = mRedYUV.Y / 2;
+    mGreenYUV.Y = mGreenYUV.Y / 2;
+    mBlueYUV.Y = mBlueYUV.Y / 2;
 }
 
 EmulatedFakeCameraDevice::~EmulatedFakeCameraDevice()
@@ -63,15 +63,15 @@
 
 status_t EmulatedFakeCameraDevice::connectDevice()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isInitialized()) {
-        LOGE("%s: Fake camera device is not initialized.", __FUNCTION__);
+        ALOGE("%s: Fake camera device is not initialized.", __FUNCTION__);
         return EINVAL;
     }
     if (isConnected()) {
-        LOGW("%s: Fake camera device is already connected.", __FUNCTION__);
+        ALOGW("%s: Fake camera device is already connected.", __FUNCTION__);
         return NO_ERROR;
     }
 
@@ -83,15 +83,15 @@
 
 status_t EmulatedFakeCameraDevice::disconnectDevice()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isConnected()) {
-        LOGW("%s: Fake camera device is already disconnected.", __FUNCTION__);
+        ALOGW("%s: Fake camera device is already disconnected.", __FUNCTION__);
         return NO_ERROR;
     }
     if (isStarted()) {
-        LOGE("%s: Cannot disconnect from the started device.", __FUNCTION__);
+        ALOGE("%s: Cannot disconnect from the started device.", __FUNCTION__);
         return EINVAL;
     }
 
@@ -105,15 +105,15 @@
                                                int height,
                                                uint32_t pix_fmt)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isConnected()) {
-        LOGE("%s: Fake camera device is not connected.", __FUNCTION__);
+        ALOGE("%s: Fake camera device is not connected.", __FUNCTION__);
         return EINVAL;
     }
     if (isStarted()) {
-        LOGE("%s: Fake camera device is already started.", __FUNCTION__);
+        ALOGE("%s: Fake camera device is already started.", __FUNCTION__);
         return EINVAL;
     }
 
@@ -154,7 +154,7 @@
                 break;
 
             default:
-                LOGE("%s: Unknown pixel format %.4s", __FUNCTION__,
+                ALOGE("%s: Unknown pixel format %.4s", __FUNCTION__,
                      reinterpret_cast<const char*>(&mPixelFormat));
                 return EINVAL;
         }
@@ -162,7 +162,7 @@
         mUVInRow = (width / 2) * mUVStep;
         mState = ECDS_STARTED;
     } else {
-        LOGE("%s: commonStartDevice failed", __FUNCTION__);
+        ALOGE("%s: commonStartDevice failed", __FUNCTION__);
     }
 
     return res;
@@ -170,11 +170,11 @@
 
 status_t EmulatedFakeCameraDevice::stopDevice()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isStarted()) {
-        LOGW("%s: Fake camera device is not started.", __FUNCTION__);
+        ALOGW("%s: Fake camera device is not started.", __FUNCTION__);
         return NO_ERROR;
     }
 
@@ -195,7 +195,7 @@
     WorkerThread::SelectRes res =
         getWorkerThread()->Select(-1, 1000000 / mEmulatedFPS);
     if (res == WorkerThread::EXIT_THREAD) {
-        LOGV("%s: Worker thread has been terminated.", __FUNCTION__);
+        ALOGV("%s: Worker thread has been terminated.", __FUNCTION__);
         return false;
     }
 
@@ -256,6 +256,9 @@
     uint8_t* U = U_pos;
     uint8_t* V = V_pos;
 
+    YUVPixel adjustedWhite = YUVPixel(mWhiteYUV);
+    changeWhiteBalance(adjustedWhite.Y, adjustedWhite.U, adjustedWhite.V);
+
     for(int y = 0; y < mFrameHeight; y++) {
         int countx = checkxremainder;
         bool current = black;
@@ -263,7 +266,7 @@
             if (current) {
                 mBlackYUV.get(Y, U, V);
             } else {
-                mWhiteYUV.get(Y, U, V);
+                adjustedWhite.get(Y, U, V);
             }
             *Y = changeExposure(*Y);
             Y[1] = *Y;
@@ -309,6 +312,9 @@
     const int square_ystop = min(mFrameHeight, y + size);
     uint8_t* Y_pos = mCurrentFrame + y * mFrameWidth + x;
 
+    YUVPixel adjustedColor = *color;
+    changeWhiteBalance(adjustedColor.Y, adjustedColor.U, adjustedColor.V);
+
     // Draw the square.
     for (; y < square_ystop; y++) {
         const int iUV = (y / 2) * mUVInRow + (x / 2) * mUVStep;
@@ -316,7 +322,7 @@
         uint8_t* sqV = mFrameV + iUV;
         uint8_t* sqY = Y_pos;
         for (int i = x; i < square_xstop; i += 2) {
-            color->get(sqY, sqU, sqV);
+            adjustedColor.get(sqY, sqU, sqV);
             *sqY = changeExposure(*sqY);
             sqY[1] = *sqY;
             sqY += 2; sqU += mUVStep; sqV += mUVStep;
@@ -329,8 +335,11 @@
 
 void EmulatedFakeCameraDevice::drawSolid(YUVPixel* color)
 {
+    YUVPixel adjustedColor = *color;
+    changeWhiteBalance(adjustedColor.Y, adjustedColor.U, adjustedColor.V);
+
     /* All Ys are the same. */
-    memset(mCurrentFrame, changeExposure(color->Y), mTotalPixels);
+    memset(mCurrentFrame, changeExposure(adjustedColor.Y), mTotalPixels);
 
     /* Fill U, and V panes. */
     uint8_t* U = mFrameU;
@@ -364,6 +373,7 @@
             /* And the blue stripe at the bottom. */
             color = &mBlueYUV;
         }
+        changeWhiteBalance(color->Y, color->U, color->V);
 
         /* All Ys at the row are the same. */
         memset(pY, changeExposure(color->Y), mFrameWidth);
@@ -389,26 +399,26 @@
             mCurrentFrameType = 0;
         }
         if (mCurrentFrameType == 2) {
-            LOGD("********** Rotated to the SOLID COLOR frame **********");
+            ALOGD("********** Rotated to the SOLID COLOR frame **********");
             /* Solid color: lets rotate color too. */
             if (mCurrentColor == &mWhiteYUV) {
-                LOGD("----- Painting a solid RED frame -----");
+                ALOGD("----- Painting a solid RED frame -----");
                 mCurrentColor = &mRedYUV;
             } else if (mCurrentColor == &mRedYUV) {
-                LOGD("----- Painting a solid GREEN frame -----");
+                ALOGD("----- Painting a solid GREEN frame -----");
                 mCurrentColor = &mGreenYUV;
             } else if (mCurrentColor == &mGreenYUV) {
-                LOGD("----- Painting a solid BLUE frame -----");
+                ALOGD("----- Painting a solid BLUE frame -----");
                 mCurrentColor = &mBlueYUV;
             } else {
                 /* Back to white. */
-                LOGD("----- Painting a solid WHITE frame -----");
+                ALOGD("----- Painting a solid WHITE frame -----");
                 mCurrentColor = &mWhiteYUV;
             }
         } else if (mCurrentFrameType == 0) {
-            LOGD("********** Rotated to the CHECKERBOARD frame **********");
-        } else {
-            LOGD("********** Rotated to the STRIPED frame **********");
+            ALOGD("********** Rotated to the CHECKERBOARD frame **********");
+        } else if (mCurrentFrameType == 1) {
+            ALOGD("********** Rotated to the STRIPED frame **********");
         }
     }
 
diff --git a/tools/emulator/system/camera/EmulatedFakeCameraDevice.h b/tools/emulator/system/camera/EmulatedFakeCameraDevice.h
index 383118b..f66f076 100755
--- a/tools/emulator/system/camera/EmulatedFakeCameraDevice.h
+++ b/tools/emulator/system/camera/EmulatedFakeCameraDevice.h
@@ -99,6 +99,7 @@
      ***************************************************************************/
 
 private:
+
     /* Draws a black and white checker board in the current frame buffer. */
     void drawCheckerboard();
 
@@ -110,10 +111,6 @@
      */
     void drawSquare(int x, int y, int size, const YUVPixel* color);
 
-    inline uint8_t changeExposure(uint8_t inputY) {
-        return static_cast<uint8_t>(static_cast<float>(inputY) *
-                                    mExposureCompensation);
-    }
 #if EFCD_ROTATE_FRAME
     void drawSolid(YUVPixel* color);
     void drawStripes();
diff --git a/tools/emulator/system/camera/EmulatedQemuCamera.cpp b/tools/emulator/system/camera/EmulatedQemuCamera.cpp
index 611b6b5..af1e324 100755
--- a/tools/emulator/system/camera/EmulatedQemuCamera.cpp
+++ b/tools/emulator/system/camera/EmulatedQemuCamera.cpp
@@ -45,7 +45,7 @@
                                         const char* frame_dims,
                                         const char* facing_dir)
 {
-    LOGV("%s:\n   Name=%s\n   Facing '%s'\n   Dimensions=%s",
+    ALOGV("%s:\n   Name=%s\n   Facing '%s'\n   Dimensions=%s",
          __FUNCTION__, device_name, facing_dir, frame_dims);
     /* Save dimensions. */
     mFrameDims = frame_dims;
@@ -94,7 +94,7 @@
     /* Width and height are separated with 'x' */
     char* sep = strchr(first_dim, 'x');
     if (sep == NULL) {
-        LOGE("%s: Invalid first dimension format in %s",
+        ALOGE("%s: Invalid first dimension format in %s",
              __FUNCTION__, frame_dims);
         return EINVAL;
     }
@@ -105,7 +105,7 @@
     mParameters.setPreviewSize(x, y);
     mParameters.setPictureSize(x, y);
 
-    LOGV("%s: Qemu camera %s is initialized. Current frame is %dx%d",
+    ALOGV("%s: Qemu camera %s is initialized. Current frame is %dx%d",
          __FUNCTION__, device_name, x, y);
 
     return NO_ERROR;
diff --git a/tools/emulator/system/camera/EmulatedQemuCamera2.cpp b/tools/emulator/system/camera/EmulatedQemuCamera2.cpp
new file mode 100644
index 0000000..2c94f0e
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedQemuCamera2.cpp
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+
+/*
+ * Contains implementation of a class EmulatedQemuCamera2 that encapsulates
+ * functionality of a host webcam with further processing to simulate the
+ * capabilities of a v2 camera device.
+ */
+
+#define LOG_NDEBUG 0
+#define LOG_TAG "EmulatedCamera_QemuCamera2"
+#include <cutils/log.h>
+#include <cutils/properties.h>
+#include "EmulatedQemuCamera2.h"
+#include "EmulatedCameraFactory.h"
+
+namespace android {
+
+EmulatedQemuCamera2::EmulatedQemuCamera2(int cameraId,
+        bool facingBack,
+        struct hw_module_t* module)
+        : EmulatedCamera2(cameraId,module),
+          mFacingBack(facingBack)
+{
+    ALOGD("Constructing emulated qemu camera 2 facing %s",
+            facingBack ? "back" : "front");
+}
+
+EmulatedQemuCamera2::~EmulatedQemuCamera2()
+{
+}
+
+/****************************************************************************
+ * Public API overrides
+ ***************************************************************************/
+
+status_t EmulatedQemuCamera2::Initialize()
+{
+    return NO_ERROR;
+}
+
+};  /* namespace android */
diff --git a/tools/emulator/system/camera/EmulatedQemuCamera2.h b/tools/emulator/system/camera/EmulatedQemuCamera2.h
new file mode 100644
index 0000000..520ccce
--- /dev/null
+++ b/tools/emulator/system/camera/EmulatedQemuCamera2.h
@@ -0,0 +1,66 @@
+/*
+ * 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 HW_EMULATOR_CAMERA_EMULATED_QEMU_CAMERA2_H
+#define HW_EMULATOR_CAMERA_EMULATED_QEMU_CAMERA2_H
+
+/*
+ * Contains declaration of a class EmulatedQemuCamera2 that encapsulates
+ * functionality of a host webcam with added processing to implement version 2
+ * of the camera device interface.
+ */
+
+#include "EmulatedCamera2.h"
+
+namespace android {
+
+/* Encapsulates functionality of an advanced fake camera based on real host camera data.
+ */
+class EmulatedQemuCamera2 : public EmulatedCamera2 {
+public:
+    /* Constructs EmulatedFakeCamera instance. */
+    EmulatedQemuCamera2(int cameraId, bool facingBack, struct hw_module_t* module);
+
+    /* Destructs EmulatedFakeCamera instance. */
+    ~EmulatedQemuCamera2();
+
+    /****************************************************************************
+     * EmulatedCamera2 virtual overrides.
+     ***************************************************************************/
+
+public:
+    /* Initializes EmulatedQemuCamera2 instance. */
+     status_t Initialize();
+
+    /****************************************************************************
+     * EmulatedCamera abstract API implementation.
+     ***************************************************************************/
+
+protected:
+
+    /****************************************************************************
+     * Data memebers.
+     ***************************************************************************/
+
+protected:
+    /* Facing back (true) or front (false) switch. */
+    bool                        mFacingBack;
+
+};
+
+}; /* namespace android */
+
+#endif  /* HW_EMULATOR_CAMERA_EMULATED_QEMU_CAMERA2_H */
diff --git a/tools/emulator/system/camera/EmulatedQemuCameraDevice.cpp b/tools/emulator/system/camera/EmulatedQemuCameraDevice.cpp
index 57dbc98..07837af 100755
--- a/tools/emulator/system/camera/EmulatedQemuCameraDevice.cpp
+++ b/tools/emulator/system/camera/EmulatedQemuCameraDevice.cpp
@@ -58,7 +58,7 @@
     /* Initialize base class. */
     res = EmulatedCameraDevice::Initialize();
     if (res == NO_ERROR) {
-        LOGV("%s: Connected to the emulated camera service '%s'",
+        ALOGV("%s: Connected to the emulated camera service '%s'",
              __FUNCTION__, device_name);
         mDeviceName = device_name;
     } else {
@@ -74,15 +74,15 @@
 
 status_t EmulatedQemuCameraDevice::connectDevice()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isInitialized()) {
-        LOGE("%s: Qemu camera device is not initialized.", __FUNCTION__);
+        ALOGE("%s: Qemu camera device is not initialized.", __FUNCTION__);
         return EINVAL;
     }
     if (isConnected()) {
-        LOGW("%s: Qemu camera device '%s' is already connected.",
+        ALOGW("%s: Qemu camera device '%s' is already connected.",
              __FUNCTION__, (const char*)mDeviceName);
         return NO_ERROR;
     }
@@ -90,11 +90,11 @@
     /* Connect to the camera device via emulator. */
     const status_t res = mQemuClient.queryConnect();
     if (res == NO_ERROR) {
-        LOGV("%s: Connected to device '%s'",
+        ALOGV("%s: Connected to device '%s'",
              __FUNCTION__, (const char*)mDeviceName);
         mState = ECDS_CONNECTED;
     } else {
-        LOGE("%s: Connection to device '%s' failed",
+        ALOGE("%s: Connection to device '%s' failed",
              __FUNCTION__, (const char*)mDeviceName);
     }
 
@@ -103,16 +103,16 @@
 
 status_t EmulatedQemuCameraDevice::disconnectDevice()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isConnected()) {
-        LOGW("%s: Qemu camera device '%s' is already disconnected.",
+        ALOGW("%s: Qemu camera device '%s' is already disconnected.",
              __FUNCTION__, (const char*)mDeviceName);
         return NO_ERROR;
     }
     if (isStarted()) {
-        LOGE("%s: Cannot disconnect from the started device '%s.",
+        ALOGE("%s: Cannot disconnect from the started device '%s.",
              __FUNCTION__, (const char*)mDeviceName);
         return EINVAL;
     }
@@ -120,11 +120,11 @@
     /* Disconnect from the camera device via emulator. */
     const status_t res = mQemuClient.queryDisconnect();
     if (res == NO_ERROR) {
-        LOGV("%s: Disonnected from device '%s'",
+        ALOGV("%s: Disonnected from device '%s'",
              __FUNCTION__, (const char*)mDeviceName);
         mState = ECDS_INITIALIZED;
     } else {
-        LOGE("%s: Disconnection from device '%s' failed",
+        ALOGE("%s: Disconnection from device '%s' failed",
              __FUNCTION__, (const char*)mDeviceName);
     }
 
@@ -135,23 +135,23 @@
                                                int height,
                                                uint32_t pix_fmt)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isConnected()) {
-        LOGE("%s: Qemu camera device '%s' is not connected.",
+        ALOGE("%s: Qemu camera device '%s' is not connected.",
              __FUNCTION__, (const char*)mDeviceName);
         return EINVAL;
     }
     if (isStarted()) {
-        LOGW("%s: Qemu camera device '%s' is already started.",
+        ALOGW("%s: Qemu camera device '%s' is already started.",
              __FUNCTION__, (const char*)mDeviceName);
         return NO_ERROR;
     }
 
     status_t res = EmulatedCameraDevice::commonStartDevice(width, height, pix_fmt);
     if (res != NO_ERROR) {
-        LOGE("%s: commonStartDevice failed", __FUNCTION__);
+        ALOGE("%s: commonStartDevice failed", __FUNCTION__);
         return res;
     }
 
@@ -160,7 +160,7 @@
      * RGB32 only.*/
     mPreviewFrame = new uint32_t[mTotalPixels];
     if (mPreviewFrame == NULL) {
-        LOGE("%s: Unable to allocate %d bytes for preview frame",
+        ALOGE("%s: Unable to allocate %d bytes for preview frame",
              __FUNCTION__, mTotalPixels);
         return ENOMEM;
     }
@@ -168,13 +168,13 @@
     /* Start the actual camera device. */
     res = mQemuClient.queryStart(mPixelFormat, mFrameWidth, mFrameHeight);
     if (res == NO_ERROR) {
-        LOGV("%s: Qemu camera device '%s' is started for %.4s[%dx%d] frames",
+        ALOGV("%s: Qemu camera device '%s' is started for %.4s[%dx%d] frames",
              __FUNCTION__, (const char*)mDeviceName,
              reinterpret_cast<const char*>(&mPixelFormat),
              mFrameWidth, mFrameHeight);
         mState = ECDS_STARTED;
     } else {
-        LOGE("%s: Unable to start device '%s' for %.4s[%dx%d] frames",
+        ALOGE("%s: Unable to start device '%s' for %.4s[%dx%d] frames",
              __FUNCTION__, (const char*)mDeviceName,
              reinterpret_cast<const char*>(&pix_fmt), width, height);
     }
@@ -184,11 +184,11 @@
 
 status_t EmulatedQemuCameraDevice::stopDevice()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     if (!isStarted()) {
-        LOGW("%s: Qemu camera device '%s' is not started.",
+        ALOGW("%s: Qemu camera device '%s' is not started.",
              __FUNCTION__, (const char*)mDeviceName);
         return NO_ERROR;
     }
@@ -202,10 +202,10 @@
         }
         EmulatedCameraDevice::commonStopDevice();
         mState = ECDS_CONNECTED;
-        LOGV("%s: Qemu camera device '%s' is stopped",
+        ALOGV("%s: Qemu camera device '%s' is stopped",
              __FUNCTION__, (const char*)mDeviceName);
     } else {
-        LOGE("%s: Unable to stop device '%s'",
+        ALOGE("%s: Unable to stop device '%s'",
              __FUNCTION__, (const char*)mDeviceName);
     }
 
@@ -218,7 +218,7 @@
 
 status_t EmulatedQemuCameraDevice::getCurrentPreviewFrame(void* buffer)
 {
-    LOGW_IF(mPreviewFrame == NULL, "%s: No preview frame", __FUNCTION__);
+    ALOGW_IF(mPreviewFrame == NULL, "%s: No preview frame", __FUNCTION__);
     if (mPreviewFrame != NULL) {
         memcpy(buffer, mPreviewFrame, mTotalPixels * 4);
         return 0;
@@ -237,21 +237,25 @@
     WorkerThread::SelectRes res =
         getWorkerThread()->Select(-1, 1000000 / mEmulatedFPS);
     if (res == WorkerThread::EXIT_THREAD) {
-        LOGV("%s: Worker thread has been terminated.", __FUNCTION__);
+        ALOGV("%s: Worker thread has been terminated.", __FUNCTION__);
         return false;
     }
 
     /* Query frames from the service. */
     status_t query_res = mQemuClient.queryFrame(mCurrentFrame, mPreviewFrame,
                                                  mFrameBufferSize,
-                                                 mTotalPixels * 4);
+                                                 mTotalPixels * 4,
+                                                 mWhiteBalanceScale[0],
+                                                 mWhiteBalanceScale[1],
+                                                 mWhiteBalanceScale[2],
+                                                 mExposureCompensation);
     if (query_res == NO_ERROR) {
         /* Timestamp the current frame, and notify the camera HAL. */
         mCurFrameTimestamp = systemTime(SYSTEM_TIME_MONOTONIC);
         mCameraHAL->onNextFrameAvailable(mCurrentFrame, mCurFrameTimestamp, this);
         return true;
     } else {
-        LOGE("%s: Unable to get current video frame: %s",
+        ALOGE("%s: Unable to get current video frame: %s",
              __FUNCTION__, strerror(query_res));
         mCameraHAL->onCameraDeviceError(CAMERA_ERROR_SERVER_DIED);
         return false;
diff --git a/tools/emulator/system/camera/JpegCompressor.cpp b/tools/emulator/system/camera/JpegCompressor.cpp
index 0e538a1..8eec52d 100644
--- a/tools/emulator/system/camera/JpegCompressor.cpp
+++ b/tools/emulator/system/camera/JpegCompressor.cpp
@@ -44,7 +44,7 @@
                                               int height,
                                               int quality)
 {
-    LOGV("%s: %p[%dx%d]", __FUNCTION__, image, width, height);
+    ALOGV("%s: %p[%dx%d]", __FUNCTION__, image, width, height);
     void* pY = const_cast<void*>(image);
     int offsets[2];
     offsets[0] = 0;
@@ -52,11 +52,11 @@
     mStrides[0] = width;
     mStrides[1] = width;
     if (encode(&mStream, pY, width, height, offsets, quality)) {
-        LOGV("%s: Compressed JPEG: %d[%dx%d] -> %d bytes",
+        ALOGV("%s: Compressed JPEG: %d[%dx%d] -> %d bytes",
              __FUNCTION__, (width * height * 12) / 8, width, height, mStream.getOffset());
         return NO_ERROR;
     } else {
-        LOGE("%s: JPEG compression failed", __FUNCTION__);
+        ALOGE("%s: JPEG compression failed", __FUNCTION__);
         return errno ? errno : EINVAL;
     }
 }
diff --git a/tools/emulator/system/camera/PreviewWindow.cpp b/tools/emulator/system/camera/PreviewWindow.cpp
index fb708d5..4101ed9 100755
--- a/tools/emulator/system/camera/PreviewWindow.cpp
+++ b/tools/emulator/system/camera/PreviewWindow.cpp
@@ -49,7 +49,7 @@
 status_t PreviewWindow::setPreviewWindow(struct preview_stream_ops* window,
                                          int preview_fps)
 {
-    LOGV("%s: current: %p -> new: %p", __FUNCTION__, mPreviewWindow, window);
+    ALOGV("%s: current: %p -> new: %p", __FUNCTION__, mPreviewWindow, window);
 
     status_t res = NO_ERROR;
     Mutex::Autolock locker(&mObjectLock);
@@ -70,7 +70,7 @@
         } else {
             window = NULL;
             res = -res; // set_usage returns a negative errno.
-            LOGE("%s: Error setting preview window usage %d -> %s",
+            ALOGE("%s: Error setting preview window usage %d -> %s",
                  __FUNCTION__, res, strerror(res));
         }
     }
@@ -81,7 +81,7 @@
 
 status_t PreviewWindow::startPreview()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     mPreviewEnabled = true;
@@ -91,7 +91,7 @@
 
 void PreviewWindow::stopPreview()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     Mutex::Autolock locker(&mObjectLock);
     mPreviewEnabled = false;
@@ -117,7 +117,7 @@
         /* Need to set / adjust buffer geometry for the preview window.
          * Note that in the emulator preview window uses only RGB for pixel
          * formats. */
-        LOGV("%s: Adjusting preview windows %p geometry to %dx%d",
+        ALOGV("%s: Adjusting preview windows %p geometry to %dx%d",
              __FUNCTION__, mPreviewWindow, mPreviewFrameWidth,
              mPreviewFrameHeight);
         res = mPreviewWindow->set_buffers_geometry(mPreviewWindow,
@@ -125,7 +125,7 @@
                                                    mPreviewFrameHeight,
                                                    HAL_PIXEL_FORMAT_RGBA_8888);
         if (res != NO_ERROR) {
-            LOGE("%s: Error in set_buffers_geometry %d -> %s",
+            ALOGE("%s: Error in set_buffers_geometry %d -> %s",
                  __FUNCTION__, -res, strerror(-res));
             return;
         }
@@ -140,7 +140,7 @@
     int stride = 0;
     res = mPreviewWindow->dequeue_buffer(mPreviewWindow, &buffer, &stride);
     if (res != NO_ERROR || buffer == NULL) {
-        LOGE("%s: Unable to dequeue preview window buffer: %d -> %s",
+        ALOGE("%s: Unable to dequeue preview window buffer: %d -> %s",
             __FUNCTION__, -res, strerror(-res));
         return;
     }
@@ -148,7 +148,7 @@
     /* Let the preview window to lock the buffer. */
     res = mPreviewWindow->lock_buffer(mPreviewWindow, buffer);
     if (res != NO_ERROR) {
-        LOGE("%s: Unable to lock preview window buffer: %d -> %s",
+        ALOGE("%s: Unable to lock preview window buffer: %d -> %s",
              __FUNCTION__, -res, strerror(-res));
         mPreviewWindow->cancel_buffer(mPreviewWindow, buffer);
         return;
@@ -161,7 +161,7 @@
     GraphicBufferMapper& grbuffer_mapper(GraphicBufferMapper::get());
     res = grbuffer_mapper.lock(*buffer, GRALLOC_USAGE_SW_WRITE_OFTEN, rect, &img);
     if (res != NO_ERROR) {
-        LOGE("%s: grbuffer_mapper.lock failure: %d -> %s",
+        ALOGE("%s: grbuffer_mapper.lock failure: %d -> %s",
              __FUNCTION__, res, strerror(res));
         mPreviewWindow->cancel_buffer(mPreviewWindow, buffer);
         return;
@@ -172,9 +172,10 @@
     res = camera_dev->getCurrentPreviewFrame(img);
     if (res == NO_ERROR) {
         /* Show it. */
+        mPreviewWindow->set_timestamp(mPreviewWindow, timestamp);
         mPreviewWindow->enqueue_buffer(mPreviewWindow, buffer);
     } else {
-        LOGE("%s: Unable to obtain preview frame: %d", __FUNCTION__, res);
+        ALOGE("%s: Unable to obtain preview frame: %d", __FUNCTION__, res);
         mPreviewWindow->cancel_buffer(mPreviewWindow, buffer);
     }
     grbuffer_mapper.unlock(*buffer);
diff --git a/tools/emulator/system/camera/QemuClient.cpp b/tools/emulator/system/camera/QemuClient.cpp
index fd49585..17e6f98 100755
--- a/tools/emulator/system/camera/QemuClient.cpp
+++ b/tools/emulator/system/camera/QemuClient.cpp
@@ -27,7 +27,7 @@
 
 #define LOG_QUERIES 0
 #if LOG_QUERIES
-#define LOGQ(...)   LOGD(__VA_ARGS__)
+#define LOGQ(...)   ALOGD(__VA_ARGS__)
 #else
 #define LOGQ(...)   (void(0))
 
@@ -86,7 +86,7 @@
 
     /* Query name cannot be NULL or an empty string. */
     if (name == NULL || *name == '\0') {
-        LOGE("%s: NULL or an empty string is passed as query name.",
+        ALOGE("%s: NULL or an empty string is passed as query name.",
              __FUNCTION__);
         mQueryDeliveryStatus = EINVAL;
         return EINVAL;
@@ -100,7 +100,7 @@
         /* Preallocated buffer was too small. Allocate a bigger query buffer. */
         mQuery = new char[required];
         if (mQuery == NULL) {
-            LOGE("%s: Unable to allocate %d bytes for query buffer",
+            ALOGE("%s: Unable to allocate %d bytes for query buffer",
                  __FUNCTION__, required);
             mQueryDeliveryStatus = ENOMEM;
             return ENOMEM;
@@ -131,7 +131,7 @@
      * with a ':'. If there is no more data in the reply, the prefix will be
      * zero-terminated, and the terminator will be inculded in the reply. */
     if (mReplyBuffer == NULL || mReplySize < 3) {
-        LOGE("%s: Invalid reply to the query", __FUNCTION__);
+        ALOGE("%s: Invalid reply to the query", __FUNCTION__);
         mQueryDeliveryStatus = EINVAL;
         return EINVAL;
     }
@@ -142,7 +142,7 @@
     } else if (!memcmp(mReplyBuffer, "ko", 2)) {
         mReplyStatus = 0;
     } else {
-        LOGE("%s: Invalid query reply: '%s'", __FUNCTION__, mReplyBuffer);
+        ALOGE("%s: Invalid query reply: '%s'", __FUNCTION__, mReplyBuffer);
         mQueryDeliveryStatus = EINVAL;
         return EINVAL;
     }
@@ -152,7 +152,7 @@
         /* There are extra data. Make sure they are separated from the status
          * with a ':' */
         if (mReplyBuffer[2] != ':') {
-            LOGE("%s: Invalid query reply: '%s'", __FUNCTION__, mReplyBuffer);
+            ALOGE("%s: Invalid query reply: '%s'", __FUNCTION__, mReplyBuffer);
             mQueryDeliveryStatus = EINVAL;
             return EINVAL;
         }
@@ -162,7 +162,7 @@
         /* Make sure reply buffer containing just 'ok'/'ko' ends with
          * zero-terminator. */
         if (mReplyBuffer[2] != '\0') {
-            LOGE("%s: Invalid query reply: '%s'", __FUNCTION__, mReplyBuffer);
+            ALOGE("%s: Invalid query reply: '%s'", __FUNCTION__, mReplyBuffer);
             mQueryDeliveryStatus = EINVAL;
             return EINVAL;
         }
@@ -212,11 +212,11 @@
 
 status_t QemuClient::connectClient(const char* param)
 {
-    LOGV("%s: '%s'", __FUNCTION__, param ? param : "");
+    ALOGV("%s: '%s'", __FUNCTION__, param ? param : "");
 
     /* Make sure that client is not connected already. */
     if (mPipeFD >= 0) {
-        LOGE("%s: Qemu client is already connected", __FUNCTION__);
+        ALOGE("%s: Qemu client is already connected", __FUNCTION__);
         return EINVAL;
     }
 
@@ -237,7 +237,7 @@
         delete[] connection_str;
     }
     if (mPipeFD < 0) {
-        LOGE("%s: Unable to connect to the camera service '%s': %s",
+        ALOGE("%s: Unable to connect to the camera service '%s': %s",
              __FUNCTION__, param ? param : "Factory", strerror(errno));
         return errno ? errno : EINVAL;
     }
@@ -247,7 +247,7 @@
 
 void QemuClient::disconnectClient()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     if (mPipeFD >= 0) {
         close(mPipeFD);
@@ -258,7 +258,7 @@
 status_t QemuClient::sendMessage(const void* data, size_t data_size)
 {
     if (mPipeFD < 0) {
-        LOGE("%s: Qemu client is not connected", __FUNCTION__);
+        ALOGE("%s: Qemu client is not connected", __FUNCTION__);
         return EINVAL;
     }
 
@@ -270,7 +270,7 @@
     if (written == data_size) {
         return NO_ERROR;
     } else {
-        LOGE("%s: Error sending data via qemu pipe: '%s'",
+        ALOGE("%s: Error sending data via qemu pipe: '%s'",
              __FUNCTION__, strerror(errno));
         return errno ? errno : EIO;
     }
@@ -282,7 +282,7 @@
     *data_size = 0;
 
     if (mPipeFD < 0) {
-        LOGE("%s: Qemu client is not connected", __FUNCTION__);
+        ALOGE("%s: Qemu client is not connected", __FUNCTION__);
         return EINVAL;
     }
 
@@ -294,7 +294,7 @@
     char payload_size_str[9];
     int rd_res = qemud_fd_read(mPipeFD, payload_size_str, 8);
     if (rd_res != 8) {
-        LOGE("%s: Unable to obtain payload size: %s",
+        ALOGE("%s: Unable to obtain payload size: %s",
              __FUNCTION__, strerror(errno));
         return errno ? errno : EIO;
     }
@@ -304,14 +304,14 @@
     payload_size_str[8] = '\0';
     payload_size = strtol(payload_size_str, NULL, 16);
     if (errno) {
-        LOGE("%s: Invalid payload size '%s'", __FUNCTION__, payload_size_str);
+        ALOGE("%s: Invalid payload size '%s'", __FUNCTION__, payload_size_str);
         return EIO;
     }
 
     /* Allocate payload data buffer, and read the payload there. */
     *data = malloc(payload_size);
     if (*data == NULL) {
-        LOGE("%s: Unable to allocate %d bytes payload buffer",
+        ALOGE("%s: Unable to allocate %d bytes payload buffer",
              __FUNCTION__, payload_size);
         return ENOMEM;
     }
@@ -320,7 +320,7 @@
         *data_size = payload_size;
         return NO_ERROR;
     } else {
-        LOGE("%s: Read size %d doesnt match expected payload size %d: %s",
+        ALOGE("%s: Read size %d doesnt match expected payload size %d: %s",
              __FUNCTION__, rd_res, payload_size, strerror(errno));
         free(*data);
         *data = NULL;
@@ -332,7 +332,7 @@
 {
     /* Make sure that query has been successfuly constructed. */
     if (query->mQueryDeliveryStatus != NO_ERROR) {
-        LOGE("%s: Query is invalid", __FUNCTION__);
+        ALOGE("%s: Query is invalid", __FUNCTION__);
         return query->mQueryDeliveryStatus;
     }
 
@@ -348,17 +348,17 @@
             LOGQ("Response to query '%s': Status = '%.2s', %d bytes in response",
                  query->mQuery, query->mReplyBuffer, query->mReplySize);
         } else {
-            LOGE("%s Response to query '%s' has failed: %s",
+            ALOGE("%s Response to query '%s' has failed: %s",
                  __FUNCTION__, query->mQuery, strerror(res));
         }
     } else {
-        LOGE("%s: Send query '%s' failed: %s",
+        ALOGE("%s: Send query '%s' failed: %s",
              __FUNCTION__, query->mQuery, strerror(res));
     }
 
     /* Complete the query, and return its completion handling status. */
     const status_t res1 = query->completeQuery(res);
-    LOGE_IF(res1 != NO_ERROR && res1 != res,
+    ALOGE_IF(res1 != NO_ERROR && res1 != res,
             "%s: Error %d in query '%s' completion",
             __FUNCTION__, res1, query->mQuery);
     return res1;
@@ -386,18 +386,18 @@
 
 status_t FactoryQemuClient::listCameras(char** list)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     QemuQuery query(mQueryList);
     if (doQuery(&query) || !query.isQuerySucceeded()) {
-        LOGE("%s: List cameras query failed: %s", __FUNCTION__,
+        ALOGE("%s: List cameras query failed: %s", __FUNCTION__,
              query.mReplyData ? query.mReplyData : "No error message");
         return query.getCompletionStatus();
     }
 
     /* Make sure there is a list returned. */
     if (query.mReplyDataSize == 0) {
-        LOGE("%s: No camera list is returned.", __FUNCTION__);
+        ALOGE("%s: No camera list is returned.", __FUNCTION__);
         return EINVAL;
     }
 
@@ -405,10 +405,10 @@
     *list = (char*)malloc(query.mReplyDataSize);
     if (*list != NULL) {
         memcpy(*list, query.mReplyData, query.mReplyDataSize);
-        LOGD("Emulated camera list: %s", *list);
+        ALOGD("Emulated camera list: %s", *list);
         return NO_ERROR;
     } else {
-        LOGE("%s: Unable to allocate %d bytes",
+        ALOGE("%s: Unable to allocate %d bytes",
              __FUNCTION__, query.mReplyDataSize);
         return ENOMEM;
     }
@@ -445,12 +445,12 @@
 
 status_t CameraQemuClient::queryConnect()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     QemuQuery query(mQueryConnect);
     doQuery(&query);
     const status_t res = query.getCompletionStatus();
-    LOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
+    ALOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
             __FUNCTION__, query.mReplyData ? query.mReplyData :
                                              "No error message");
     return res;
@@ -458,12 +458,12 @@
 
 status_t CameraQemuClient::queryDisconnect()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     QemuQuery query(mQueryDisconnect);
     doQuery(&query);
     const status_t res = query.getCompletionStatus();
-    LOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
+    ALOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
             __FUNCTION__, query.mReplyData ? query.mReplyData :
                                              "No error message");
     return res;
@@ -473,7 +473,7 @@
                                       int width,
                                       int height)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     char query_str[256];
     snprintf(query_str, sizeof(query_str), "%s dim=%dx%d pix=%d",
@@ -481,7 +481,7 @@
     QemuQuery query(query_str);
     doQuery(&query);
     const status_t res = query.getCompletionStatus();
-    LOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
+    ALOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
             __FUNCTION__, query.mReplyData ? query.mReplyData :
                                              "No error message");
     return res;
@@ -489,12 +489,12 @@
 
 status_t CameraQemuClient::queryStop()
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     QemuQuery query(mQueryStop);
     doQuery(&query);
     const status_t res = query.getCompletionStatus();
-    LOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
+    ALOGE_IF(res != NO_ERROR, "%s: Query failed: %s",
             __FUNCTION__, query.mReplyData ? query.mReplyData :
                                              "No error message");
     return res;
@@ -503,19 +503,24 @@
 status_t CameraQemuClient::queryFrame(void* vframe,
                                       void* pframe,
                                       size_t vframe_size,
-                                      size_t pframe_size)
+                                      size_t pframe_size,
+                                      float r_scale,
+                                      float g_scale,
+                                      float b_scale,
+                                      float exposure_comp)
 {
-    LOGV("%s", __FUNCTION__);
+    ALOGV("%s", __FUNCTION__);
 
     char query_str[256];
-    snprintf(query_str, sizeof(query_str), "%s video=%d preview=%d",
+    snprintf(query_str, sizeof(query_str), "%s video=%d preview=%d whiteb=%g,%g,%g expcomp=%g",
              mQueryFrame, (vframe && vframe_size) ? vframe_size : 0,
-                           (pframe && pframe_size) ? pframe_size : 0);
+             (pframe && pframe_size) ? pframe_size : 0, r_scale, g_scale, b_scale,
+             exposure_comp);
     QemuQuery query(query_str);
     doQuery(&query);
     const status_t res = query.getCompletionStatus();
     if( res != NO_ERROR) {
-        LOGE("%s: Query failed: %s",
+        ALOGE("%s: Query failed: %s",
              __FUNCTION__, query.mReplyData ? query.mReplyData :
                                               "No error message");
         return res;
@@ -531,7 +536,7 @@
             memcpy(vframe, frame, vframe_size);
             cur_offset += vframe_size;
         } else {
-            LOGE("%s: Reply %d bytes is to small to contain %d bytes video frame",
+            ALOGE("%s: Reply %d bytes is to small to contain %d bytes video frame",
                  __FUNCTION__, query.mReplyDataSize - cur_offset, vframe_size);
             return EINVAL;
         }
@@ -542,7 +547,7 @@
             memcpy(pframe, frame + cur_offset, pframe_size);
             cur_offset += pframe_size;
         } else {
-            LOGE("%s: Reply %d bytes is to small to contain %d bytes preview frame",
+            ALOGE("%s: Reply %d bytes is to small to contain %d bytes preview frame",
                  __FUNCTION__, query.mReplyDataSize - cur_offset, pframe_size);
             return EINVAL;
         }
diff --git a/tools/emulator/system/camera/QemuClient.h b/tools/emulator/system/camera/QemuClient.h
index c0b8e61..1644321 100755
--- a/tools/emulator/system/camera/QemuClient.h
+++ b/tools/emulator/system/camera/QemuClient.h
@@ -401,13 +401,19 @@
      *  pframe, pframe_size - Define buffer, allocated to receive a preview frame.
      *      Any of these parameters can be 0, indicating that the caller is
      *      interested only in video frame.
+     *  r_scale, g_scale, b_scale - White balance scale.
+     *  exposure_comp - Expsoure compensation.
      * Return:
      *  NO_ERROR on success, or an appropriate error status on failure.
      */
     status_t queryFrame(void* vframe,
                         void* pframe,
                         size_t vframe_size,
-                        size_t pframe_size);
+                        size_t pframe_size,
+                        float r_scale,
+                        float g_scale,
+                        float b_scale,
+                        float exposure_comp);
 
     /****************************************************************************
      * Names of the queries available for the emulated camera.
diff --git a/tools/emulator/system/camera/media_codecs.xml b/tools/emulator/system/camera/media_codecs.xml
new file mode 100644
index 0000000..dcd8ce1
--- /dev/null
+++ b/tools/emulator/system/camera/media_codecs.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!-- 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.
+-->
+
+<!--
+<!DOCTYPE MediaCodecs [
+<!ELEMENT MediaCodecs (Decoders,Encoders)>
+<!ELEMENT Decoders (MediaCodec*)>
+<!ELEMENT Encoders (MediaCodec*)>
+<!ELEMENT MediaCodec (Type*,Quirk*)>
+<!ATTLIST MediaCodec name CDATA #REQUIRED>
+<!ATTLIST MediaCodec type CDATA>
+<!ELEMENT Type EMPTY>
+<!ATTLIST Type name CDATA #REQUIRED>
+<!ELEMENT Quirk EMPTY>
+<!ATTLIST Quirk name CDATA #REQUIRED>
+]>
+
+There's a simple and a complex syntax to declare the availability of a
+media codec:
+
+A codec that properly follows the OpenMax spec and therefore doesn't have any
+quirks and that only supports a single content type can be declared like so:
+
+    <MediaCodec name="OMX.foo.bar" type="something/interesting" />
+
+If a codec has quirks OR supports multiple content types, the following syntax
+can be used:
+
+    <MediaCodec name="OMX.foo.bar" >
+        <Type name="something/interesting" />
+        <Type name="something/else" />
+        ...
+        <Quirk name="requires-allocate-on-input-ports" />
+        <Quirk name="requires-allocate-on-output-ports" />
+        <Quirk name="output-buffers-are-unreadable" />
+    </MediaCodec>
+
+Only the three quirks included above are recognized at this point:
+
+"requires-allocate-on-input-ports"
+    must be advertised if the component does not properly support specification
+    of input buffers using the OMX_UseBuffer(...) API but instead requires
+    OMX_AllocateBuffer to be used.
+
+"requires-allocate-on-output-ports"
+    must be advertised if the component does not properly support specification
+    of output buffers using the OMX_UseBuffer(...) API but instead requires
+    OMX_AllocateBuffer to be used.
+
+"output-buffers-are-unreadable"
+    must be advertised if the emitted output buffers of a decoder component
+    are not readable, i.e. use a custom format even though abusing one of
+    the official OMX colorspace constants.
+    Clients of such decoders will not be able to access the decoded data,
+    naturally making the component much less useful. The only use for
+    a component with this quirk is to render the output to the screen.
+    Audio decoders MUST NOT advertise this quirk.
+    Video decoders that advertise this quirk must be accompanied by a
+    corresponding color space converter for thumbnail extraction,
+    matching surfaceflinger support that can render the custom format to
+    a texture and possibly other code, so just DON'T USE THIS QUIRK.
+
+-->
+
+<MediaCodecs>
+    <Decoders>
+        <MediaCodec name="OMX.google.mp3.decoder" type="audio/mpeg" />
+        <MediaCodec name="OMX.google.amrnb.decoder" type="audio/3gpp" />
+        <MediaCodec name="OMX.google.amrwb.decoder" type="audio/amr-wb" />
+        <MediaCodec name="OMX.google.aac.decoder" type="audio/mp4a-latm" />
+        <MediaCodec name="OMX.google.g711.alaw.decoder" type="audio/g711-alaw" />
+        <MediaCodec name="OMX.google.g711.mlaw.decoder" type="audio/g711-mlaw" />
+        <MediaCodec name="OMX.google.vorbis.decoder" type="audio/vorbis" />
+
+        <MediaCodec name="OMX.google.mpeg4.decoder" type="video/mp4v-es" />
+        <MediaCodec name="OMX.google.h263.decoder" type="video/3gpp" />
+        <MediaCodec name="OMX.google.h264.decoder" type="video/avc" />
+        <MediaCodec name="OMX.google.vpx.decoder" type="video/x-vnd.on2.vp8" />
+    </Decoders>
+
+    <Encoders>
+        <MediaCodec name="OMX.google.aac.encoder" type="audio/mp4a-latm" />
+        <MediaCodec name="OMX.google.amrnb.encoder" type="audio/3gpp" />
+        <MediaCodec name="OMX.google.amrwb.encoder" type="audio/amr-wb" />
+        <MediaCodec name="OMX.google.h263.encoder" type="video/3gpp" />
+        <MediaCodec name="OMX.google.h264.encoder" type="video/avc" />
+        <MediaCodec name="OMX.google.mpeg4.encoder" type="video/mp4v-es" />
+        <MediaCodec name="OMX.google.flac.encoder" type="audio/flac" />
+    </Encoders>
+</MediaCodecs>
diff --git a/tools/emulator/system/gps/gps_qemu.c b/tools/emulator/system/gps/gps_qemu.c
index a4699d3..eebe8d6 100644
--- a/tools/emulator/system/gps/gps_qemu.c
+++ b/tools/emulator/system/gps/gps_qemu.c
@@ -42,7 +42,7 @@
 #define  GPS_DEBUG  0
 
 #if GPS_DEBUG
-#  define  D(...)   LOGD(__VA_ARGS__)
+#  define  D(...)   ALOGD(__VA_ARGS__)
 #else
 #  define  D(...)   ((void)0)
 #endif
@@ -686,13 +686,13 @@
         nevents = epoll_wait( epoll_fd, events, 2, -1 );
         if (nevents < 0) {
             if (errno != EINTR)
-                LOGE("epoll_wait() unexpected error: %s", strerror(errno));
+                ALOGE("epoll_wait() unexpected error: %s", strerror(errno));
             continue;
         }
         D("gps thread received %d events", nevents);
         for (ne = 0; ne < nevents; ne++) {
             if ((events[ne].events & (EPOLLERR|EPOLLHUP)) != 0) {
-                LOGE("EPOLLERR or EPOLLHUP after epoll_wait() !?");
+                ALOGE("EPOLLERR or EPOLLHUP after epoll_wait() !?");
                 return;
             }
             if ((events[ne].events & EPOLLIN) != 0) {
@@ -738,7 +738,7 @@
                             if (errno == EINTR)
                                 continue;
                             if (errno != EWOULDBLOCK)
-                                LOGE("error while reading from gps daemon socket: %s:", strerror(errno));
+                                ALOGE("error while reading from gps daemon socket: %s:", strerror(errno));
                             break;
                         }
                         D("received %d bytes: %.*s", ret, ret, buff);
@@ -749,7 +749,7 @@
                 }
                 else
                 {
-                    LOGE("epoll_wait() returned unkown fd %d ?", fd);
+                    ALOGE("epoll_wait() returned unkown fd %d ?", fd);
                 }
             }
         }
@@ -775,14 +775,14 @@
     D("gps emulation will read from '%s' qemud channel", QEMU_CHANNEL_NAME );
 
     if ( socketpair( AF_LOCAL, SOCK_STREAM, 0, state->control ) < 0 ) {
-        LOGE("could not create thread control socket pair: %s", strerror(errno));
+        ALOGE("could not create thread control socket pair: %s", strerror(errno));
         goto Fail;
     }
 
     state->thread = callbacks->create_thread_cb( "gps_state_thread", gps_state_thread, state );
 
     if ( !state->thread ) {
-        LOGE("could not create gps thread: %s", strerror(errno));
+        ALOGE("could not create gps thread: %s", strerror(errno));
         goto Fail;
     }
 
@@ -930,7 +930,7 @@
     .open = open_gps
 };
 
-const struct hw_module_t HAL_MODULE_INFO_SYM = {
+struct hw_module_t HAL_MODULE_INFO_SYM = {
     .tag = HARDWARE_MODULE_TAG,
     .version_major = 1,
     .version_minor = 0,
diff --git a/tools/emulator/system/lights/lights_qemu.c b/tools/emulator/system/lights/lights_qemu.c
index d6576a0..94fe8cc 100644
--- a/tools/emulator/system/lights/lights_qemu.c
+++ b/tools/emulator/system/lights/lights_qemu.c
@@ -44,12 +44,12 @@
 /* Set to 1 to enable debug messages to the log */
 #define DEBUG 0
 #if DEBUG
-# define D(...) LOGD(__VA_ARGS__)
+# define D(...) ALOGD(__VA_ARGS__)
 #else
 # define D(...) do{}while(0)
 #endif
 
-#define  E(...)  LOGE(__VA_ARGS__)
+#define  E(...)  ALOGE(__VA_ARGS__)
 
 /* Get brightness(0~255) from state. */
 static int
@@ -202,7 +202,7 @@
 /*
  * The emulator lights Module
  */
-const struct hw_module_t HAL_MODULE_INFO_SYM = {
+struct hw_module_t HAL_MODULE_INFO_SYM = {
     .tag = HARDWARE_MODULE_TAG,
     .version_major = 1,
     .version_minor = 0,
diff --git a/tools/emulator/system/qemu-props/qemu-props.c b/tools/emulator/system/qemu-props/qemu-props.c
index 3f086a1..56d510f 100644
--- a/tools/emulator/system/qemu-props/qemu-props.c
+++ b/tools/emulator/system/qemu-props/qemu-props.c
@@ -28,7 +28,7 @@
 
 #if DEBUG
 #  include <cutils/log.h>
-#  define  DD(...)    LOGI(__VA_ARGS__)
+#  define  DD(...)    ALOGI(__VA_ARGS__)
 #else
 #  define  DD(...)    ((void)0)
 #endif
diff --git a/tools/emulator/system/qemud/qemud.c b/tools/emulator/system/qemud/qemud.c
index dc04de8..e836376 100644
--- a/tools/emulator/system/qemud/qemud.c
+++ b/tools/emulator/system/qemud/qemud.c
@@ -87,7 +87,7 @@
 #if DEBUG
 #  define LOG_TAG  "qemud"
 #  include <cutils/log.h>
-#  define  D(...)   LOGD(__VA_ARGS__)
+#  define  D(...)   ALOGD(__VA_ARGS__)
 #else
 #  define  D(...)  ((void)0)
 #  define  T(...)  ((void)0)
diff --git a/tools/emulator/system/sensors/sensors_qemu.c b/tools/emulator/system/sensors/sensors_qemu.c
index 9a776c7..d2c5aa5 100644
--- a/tools/emulator/system/sensors/sensors_qemu.c
+++ b/tools/emulator/system/sensors/sensors_qemu.c
@@ -39,12 +39,12 @@
 #include <hardware/sensors.h>
 
 #if 0
-#define  D(...)  LOGD(__VA_ARGS__)
+#define  D(...)  ALOGD(__VA_ARGS__)
 #else
 #define  D(...)  ((void)0)
 #endif
 
-#define  E(...)  LOGE(__VA_ARGS__)
+#define  E(...)  ALOGE(__VA_ARGS__)
 
 #include <hardware/qemud.h>
 
@@ -206,7 +206,7 @@
 }
 
 static int
-control__close(struct hw_device_t *dev) 
+control__close(struct hw_device_t *dev)
 {
     SensorPoll*  ctl = (void*)dev;
     close(ctl->fd);
@@ -281,7 +281,7 @@
             return i;
         }
     }
-    LOGE("No sensor to return!!! pendingSensors=%08x", data->pendingSensors);
+    ALOGE("No sensor to return!!! pendingSensors=%08x", data->pendingSensors);
     // we may end-up in a busy loop, slow things down, just in case.
     usleep(100000);
     return -EINVAL;
@@ -350,7 +350,7 @@
         }
 
         /* "temperature:<celsius>" */
-        if (sscanf(buff, "temperature:%g", params+0) == 2) {
+        if (sscanf(buff, "temperature:%g", params+0) == 1) {
             new_sensors |= SENSORS_TEMPERATURE;
             data->sensors[ID_TEMPERATURE].temperature = params[0];
             continue;
@@ -397,12 +397,12 @@
 }
 
 static int
-data__close(struct hw_device_t *dev) 
+data__close(struct hw_device_t *dev)
 {
     SensorPoll* data = (SensorPoll*)dev;
     if (data) {
         if (data->events_fd >= 0) {
-            //LOGD("(device close) about to close fd=%d", data->events_fd);
+            //ALOGD("(device close) about to close fd=%d", data->events_fd);
             close(data->events_fd);
         }
         free(data);
@@ -545,7 +545,7 @@
 static struct sensor_t  sSensorList[MAX_NUM_SENSORS];
 
 static int sensors__get_sensors_list(struct sensors_module_t* module,
-        struct sensor_t const** list) 
+        struct sensor_t const** list)
 {
     int  fd = qemud_channel_open(SENSORS_SERVICE_NAME);
     char buffer[12];
@@ -623,7 +623,7 @@
     .open = open_sensors
 };
 
-const struct sensors_module_t HAL_MODULE_INFO_SYM = {
+struct sensors_module_t HAL_MODULE_INFO_SYM = {
     .common = {
         .tag = HARDWARE_MODULE_TAG,
         .version_major = 1,
diff --git a/tools/etc1tool/Android.mk b/tools/etc1tool/Android.mk
index a66af25..c51d47c 100644
--- a/tools/etc1tool/Android.mk
+++ b/tools/etc1tool/Android.mk
@@ -17,8 +17,6 @@
 #LOCAL_WHOLE_STATIC_LIBRARIES := 
 LOCAL_STATIC_LIBRARIES := \
 	libhost \
-	libutils \
-	libcutils \
 	libexpat \
 	libpng \
 	libETC1
diff --git a/tools/findunused/findunusedresources b/tools/findunused/findunusedresources
index 84c0f82..6db99d5 100755
--- a/tools/findunused/findunusedresources
+++ b/tools/findunused/findunusedresources
@@ -35,6 +35,7 @@
     if [ -d $app/res ]
     then
         appname=$(basename $app)
+        iappname=$(grep LOCAL_PACKAGE_NAME $app/Android.mk | sed 's/.*:= *//')
         resources=
         for res in $(echo $app/res/* $(find $ANDROID_BUILD_TOP/vendor -type d -wholename $ANDROID_BUILD_TOP/vendor/*/$appname/res | grep overlay))
         do
@@ -51,7 +52,7 @@
         fi
 
         # find the R.java file that contains all the generated resource identifiers
-        rDotJava=$(find $ANDROID_BUILD_TOP/out/target/common/obj/APPS/${appname}_intermediates/ -name R.java)
+        rDotJava=$(find $ANDROID_BUILD_TOP/out/target/common/obj/APPS/${iappname}_intermediates/ -name R.java)
 
         # Simplistically process the content of the file to get the names of all the constants,
         # and try to find a reference to each constant.
diff --git a/tools/glesv2debugger/.classpath b/tools/glesv2debugger/.classpath
deleted file mode 100755
index 4ba3585..0000000
--- a/tools/glesv2debugger/.classpath
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="lib" path="lib/sdklib.jar"/>
-	<classpathentry kind="lib" path="lib/liblzf.jar"/>
-	<classpathentry kind="lib" path="lib/host-libprotobuf-java-2.3.0-lite.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" path="test"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/tools/glesv2debugger/.gitignore b/tools/glesv2debugger/.gitignore
deleted file mode 100644
index 574bfc7..0000000
--- a/tools/glesv2debugger/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-lib/*.jar
-bin/*
-.settings/*
-
diff --git a/tools/glesv2debugger/.project b/tools/glesv2debugger/.project
deleted file mode 100755
index 0c974ca..0000000
--- a/tools/glesv2debugger/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>GLESv2DebuggerClient</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/tools/glesv2debugger/META-INF/MANIFEST.MF b/tools/glesv2debugger/META-INF/MANIFEST.MF
deleted file mode 100644
index cf42bdb..0000000
--- a/tools/glesv2debugger/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: GLESv2DebuggerClient
-Bundle-SymbolicName: GLESv2DebuggerClient; singleton:=true
-Bundle-Version: 1.0.0.qualifier
-Bundle-Activator: com.android.glesv2debugger.Activator
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.junit
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Bundle-ClassPath: lib/host-libprotobuf-java-2.3.0-lite.jar,
- lib/liblzf.jar,
- lib/sdklib.jar,
- .
diff --git a/tools/glesv2debugger/README.android b/tools/glesv2debugger/README.android
deleted file mode 100644
index ae95463..0000000
--- a/tools/glesv2debugger/README.android
+++ /dev/null
@@ -1,20 +0,0 @@
-The following is taken from slide 3 & 4 of https://docs.google.com/a/google.com/present/edit?id=0AcZLV3icFYi0ZGZxa3NqZndfMGRqa2tiOXB4&authkey=CMfb8ukI&hl=en
-The spec doc is at https://docs.google.com/a/google.com/document/d/1dsASXCF9Suq8KOGcxwB2mAwgdRlrFj4QhMxkfaRJlA0/edit?hl=en&authkey=CPj4tKkO#
-
-
-Building and Running
-
-Debugger server is linked into EGL, code is in framework/base/opengl/libs/GLES2_dbg and already included in latest master builds, no action needed.
-Use development/tools/glesv2debugger/setup.sh to build and copy the jars: libprotobuf-java-2.3.0-lite, liblzf, sdklib into development/tools/glesv2debugger/lib
-Install Eclipse SDK for Eclipse: Eclipse->Help->Install New Software. Select "All Available Sites" in the "Work with:" drop down, then find "Eclipse SDK". (If Eclipse reports dependency conflicts, try install updates first)
-Debugger client is an Eclipse plug-in, code is at development/tools/glesv2debugger, built in Eclipse
-Optional: build glsl_compiler and copy to plug-in working directory; this is used for shader syntax check
-
-
-"Attaching" to a Process
-
-adb shell setprop debug.egl.debug_proc <process name> before running process. ie: com.example.android.apis
-EGL checks /proc/<proc_id>/cmdline for match during init and sets debug functions in eglMakeCurrent
-EGL will bind to socket and wait for incoming connection, so need to adb forward tcp:5039 tcp:5039. Port can be overridden by adb shell setprop debug.egl.debug_port <port>
-If create socket failed, EGL will try to open /data/local/tmp/dump.gles2dbg for write, and exit when 8MB is written. The relevant properties are ...debug_forceUseFile, ...debug_maxFileSize, and ...debug_filePath
-Now manually start the process on device; on host, open development/tools/glesv2debugger/.project and run/debug as Eclipse application, then Window->Show View->Other->Debug->OpenGL ES 2.0 Debugger, then Connect or Open File
diff --git a/tools/glesv2debugger/build.properties b/tools/glesv2debugger/build.properties
deleted file mode 100644
index 39d82d2..0000000
--- a/tools/glesv2debugger/build.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-source.. = src/,\

-           test/

-output.. = bin/

-bin.includes = plugin.xml,\

-               META-INF/,\

-               .,\

-               icons/,\
-               contexts.xml,\
-               lib/host-libprotobuf-java-2.3.0-lite.jar,\
-               lib/liblzf.jar,\
-               lib/sdklib.jar
diff --git a/tools/glesv2debugger/contexts.xml b/tools/glesv2debugger/contexts.xml
deleted file mode 100644
index 02e26e4..0000000
--- a/tools/glesv2debugger/contexts.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<contexts>
-	<context id="viewer" title="Sample View">
-		<description>This is the context help for the sample view with a table viewer. It was generated by a PDE template.</description>
-		<topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">
-			<enablement>
-				<with variable="platform">
-	            	<test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>
-	     		</with>
-			</enablement>
-		</topic>
-	</context>
-</contexts>
diff --git a/tools/glesv2debugger/generate_GLEnum_java.py b/tools/glesv2debugger/generate_GLEnum_java.py
deleted file mode 100755
index cf543c8..0000000
--- a/tools/glesv2debugger/generate_GLEnum_java.py
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-#
-# Copyright 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.
-#
-
-if __name__ == "__main__":
-    externs = []
-    lines = open("../../../frameworks/base/opengl/libs/enums.in").readlines()
-    output = open("src/com/android/glesv2debugger/GLEnum.java", "w")
-    i = 0
-    output.write(
-"""/*
- ** Copyright 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.
- */
-
-// auto generated by generate_GLEnum_java.py"
-
-package com.android.glesv2debugger;
-
-public enum GLEnum {
-""")
-    
-    index = 0
-    for line in lines:
-        value = line[line.find("(") + 1: line.find(",")]
-        name = line[line.find(",") + 1: line.find(")")]    
-        output.write("    %s(%s),\n" % (name, value))
-
-    output.write("""    ;
-
-    public final int value;
-    GLEnum(final int value) {
-        this.value = value;
-    }
-
-    private static final java.util.HashMap<Integer, GLEnum> reverseMap = new java.util.HashMap<Integer, GLEnum>();
-    static {
-        for (GLEnum e : GLEnum.values())
-        reverseMap.put(e.value, e);
-    }
-
-    public static GLEnum valueOf(final int value) {
-        return reverseMap.get(value);
-    }
-}""")
-
-
diff --git a/tools/glesv2debugger/generate_MessageFormatter_java.py b/tools/glesv2debugger/generate_MessageFormatter_java.py
deleted file mode 100755
index dfbf2ea..0000000
--- a/tools/glesv2debugger/generate_MessageFormatter_java.py
+++ /dev/null
@@ -1,281 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-#
-# Copyright 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.
-#
-
-import os
-import sys
-
-def RemoveAnnotation(line):
-    if line.find(":") >= 0:
-        annotation = line[line.find(":"): line.find(" ", line.find(":"))]
-        return line.replace(annotation, "*")
-    else:
-        return line
-        
-if __name__ == "__main__":
-    externs = []
-    lines = open("../../../frameworks/base/opengl/libs/GLES2_dbg/gl2_api_annotated.in").readlines()
-    output = open("src/com/android/glesv2debugger/MessageFormatter.java", "w")
-    
-    i = 0
-    output.write(
-"""/*
- ** Copyright 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.
- */
-
-// auto generated by generate_MessageFormatter_java.py"
-
-package com.android.glesv2debugger;
-
-import java.nio.ByteBuffer;
-
-public class MessageFormatter {
-
-    static String formatFloats(int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            ret += Float.intBitsToFloat(data.getInt());
-            if (i < count - 1)
-                ret += ", ";
-        }
-        return ret + "}";
-    }
-
-    static String formatInts(int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            ret += data.getInt();
-            if (i < count - 1)
-                ret += ", ";
-        }
-        return ret + "}";
-    }
-
-    static String formatUInts(int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            long bits = data.getInt() & 0xffffffff;
-            ret += bits;
-            if (i < count - 1)
-                ret += ", ";
-        }
-        return ret + "}";
-    }
-
-    static String formatMatrix(int columns, int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            ret += Float.intBitsToFloat(data.getInt());
-            if (i < count - 1)
-                ret += ", ";
-            if (i % columns == columns - 1)
-                ret += "\\n                                             ";
-        }
-        return ret + "}";
-    }
-
-    public static String format(final DebuggerMessage.Message msg,
-                                final boolean code) {
-        String str;
-        switch (msg.getFunction()) {
-""")
-    #in source code these turn into program_%d etc.
-    nameReplaces = ["program", "shader", "texture", "buffer", "framebuffer", "renderbuffer"]
-    for line in lines:
-        if line.find("API_ENTRY(") >= 0: # a function prototype
-            returnType = line[0: line.find(" API_ENTRY(")].replace("const ", "")
-            functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
-            parameterList = line[line.find(")(") + 2: line.find(") {")]
-
-            parameters = parameterList.split(',')
-            paramIndex = 0
-
-            formatString = "%s"
-            formatArgs = ""
-            if returnType != "void":
-                if returnType == "GLenum":
-                    formatArgs += '\
-                    (code ? "%s" : GLEnum.valueOf(msg.getRet()))\n' % (functionName)
-                elif returnType.find("*") >= 0:
-                    formatArgs += '\
-                    (code ? "%s" : "0x" + Integer.toHexString(msg.getRet()))\n' % (functionName)
-                else:
-                    formatArgs += '\
-                    (code ? "%s" : msg.getRet())\n' % (functionName)
-            else:
-                formatArgs += '\
-                    (code ? "%s" : "void")\n' % (functionName)
-
-            formatString += "("
-
-            if parameterList == "void":
-                parameters = []
-            inout = ""
-
-            paramNames = []
-
-            for parameter in parameters:
-                parameter = parameter.replace("const","")
-                parameter = parameter.strip()
-                paramType = parameter.split(' ')[0]
-                paramName = parameter.split(' ')[1]
-                annotation = ""
-
-                formatString += "%s%s"
-                formatArgs += '\
-                    , (code ? "/*%s*/ " : "%s=")\n' % (paramName, paramName)
-                if parameter.find(":") >= 0:
-                    assert inout == "" # only one parameter should be annotated
-                    inout = paramType.split(":")[2]
-                    annotation = paramType.split(":")[1]
-                    paramType = paramType.split(":")[0]
-                    count = 1
-                    countArg = ""
-                    if annotation.find("*") >= 0: # [1,n] * param
-                        count = int(annotation.split("*")[0])
-                        countArg = annotation.split("*")[1]
-                        assert countArg in paramNames
-                    elif annotation in paramNames:
-                        count = 1
-                        countArg = annotation
-                    elif annotation == "GLstring":
-                        annotation = annotation
-                    else:
-                        count = int(annotation)
-                    dataFormatter = ""
-                    if paramType == "GLfloat":
-                        dataFormatter = "formatFloats"
-                    elif paramType == "GLint":
-                        dataFormatter = "formatInts"
-                    elif paramType == "GLuint":
-                        dataFormatter = "formatUInts"
-                    elif annotation == "GLstring":
-                        assert paramType == "GLchar"
-                    elif paramType.find("void") >= 0:
-                        assert 1
-                    else:
-                        assert 0
-                    if functionName.find("Matrix") >= 0:
-                        columns = int(functionName[functionName.find("fv") - 1: functionName.find("fv")])
-                        assert columns * columns == count
-                        assert countArg != ""
-                        assert paramType == "GLfloat"
-                        formatArgs += '\
-                    , (code ? "(GLfloat [])" : "") + formatMatrix(%d, %d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())' % (
-                        columns, count, paramNames.index(countArg))
-                    elif annotation == "GLstring":
-                        formatArgs += '\
-                    , (code ? "\\"" : "") + msg.getData().toStringUtf8() + (code ? "\\"" : "")'
-                    elif paramType.find("void") >= 0:
-                        formatArgs += '\
-                    , (code ? "arg%d" : "0x" + Integer.toHexString(msg.getArg%d()))' % (paramIndex, paramIndex)
-                    elif countArg == "":
-                        formatArgs += '\
-                    , (code ? "(%s [])" : "") + %s(%d, msg.getData().asReadOnlyByteBuffer())' % (
-                        paramType, dataFormatter, count)
-                    else:
-                        formatArgs += '\
-                    , (code ? "(%s [])" : "") +  %s(%d * msg.getArg%d(), msg.getData().asReadOnlyByteBuffer())' % (
-                        paramType, dataFormatter, count, paramNames.index(countArg))
-                else:
-                    if paramType == "GLfloat" or paramType == "GLclampf":
-                        formatArgs += "\
-                    , Float.intBitsToFloat(msg.getArg%d())" % (paramIndex)
-                    elif paramType == "GLenum": 
-                        formatArgs += "\
-                    , GLEnum.valueOf(msg.getArg%d())" % (paramIndex)
-                    elif paramType.find("*") >= 0:
-                        formatArgs += '\
-                    , (code ? "arg%d" : "0x" + Integer.toHexString(msg.getArg%d()))' % (paramIndex, paramIndex)
-                    elif paramName in nameReplaces:
-                        formatArgs += '\
-                    , (code ? "%s_" : "") + msg.getArg%d()' % (paramName, paramIndex)
-                    else:
-                        formatArgs += "\
-                    , msg.getArg%d()" % (paramIndex)
-                if paramIndex < len(parameters) - 1:
-                    formatString += ", "
-                    formatArgs += '\n'
-                paramNames.append(paramName)
-                paramIndex += 1  
-
-                
-            formatString += ")"
-             
-            output.write("            case %s:\n" % (functionName))
-            if line.find("*") >= 0 and (line.find("*") < line.find(":") or line.find("*") > line.rfind(":")):
-                sys.stderr.write(line)
-                output.write("                // FIXME: this function uses pointers, debugger may send data in msg.data\n")
-            output.write('\
-                str = String.format("%s",\n%s);\n\
-                break;\n' % (formatString, formatArgs))
-
-
-    output.write("""            default:
-                str = msg.toString();
-        }
-        return str;
-    }
-}""")
-
-'''    print """/*
-package GLESv2Debugger;
-
-public class MessageFormatterCustom {
-
-    public static String format(final DebuggerMessage.Message msg) {
-        String str;
-        switch (msg.getFunction()) {"""
-
-    for extern in externs:
-        print "        case %s" % (extern)
-        print "            // TODO:"
-
-print """        default:
-            str = msg.toString();
-        }
-        return str;
-    }
-}
-*/"""    '''
-        
-        
diff --git a/tools/glesv2debugger/generate_MessageParser_java.py b/tools/glesv2debugger/generate_MessageParser_java.py
deleted file mode 100755
index b6e8282..0000000
--- a/tools/glesv2debugger/generate_MessageParser_java.py
+++ /dev/null
@@ -1,304 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-#
-# Copyright 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.
-#
-
-import os
-import sys
-
-def RemoveAnnotation(line):
-    if line.find(":") >= 0:
-        annotation = line[line.find(":"): line.find(" ", line.find(":"))]
-        return line.replace(annotation, "*")
-    else:
-        return line
-
-if __name__ == "__main__":
-    externs = []
-    lines = open("../../../frameworks/base/opengl/libs/GLES2_dbg/gl2_api_annotated.in").readlines()
-    output = open("src/com/android/glesv2debugger/MessageParser.java", "w")
-
-    i = 0
-    output.write("""\
-/*
- ** Copyright 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.
- */
-
-// auto generated by generate_MessageParser_java.py,
-//  which also prints skeleton code for MessageParserEx.java
-
-package com.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.google.protobuf.ByteString;
-
-import java.nio.ByteBuffer;
-
-public abstract class MessageParser {
-
-    String args;
-
-    String[] getList()
-    {
-        String arg = args;
-        args = args.substring(args.lastIndexOf('}') + 1);
-        final int comma = args.indexOf(',');
-        if (comma >= 0)
-            args = args.substring(comma + 1).trim();
-        else
-            args = null;
-
-        final int comment = arg.indexOf('=');
-        if (comment >= 0)
-            arg = arg.substring(comment + 1);
-        arg = arg.trim();
-        assert arg.charAt(0) == '{';
-        arg = arg.substring(1, arg.lastIndexOf('}')).trim();
-        return arg.split("\\s*,\\s*");
-    }
-
-    ByteString parseFloats(int count) {
-        ByteBuffer buffer = ByteBuffer.allocate(count * 4);
-        buffer.order(SampleView.targetByteOrder);
-        String [] arg = getList();
-        for (int i = 0; i < count; i++)
-            buffer.putFloat(Float.parseFloat(arg[i].trim()));
-        buffer.rewind();
-        return ByteString.copyFrom(buffer);
-    }
-
-    ByteString parseInts(int count) {
-        ByteBuffer buffer = ByteBuffer.allocate(count * 4);
-        buffer.order(SampleView.targetByteOrder);
-        String [] arg = getList();
-        for (int i = 0; i < count; i++)
-            buffer.putInt(Integer.parseInt(arg[i].trim()));
-        buffer.rewind();
-        return ByteString.copyFrom(buffer);
-    }
-
-    ByteString parseUInts(int count) {
-        ByteBuffer buffer = ByteBuffer.allocate(count * 4);
-        buffer.order(SampleView.targetByteOrder);
-        String [] arg = getList();
-        for (int i = 0; i < count; i++)
-            buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff));
-        buffer.rewind();
-        return ByteString.copyFrom(buffer);
-    }
-
-    ByteString parseMatrix(int columns, int count) {
-        return parseFloats(columns * columns * count);
-    }
-
-    ByteString parseString() {
-        // TODO: escape sequence and proper string literal
-        String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"'));
-        args = args.substring(args.lastIndexOf('"'));
-        int comma = args.indexOf(',');
-        if (comma >= 0)
-            args = args.substring(comma + 1).trim();
-        else
-            args = null;
-        return ByteString.copyFromUtf8(arg);
-    }
-
-    String getArgument()
-    {
-        final int comma = args.indexOf(',');
-        String arg = null;
-        if (comma >= 0)
-        {
-            arg = args.substring(0, comma);
-            args = args.substring(comma + 1);
-        }
-        else
-        {
-            arg = args;
-            args = null;
-        }
-        final int comment = arg.indexOf('=');
-        if (comment >= 0)
-            arg = arg.substring(comment + 1);
-        return arg.trim();
-    }
-
-    int parseArgument()
-    {
-        String arg = getArgument();
-        if (arg.startsWith("GL_"))
-            return GLEnum.valueOf(arg).value;
-        else if (arg.toLowerCase().startsWith("0x"))
-            return Integer.parseInt(arg.substring(2), 16);
-        else
-            return Integer.parseInt(arg);
-    }
-
-    int parseFloat()
-    {
-        String arg = getArgument();
-        return Float.floatToRawIntBits(Float.parseFloat(arg));
-    }
-
-    public void parse(final Message.Builder builder, String string) {
-        int lparen = string.indexOf("("), rparen = string.lastIndexOf(")");
-        String s = string.substring(0, lparen).trim();
-        args = string.substring(lparen + 1, rparen);
-        String[] t = s.split(" ");
-        Function function = Function.valueOf(t[t.length - 1]);
-        builder.setFunction(function);
-        switch (function) {
-""")
-
-    abstractParsers = ""
-
-    for line in lines:
-        if line.find("API_ENTRY(") >= 0: # a function prototype
-            returnType = line[0: line.find(" API_ENTRY(")].replace("const ", "")
-            functionName = line[line.find("(") + 1: line.find(")")] #extract GL function name
-            parameterList = line[line.find(")(") + 2: line.find(") {")]
-
-            parameters = parameterList.split(',')
-            paramIndex = 0
-
-            #if returnType != "void":
-            #else:
-
-            if parameterList == "void":
-                parameters = []
-            inout = ""
-
-            paramNames = []
-            abstract = False
-            argumentSetters = ""
-            output.write("\
-            case %s:\n" % (functionName))
-
-            for parameter in parameters:
-                parameter = parameter.replace("const","")
-                parameter = parameter.strip()
-                paramType = parameter.split(' ')[0]
-                paramName = parameter.split(' ')[1]
-                annotation = ""
-
-                argumentParser = ""
-
-                if parameter.find(":") >= 0:
-                    dataSetter = ""
-                    assert inout == "" # only one parameter should be annotated
-                    inout = paramType.split(":")[2]
-                    annotation = paramType.split(":")[1]
-                    paramType = paramType.split(":")[0]
-                    count = 1
-                    countArg = ""
-                    if annotation.find("*") >= 0: # [1,n] * param
-                        count = int(annotation.split("*")[0])
-                        countArg = annotation.split("*")[1]
-                        assert countArg in paramNames
-                    elif annotation in paramNames:
-                        count = 1
-                        countArg = annotation
-                    elif annotation == "GLstring":
-                        annotation = annotation
-                    else:
-                        count = int(annotation)
-
-                    if paramType == "GLfloat":
-                        argumentParser = "parseFloats"
-                    elif paramType == "GLint":
-                        argumentParser = "parseInts"
-                    elif paramType == "GLuint":
-                        argumentParser = "parseUInts"
-                    elif annotation == "GLstring":
-                        assert paramType == 'GLchar'
-                    elif paramType.find("void") >= 0:
-                        assert 1
-                    else:
-                        assert 0
-
-                    if functionName.find('Matrix') >= 0:
-                        columns = int(functionName[functionName.find("fv") - 1: functionName.find("fv")])
-                        assert columns * columns == count
-                        assert countArg != ""
-                        assert paramType == "GLfloat"
-                        dataSetter = "builder.setData(parseMatrix(%d, builder.getArg%d()));" % (
-                            columns, paramNames.index(countArg))
-                    elif annotation == "GLstring":
-                        dataSetter = "builder.setData(parseString());"
-                    elif paramType.find("void") >= 0:
-                        dataSetter = "// TODO"
-                        abstract = True
-                    elif countArg == "":
-                        dataSetter = "builder.setData(%s(%d));" % (argumentParser, count)
-                    else:
-                        dataSetter = "builder.setData(%s(%d * builder.getArg%d()));" % (
-                            argumentParser, count, paramNames.index(countArg))
-                    argumentSetters += "\
-                %s // %s %s\n" % (dataSetter, paramType, paramName)
-                else:
-                    if paramType == "GLfloat" or paramType == "GLclampf":
-                        argumentSetters += "\
-                builder.setArg%d(parseFloat()); // %s %s\n" % (
-                    paramIndex, paramType, paramName)
-                    elif paramType.find("*") >= 0:
-                        argumentSetters += "\
-                // TODO: %s %s\n" % (paramType, paramName)
-                        abstract = True
-                    else:
-                        argumentSetters += "\
-                builder.setArg%d(parseArgument()); // %s %s\n" % (
-                    paramIndex, paramType, paramName)
-                paramNames.append(paramName)
-                paramIndex += 1
-
-            if not abstract:
-                output.write("%s" % argumentSetters)
-            else:
-                output.write("\
-                parse_%s(builder);\n" % functionName)
-                abstractParsers += "\
-    abstract void parse_%s(Message.Builder builder);\n" % functionName
-                print """\
-    @Override
-    void parse_%s(Message.Builder builder) {
-%s    }
-""" % (functionName, argumentSetters) # print skeleton code for MessageParserEx
-
-            output.write("\
-                break;\n")
-    output.write("""\
-            default:
-                assert false;
-        }
-    }
-""")
-    output.write(abstractParsers)
-    output.write("\
-}""")
diff --git a/tools/glesv2debugger/icons/sample.gif b/tools/glesv2debugger/icons/sample.gif
deleted file mode 100644
index 34fb3c9..0000000
--- a/tools/glesv2debugger/icons/sample.gif
+++ /dev/null
Binary files differ
diff --git a/tools/glesv2debugger/plugin.xml b/tools/glesv2debugger/plugin.xml
deleted file mode 100644
index f1512a5..0000000
--- a/tools/glesv2debugger/plugin.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<?eclipse version="3.4"?>

-<plugin>

-

-   <extension

-         point="org.eclipse.ui.views">

-      <view

-            name="OpenGL ES 2.0 Debugger"

-            icon="icons/sample.gif"

-            category="org.eclipse.debug.ui"

-            class="com.android.glesv2debugger.SampleView"

-            id="glesv2debuggerclient.views.SampleView">

-      </view>

-   </extension>

-   <extension

-         point="org.eclipse.ui.perspectiveExtensions">

-      <perspectiveExtension

-            targetID="org.eclipse.jdt.ui.JavaPerspective">

-         <view

-               ratio="0.5"

-               relative="org.eclipse.ui.views.TaskList"

-               relationship="right"

-               id="glesv2debuggerclient.views.SampleView">

-         </view>

-      </perspectiveExtension>

-   </extension>

-   <extension

-         point="org.eclipse.help.contexts">

-      <contexts

-            file="contexts.xml">

-      </contexts>

-   </extension>

-

-</plugin>

diff --git a/tools/glesv2debugger/setup.sh b/tools/glesv2debugger/setup.sh
deleted file mode 100755
index 839019d..0000000
--- a/tools/glesv2debugger/setup.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-source ../../../build/envsetup.sh
-pushd ../../../
-
-# need lunch before building jars
-if [ -z "$TARGET_PRODUCT" ]; then
-    lunch
-fi
-
-pushd external/liblzf/
-mm
-popd
-
-pushd external/protobuf/
-mm
-popd
-
-pushd sdk/sdkmanager/libs/sdklib
-mm
-popd
-
-# glsl_compiler is optional
-# make glsl_compiler -j3
-
-popd
-
-mkdir -p lib
-cp "$ANDROID_HOST_OUT/framework/host-libprotobuf-java-2.3.0-lite.jar" lib/
-cp "$ANDROID_HOST_OUT/framework/liblzf.jar" lib/
-cp "$ANDROID_HOST_OUT/framework/sdklib.jar" lib/
-
-# optional; usually for linux
-#cp "$ANDROID_HOST_OUT/bin/glsl_compiler" ~/
-
-# optional; usually for mac, need to replace eclipse.app with actual path
-#cp "$ANDROID_HOST_OUT/bin/glsl_compiler" eclipse.app/Contents/MacOS
diff --git a/tools/glesv2debugger/src/META-INF/MANIFEST.MF b/tools/glesv2debugger/src/META-INF/MANIFEST.MF
deleted file mode 100644
index 212b27a..0000000
--- a/tools/glesv2debugger/src/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0

-Created-By: 1.6.0_22 (Sun Microsystems Inc.)

-

diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/Activator.java b/tools/glesv2debugger/src/com/android/glesv2debugger/Activator.java
deleted file mode 100644
index 6083c0f..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/Activator.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*

- ** Copyright 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.android.glesv2debugger;

-

-import org.eclipse.jface.resource.ImageDescriptor;

-import org.eclipse.ui.plugin.AbstractUIPlugin;

-import org.osgi.framework.BundleContext;

-

-/**

- * The activator class controls the plug-in life cycle

- */

-public class Activator extends AbstractUIPlugin {

-

-    // The plug-in ID

-    public static final String PLUGIN_ID = "GLESv2DebuggerClient"; //$NON-NLS-1$

-

-    // The shared instance

-    private static Activator plugin;

-

-    /**

-     * The constructor

-     */

-    public Activator() {

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see

-     * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext

-     * )

-     */

-    @Override

-    public void start(BundleContext context) throws Exception {

-        super.start(context);

-        plugin = this;

-    }

-

-    /*

-     * (non-Javadoc)

-     * @see

-     * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext

-     * )

-     */

-    @Override

-    public void stop(BundleContext context) throws Exception {

-        plugin = null;

-        super.stop(context);

-    }

-

-    /**

-     * Returns the shared instance

-     * 

-     * @return the shared instance

-     */

-    public static Activator getDefault() {

-        return plugin;

-    }

-

-    /**

-     * Returns an image descriptor for the image file at the given plug-in

-     * relative path

-     * 

-     * @param path the path

-     * @return the image descriptor

-     */

-    public static ImageDescriptor getImageDescriptor(String path) {

-        return imageDescriptorFromPlugin(PLUGIN_ID, path);

-    }

-}

diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/BreakpointOption.java b/tools/glesv2debugger/src/com/android/glesv2debugger/BreakpointOption.java
deleted file mode 100644
index e8405f9..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/BreakpointOption.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Prop;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.layout.RowLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Shell;
-
-import java.io.IOException;
-
-public class BreakpointOption extends ScrolledComposite implements SelectionListener,
-        ProcessMessage {
-
-    SampleView sampleView;
-    Button[] buttonsBreak = new Button[Function.values().length];
-    /** cache of buttonsBreak[Function.getNumber()].getSelection */
-    boolean[] breakpoints = new boolean[Function.values().length];
-
-    BreakpointOption(SampleView sampleView, Composite parent) {
-        super(parent, SWT.NO_BACKGROUND | SWT.V_SCROLL | SWT.H_SCROLL);
-        this.sampleView = sampleView;
-
-        Composite composite = new Composite(this, 0);
-        GridLayout layout = new GridLayout();
-        layout.numColumns = 4;
-        composite.setLayout(layout);
-        this.setLayout(new FillLayout());
-
-        for (int i = 0; i < Function.values().length; i++) {
-            Group group = new Group(composite, 0);
-            group.setLayout(new RowLayout());
-            group.setText(Function.values()[i].toString());
-            Button btn = new Button(group, SWT.CHECK);
-            btn.addSelectionListener(this);
-            btn.setText("Break");
-            btn.setSelection(false);
-            breakpoints[Function.values()[i].getNumber()] = btn.getSelection();
-            buttonsBreak[Function.values()[i].getNumber()] = btn;
-        }
-
-        Point size = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
-        composite.setSize(size);
-        this.setContent(composite);
-        this.setExpandHorizontal(true);
-        this.setExpandVertical(true);
-        this.setMinSize(size);
-        this.layout();
-    }
-
-    void setBreakpoint(final int contextId, final Function function, final boolean enabled) {
-        Message.Builder builder = Message.newBuilder();
-        builder.setContextId(contextId);
-        builder.setType(Type.Response);
-        builder.setExpectResponse(false);
-        builder.setFunction(Function.SETPROP);
-        builder.setProp(Prop.ExpectResponse);
-        builder.setArg0(function.getNumber());
-        builder.setArg1(enabled ? 1 : 0);
-        sampleView.messageQueue.addCommand(builder.build());
-        breakpoints[function.getNumber()] = enabled;
-    }
-
-    @Override
-    public void widgetSelected(SelectionEvent e) {
-        Button btn = (Button) e.widget;
-        Group group = (Group) btn.getParent();
-        int contextId = 0;
-        if (sampleView.current != null)
-            contextId = sampleView.current.contextId;
-        setBreakpoint(contextId, Function.valueOf(group.getText()), btn.getSelection());
-    }
-
-    @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-    }
-
-    private Function lastFunction = Function.NEG;
-
-    public boolean processMessage(final MessageQueue queue, final Message msg) throws IOException {
-        if (!breakpoints[msg.getFunction().getNumber()])
-            return false;
-        // use DefaultProcessMessage just to register the GL call
-        // but do not send response
-        final int contextId = msg.getContextId();
-        if (msg.getType() == Type.BeforeCall || msg.getType() == Type.AfterCall)
-            queue.defaultProcessMessage(msg, true, false);
-        final Message.Builder builder = Message.newBuilder();
-        builder.setContextId(contextId);
-        builder.setType(Type.Response);
-        builder.setExpectResponse(true);
-        final Shell shell = sampleView.getViewSite().getShell();
-        final boolean send[] = new boolean[1];
-        shell.getDisplay().syncExec(new Runnable() {
-            @Override
-            public void run() {
-                String call = MessageFormatter.format(msg, false);
-                call = call.substring(0, call.indexOf("(")) + ' ' +
-                        msg.getFunction() + call.substring(call.indexOf("("));
-                if (msg.hasData() && msg.getFunction() == Function.glShaderSource)
-                {
-                    int index = call.indexOf("string=") + 7;
-                    String ptr = call.substring(index, call.indexOf(',', index));
-                    call = call.replace(ptr, '"' + msg.getData().toStringUtf8() + '"');
-                }
-                if (msg.getType() == Type.AfterCall)
-                {
-                    call = "skip " + call;
-                    builder.setFunction(Function.SKIP);
-                }
-                else if (msg.getType() == Type.BeforeCall)
-                {
-                    call = "continue " + call;
-                    builder.setFunction(Function.CONTINUE);
-                }
-                else
-                {
-                    assert msg.getType() == Type.AfterGeneratedCall;
-                    assert msg.getFunction() == lastFunction;
-                    call = "skip " + call;
-                    builder.setFunction(Function.SKIP);
-                }
-                InputDialog inputDialog = new InputDialog(shell,
-                            msg.getFunction().toString() + " " + msg.getType().toString(),
-                        "(s)kip, (c)continue, (r)emove bp or glFunction(...)",
-                            call, null);
-                if (Window.OK == inputDialog.open())
-                {
-                    String s = inputDialog.getValue().substring(0, 1).toLowerCase();
-                    if (s.startsWith("s"))
-                    {
-                        builder.setFunction(Function.SKIP);
-                        // AfterCall is skipped, so push BeforeCall to complete
-                        if (queue.getPartialMessage(contextId) != null)
-                            queue.completePartialMessage(contextId);
-                    }
-                    else if (s.startsWith("c"))
-                        builder.setFunction(Function.CONTINUE);
-                    else if (s.startsWith("r"))
-                    {
-                        Button btn = buttonsBreak[msg.getFunction().getNumber()];
-                        btn.setSelection(false);
-                        setBreakpoint(msg.getContextId(), msg.getFunction(), false);
-                        builder.setExpectResponse(false);
-                    }
-                    else
-                    {
-                        MessageParserEx.instance.parse(builder, inputDialog.getValue());
-                        lastFunction = builder.getFunction();
-                        builder.setExpectResponse(true);
-                        // AfterCall is skipped, so push BeforeCall to complete
-                        if (queue.getPartialMessage(contextId) != null)
-                            queue.completePartialMessage(contextId);
-                    }
-                }
-                // else defaults to continue BeforeCall and skip AfterCall
-            }
-        });
-        queue.sendMessage(builder.build());
-        return true;
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/CodeGen.java b/tools/glesv2debugger/src/com/android/glesv2debugger/CodeGen.java
deleted file mode 100644
index 28f3a54..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/CodeGen.java
+++ /dev/null
@@ -1,1236 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.sdklib.util.SparseIntArray;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Shell;
-
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.lang.reflect.InvocationTargetException;
-import java.nio.ByteBuffer;
-
-public class CodeGen implements IRunnableWithProgress {
-    private FileWriter codeFile, makeFile, namesHeaderFile, namesSourceFile;
-    private PrintWriter code, make, namesHeader, namesSource;
-    private FileOutputStream dataOut;
-    private SparseIntArray bufferNames,
-            framebufferNames, programNames, textureNames, shaderNames, renderbufferNames;
-
-    /** return true if msg was a texture upload */
-    private boolean codeGenTextureUpload(final Message msg, final boolean replaceCopy) {
-        String s = null;
-        switch (msg.getFunction()) {
-            case glCompressedTexImage2D:
-                s = MessageFormatter.format(msg, true).replace("arg7", "texData");
-                break;
-            case glCompressedTexSubImage2D:
-            case glTexImage2D:
-            case glTexSubImage2D:
-                s = MessageFormatter.format(msg, true).replace("arg8", "texData");
-                break;
-            case glCopyTexImage2D:
-                if (!replaceCopy) {
-                    code.write(MessageFormatter.format(msg, true));
-                    code.write(";CHKERR;\n");
-                    return true;
-                }
-                assert msg.getArg2() == msg.getPixelFormat(); // TODO
-                s = "//" + MessageFormatter.format(msg, true) + "\n";
-                s += String.format("glTexImage2D(%s, %d, %s, %d, %d, %d, %s, %s, texData);CHKERR;",
-                        GLEnum.valueOf(msg.getArg0()), msg.getArg1(),
-                        GLEnum.valueOf(msg.getArg2()), msg.getArg5(), msg.getArg6(),
-                        msg.getArg7(), GLEnum.valueOf(msg.getPixelFormat()),
-                        GLEnum.valueOf(msg.getPixelType()));
-                break;
-            case glCopyTexSubImage2D:
-                if (!replaceCopy) {
-                    code.write(MessageFormatter.format(msg, true));
-                    code.write(";CHKERR;\n");
-                    return true;
-                }
-                // FIXME: check the texture format & type, and convert
-                s = "//" + MessageFormatter.format(msg, true) + "\n";
-                s += String.format(
-                        "glTexSubImage2D(%s, %d, %d, %d, %d, %d, %s, %s, texData);CHKERR;",
-                        GLEnum.valueOf(msg.getArg0()), msg.getArg1(), msg.getArg2(),
-                        msg.getArg3(), msg.getArg6(), msg.getArg7(),
-                        GLEnum.valueOf(msg.getPixelFormat()), GLEnum.valueOf(msg.getPixelType()));
-                break;
-            default:
-                return false;
-        }
-
-        if (msg.hasData()) {
-            final byte[] data = MessageProcessor.lzfDecompressChunks(msg.getData());
-            try {
-                code.write("{\n");
-                code.format("    void * texData = malloc(%d);CHKERR;\n", data.length);
-                code.format("    FILE * texFile = fopen(\"/sdcard/frame_data.bin\", \"rb\");CHKERR;\n");
-                code.format("    assert(texFile);CHKERR;\n");
-                code.format("    fseek(texFile, %d, SEEK_SET);CHKERR;\n", dataOut.getChannel()
-                        .position());
-                dataOut.write(data);
-                code.format("    fread(texData, %d, 1, texFile);CHKERR;\n", data.length);
-                code.format("    fclose(texFile);CHKERR;\n");
-                code.format("    " + s + ";\n");
-                code.format("    free(texData);CHKERR;\n");
-                code.format("}\n");
-            } catch (IOException e) {
-                e.printStackTrace();
-                assert false;
-            }
-        } else
-            code.write(s.replace("texData", "NULL") + ";\n");
-        return true;
-    }
-
-    private void codeGenServerState(final GLServerState serverState) {
-        code.write("// CodeGenServerState\n");
-        for (int i = 0; i < serverState.enableDisables.size(); i++) {
-            final GLEnum key = GLEnum.valueOf(serverState.enableDisables.keyAt(i));
-            if (serverState.enableDisables.valueAt(i) == 0)
-                code.format("glDisable(%s);CHKERR;\n", key);
-            else
-                code.format("glEnable(%s);CHKERR;\n", key);
-        }
-        for (int i = 0; i < serverState.lastSetter.size(); i++) {
-            final Function key = Function.valueOf(serverState.lastSetter.keyAt(i));
-            final Message msg = serverState.lastSetter.valueAt(i);
-            if (msg == null) {
-                code.format("// %s is default\n", key);
-                continue;
-            }
-            final String s = MessageFormatter.format(msg, true);
-            code.write(s);
-            code.write(";\n");
-        }
-        // TODO: stencil and integers
-    }
-
-    private void codeGenServerShader(final GLServerShader serverShader) {
-        code.write("// CodeGenServerShader\n");
-        for (int i = 0; i < serverShader.shaders.size(); i++) {
-            final int name = serverShader.shaders.keyAt(i);
-            final GLShader shader = serverShader.shaders.valueAt(i);
-            final String id = "shader_" + name;
-            if (shaderNames.indexOfKey(name) < 0) {
-                namesSource.format("GLuint %s = 0;\n", id);
-                namesHeader.format("extern GLuint %s;\n", id);
-            }
-            code.format("%s = glCreateShader(%s);CHKERR;\n", id, shader.type);
-            shaderNames.put(name, name);
-
-            if (shader.source != null) {
-                final String src = shader.source.replace("\r", "").replace("\n", "\\n\\\n")
-                        .replace("\"", "\\\"");
-                code.format("glShaderSource(%s, 1, (const GLchar *[]){\"%s\"}, NULL);CHKERR;\n",
-                                id, src);
-                code.format("glCompileShader(%s);CHKERR;\n", id);
-            }
-        }
-
-        for (int i = 0; i < serverShader.programs.size(); i++) {
-            final int name = serverShader.programs.keyAt(i);
-            final GLProgram program = serverShader.programs.valueAt(i);
-            final String id = "program_" + name;
-            if (programNames.indexOfKey(name) < 0) {
-                namesSource.format("GLuint %s = 0;\n", id);
-                namesHeader.format("extern GLuint %s;\n", id);
-            }
-            code.format("%s = glCreateProgram();CHKERR;\n", id);
-            programNames.put(name, name);
-            code.format("glAttachShader(%s, shader_%d);CHKERR;\n", id,
-                    program.vert);
-            code.format("glAttachShader(%s, shader_%d);CHKERR;\n", id,
-                    program.frag);
-            code.format("glLinkProgram(%s);CHKERR;\n", id);
-            if (serverShader.current == program)
-                code.format("glUseProgram(%s);CHKERR;\n", id);
-        }
-    }
-
-    private void codeGenServerTexture(final GLServerTexture serverTexture, final boolean replaceCopy) {
-        code.write("// CodeGenServerTexture\n");
-        for (int i = 0; i < serverTexture.textures.size(); i++) {
-            final int name = serverTexture.textures.keyAt(i);
-            final GLTexture tex = serverTexture.textures.valueAt(i);
-            final String id = "texture_" + name;
-            if (textureNames.indexOfKey(name) < 0) {
-                namesHeader.format("extern GLuint %s;\n", id);
-                namesSource.format("GLuint %s = 0;\n", id);
-            }
-            code.format("%s = 0;\n", id);
-            textureNames.put(name, name);
-
-            if (name == 0)
-                continue;
-            code.format("glGenTextures(1, &%s);CHKERR;\n", id);
-            String s = String.format("glBindTexture(%s, texture_%d);CHKERR;\n", tex.target,
-                    tex.name);
-            code.write(s);
-            for (final Message msg : tex.contentChanges) {
-                if (codeGenTextureUpload(msg, replaceCopy))
-                    continue;
-                switch (msg.getFunction()) {
-                    case glGenerateMipmap:
-                        s = MessageFormatter.format(msg, true);
-                        break;
-                    default:
-                        assert false;
-                }
-                code.write(s + ";\n");
-            }
-            code.format("glTexParameteriv(%s, GL_TEXTURE_WRAP_S, (GLint[]){%s});CHKERR;\n",
-                    tex.target, tex.wrapS);
-            code.format("glTexParameteriv(%s, GL_TEXTURE_WRAP_T, (GLint[]){%s});CHKERR;\n",
-                    tex.target, tex.wrapT);
-            code.format("glTexParameteriv(%s, GL_TEXTURE_MIN_FILTER, (GLint[]){%s});CHKERR;\n",
-                    tex.target, tex.min);
-            code.format("glTexParameteriv(%s, GL_TEXTURE_MAG_FILTER, (GLint[]){%s});CHKERR;\n",
-                    tex.target, tex.mag);
-        }
-        for (int i = 0; i < serverTexture.tmu2D.length; i++) {
-            code.format("glActiveTexture(%s);CHKERR;\n",
-                    GLEnum.valueOf(GLEnum.GL_TEXTURE0.value + i));
-            code.format("glBindTexture(GL_TEXTURE_2D, texture_%d);CHKERR;\n",
-                    serverTexture.tmu2D[i]);
-        }
-        for (int i = 0; i < serverTexture.tmuCube.length; i++) {
-            code.format("glActiveTexture(%s);CHKERR;\n",
-                    GLEnum.valueOf(GLEnum.GL_TEXTURE0.value + i));
-            code.format("glBindTexture(GL_TEXTURE_CUBE_MAP, texture_%d);CHKERR;\n",
-                    serverTexture.tmuCube[i]);
-        }
-        code.format("glActiveTexture(%s);CHKERR;\n", serverTexture.activeTexture);
-        if (serverTexture.tex2D == null)
-            code.format("glBindTexture(GL_TEXTURE_2D, 0);CHKERR;\n");
-        else
-            code.format("glBindTexture(GL_TEXTURE_2D, texture_%d);CHKERR;\n",
-                    serverTexture.tex2D.name);
-        if (serverTexture.texCube == null)
-            code.format("glBindTexture(GL_TEXTURE_CUBE_MAP, 0);CHKERR;\n");
-        else
-            code.format("glBindTexture(GL_TEXTURE_CUBE_MAP, texture_%d);CHKERR;\n",
-                    serverTexture.texCube.name);
-    }
-
-    private void codeGenBufferData(final ByteBuffer buffer, final String call) {
-        ByteBuffer bfr = buffer;
-        if (buffer.isReadOnly()) {
-            bfr = ByteBuffer.allocate(buffer.capacity());
-            bfr.put(buffer);
-        }
-        final byte[] data = bfr.array();
-        try {
-            code.write("{\n");
-            code.format("    void * bufferData = malloc(%d);\n", data.length);
-            code.format("    FILE * bufferFile = fopen(\"/sdcard/frame_data.bin\", \"rb\");\n");
-            code.format("    assert(bufferFile);\n");
-            code.format("    fseek(bufferFile, %d, SEEK_SET);\n", dataOut.getChannel()
-                    .position());
-            dataOut.write(data);
-            code.format("    fread(bufferData, %d, 1, bufferFile);\n", data.length);
-            code.format("    fclose(bufferFile);\n");
-            code.format("    " + call + ";CHKERR;\n");
-            code.format("    free(bufferData);\n");
-            code.format("}\n");
-        } catch (IOException e) {
-            e.printStackTrace();
-            assert false;
-        }
-    }
-
-    private void codeGenServerVertex(final GLServerVertex v) {
-        code.write("// CodeGenServerVertex\n");
-        for (int i = 0; i < v.buffers.size(); i++) {
-            final int name = v.buffers.keyAt(i);
-            final String id = "buffer_" + name;
-            final GLBuffer buffer = v.buffers.valueAt(i);
-            if (bufferNames.indexOfKey(name) < 0) {
-                namesHeader.format("extern GLuint %s;\n", id);
-                namesSource.format("GLuint %s = 0;\n", id);
-            }
-            code.format("%s = 0;\n", id);
-            bufferNames.put(name, name);
-            if (name == 0)
-                continue;
-            code.format("glGenBuffers(1, &%s);CHKERR;\n", id);
-            if (buffer.target != null) {
-                code.format("glBindBuffer(%s, %s);CHKERR;\n", buffer.target, id);
-                if (buffer.data != null) {
-                    String s = String.format("glBufferData(%s, %d, bufferData, %s)", buffer.target,
-                            buffer.data.capacity(), buffer.usage);
-                    codeGenBufferData(buffer.data, s);
-                }
-            }
-        }
-        // TODO: use MAX_VERTEX_ATTRIBS
-        for (int i = 0; i < v.defaultAttribs.length; i++)
-            code.format("glVertexAttrib4f(%d, %f, %f, %f, %f);CHKERR;\n", i,
-                    v.defaultAttribs[i][0],
-                    v.defaultAttribs[i][1], v.defaultAttribs[i][2], v.defaultAttribs[i][3]);
-        for (int i = 0; i < v.attribPointers.length; i++) {
-            final GLAttribPointer att = v.attribPointers[i];
-            if (att.type == null)
-                continue;
-            if (att.buffer != null)
-                code.format("glBindBuffer(GL_ARRAY_BUFFER, buffer_%d);CHKERR;\n", att.buffer.name);
-            else
-                code.format("glBindBuffer(GL_ARRAY_BUFFER, 0);CHKERR;\n");
-            code.format("glVertexAttribPointer(%d, %d, %s, %b, %d, (const GLvoid *)%d);CHKERR;\n",
-                    i, att.size, att.type, att.normalized, att.stride, att.ptr);
-        }
-        if (v.attribBuffer != null)
-            code.format("glBindBuffer(GL_ARRAY_BUFFER, buffer_%d);CHKERR;\n", v.attribBuffer.name);
-        else
-            code.write("glBindBuffer(GL_ARRAY_BUFFER, 0);CHKERR;\n");
-        if (v.indexBuffer != null)
-            code.format("glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer_%d);CHKERR;\n",
-                    v.indexBuffer.name);
-        else
-            code.write("glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHKERR;\n");
-    }
-
-    private void codeGenGenNames(final Message msg) {
-        final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
-        names.order(SampleView.targetByteOrder);
-        SparseIntArray namesArray = null;
-        for (int i = 0; i < msg.getArg0(); i++) {
-            String id = "";
-            final int name = names.getInt();
-            switch (msg.getFunction()) {
-                case glGenBuffers:
-                    id = "buffer";
-                    namesArray = bufferNames;
-                    break;
-                case glGenFramebuffers:
-                    id = "framebuffer";
-                    namesArray = framebufferNames;
-                    break;
-                case glGenRenderbuffers:
-                    id = "renderbuffer";
-                    namesArray = renderbufferNames;
-                    break;
-                case glGenTextures:
-                    id = "texture";
-                    namesArray = textureNames;
-                    break;
-                default:
-                    assert false;
-            }
-            id += "_" + name;
-            if (namesArray.indexOfKey(name) < 0) {
-                namesHeader.format("extern GLuint %s;\n", id);
-                namesSource.format("GLuint %s = 0;\n", id);
-            }
-            code.format("%s = 0;\n", id);
-            namesArray.put(name, name);
-            code.format("%s(1, &%s);CHKERR;\n", msg.getFunction(), id);
-        }
-    }
-
-    private void codeGenDeleteNames(final Message msg) {
-        final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
-        names.order(SampleView.targetByteOrder);
-        SparseIntArray namesArray = null;
-        for (int i = 0; i < msg.getArg0(); i++) {
-            String id = null;
-            final int name = names.getInt();
-            switch (msg.getFunction()) {
-                case glDeleteBuffers:
-                    id = "buffer";
-                    namesArray = bufferNames;
-                    break;
-                case glDeleteFramebuffers:
-                    id = "framebuffer";
-                    namesArray = framebufferNames;
-                    break;
-                case glDeleteRenderbuffers:
-                    id = "renderbuffer";
-                    namesArray = renderbufferNames;
-                    break;
-                case glDeleteTextures:
-                    id = "texture";
-                    namesArray = textureNames;
-                    break;
-                default:
-                    assert false;
-            }
-            id += "_" + name;
-            code.format("%s = 0;\n", id);
-            namesArray.put(name, 0);
-            code.format("%s(1, &%s);CHKERR;\n", msg.getFunction(), id);
-        }
-    }
-
-    private void codeGenBindNames(final Message msg) {
-        String id = null;
-        SparseIntArray namesArray = null;
-        final int name = msg.getArg1();
-        switch (msg.getFunction()) {
-            case glBindBuffer:
-                id = "buffer";
-                namesArray = bufferNames;
-                break;
-            case glBindFramebuffer:
-                id = "framebuffer";
-                namesArray = framebufferNames;
-                break;
-            case glBindRenderbuffer:
-                id = "renderbuffer";
-                namesArray = renderbufferNames;
-                break;
-            case glBindTexture:
-                id = "texture";
-                namesArray = textureNames;
-                break;
-            default:
-                assert false;
-        }
-        id += "_" + name;
-        if (namesArray.indexOfKey(name) < 0) {
-            namesHeader.format("extern GLuint %s;\n", id);
-            namesSource.format("GLuint %s = 0;\n", id);
-        } else if (namesArray.get(name) != name)
-            code.format("%s = %d;\n", id, name); // name was deleted
-        namesArray.put(name, name);
-        code.write(MessageFormatter.format(msg, true));
-        code.write(";CHKERR;\n");
-    }
-
-    private void codeGenDrawArrays(final GLServerVertex v, final MessageData msgData)
-            throws IOException {
-        final int maxAttrib = msgData.msg.getArg7();
-        if (maxAttrib < 1) {
-            code.write("// no vertex data\n");
-            return;
-        }
-        final byte[] data = msgData.msg.getData().toByteArray();
-        final GLEnum mode = GLEnum.valueOf(msgData.msg.getArg0());
-        final int first = msgData.msg.getArg1(), count = msgData.msg.getArg2();
-        int attribDataStride = 0;
-        for (int i = 0; i < maxAttrib; i++) {
-            final GLAttribPointer att = v.attribPointers[i];
-            if (!att.enabled)
-                continue;
-            if (att.buffer != null)
-                continue;
-            attribDataStride += att.elemSize;
-        }
-        assert attribDataStride * count == data.length;
-        code.write("{\n");
-        if (attribDataStride > 0) {
-            code.format("    FILE * attribFile = fopen(\"/sdcard/frame_data.bin\", \"rb\");CHKERR;\n");
-            code.format("    assert(attribFile);CHKERR;\n");
-            code.format("    fseek(attribFile, %d, SEEK_SET);CHKERR;\n", dataOut.getChannel()
-                    .position());
-            dataOut.write(data);
-            code.format("    char * const attribData = (char *)malloc(%d);\n", first
-                    * attribDataStride + data.length);
-            code.format("    assert(attribData);\n");
-            code.format("    fread(attribData + %d, %d, 1, attribFile);\n",
-                    first * attribDataStride, data.length);
-            code.format("    fclose(attribFile);\n");
-            code.format("    glBindBuffer(GL_ARRAY_BUFFER, 0);CHKERR;\n");
-            int attribDataOffset = 0;
-            for (int i = 0; i < maxAttrib; i++) {
-                final GLAttribPointer att = v.attribPointers[i];
-                if (!att.enabled)
-                    continue;
-                if (att.buffer != null)
-                    continue;
-                code.format(
-                        "    glVertexAttribPointer(%d, %d, %s, %b, %d, attribData + %d);CHKERR;\n",
-                        i, att.size, att.type, att.normalized,
-                        attribDataStride, attribDataOffset);
-                attribDataOffset += att.elemSize;
-            }
-            if (v.attribBuffer != null)
-                code.format("    glBindBuffer(GL_ARRAY_BUFFER, %d);CHKERR;\n",
-                        v.attribBuffer.name);
-        }
-        code.format("    glDrawArrays(%s, %d, %d);CHKERR;\n", mode, first, count);
-        if (attribDataStride > 0)
-            code.format("    free(attribData);CHKERR;\n");
-        code.write("};\n");
-    }
-
-    private void codeGenDrawElements(final GLServerVertex v, final MessageData msgData)
-            throws IOException {
-        final int maxAttrib = msgData.msg.getArg7();
-        if (maxAttrib < 1) {
-            code.write("// no vertex data\n");
-            return;
-        }
-        final GLEnum mode = GLEnum.valueOf(msgData.msg.getArg0());
-        final int count = msgData.msg.getArg1();
-        final GLEnum type = GLEnum.valueOf(msgData.msg.getArg2());
-        String typeName = "GLubyte";
-        if (type == GLEnum.GL_UNSIGNED_SHORT)
-            typeName = "GLushort";
-        int attribDataStride = 0;
-        for (int i = 0; i < maxAttrib; i++) {
-            final GLAttribPointer att = v.attribPointers[i];
-            if (!att.enabled)
-                continue;
-            if (att.buffer != null)
-                continue;
-            attribDataStride += att.elemSize;
-        }
-        code.write("{\n");
-        if (v.indexBuffer == null || attribDataStride > 0) {
-            // need to load user pointer indices and/or attributes
-            final byte[] element = new byte[attribDataStride];
-            final ByteBuffer data = msgData.msg.getData().asReadOnlyByteBuffer();
-            data.order(SampleView.targetByteOrder);
-            final ByteBuffer indexData = ByteBuffer.allocate(count * GLServerVertex.typeSize(type));
-            indexData.order(SampleView.targetByteOrder);
-            final ByteBuffer attribData = ByteBuffer.allocate(count * attribDataStride);
-            attribData.order(SampleView.targetByteOrder);
-            int maxIndex = -1;
-            ByteBuffer indexSrc = data;
-            if (v.indexBuffer != null) {
-                indexSrc = v.indexBuffer.data;
-                indexSrc.position(msgData.msg.getArg3());
-            }
-            indexSrc.order(SampleView.targetByteOrder);
-            for (int i = 0; i < count; i++) {
-                int index = -1;
-                if (type == GLEnum.GL_UNSIGNED_BYTE) {
-                    byte idx = indexSrc.get();
-                    index = idx & 0xff;
-                    indexData.put(idx);
-                } else if (type == GLEnum.GL_UNSIGNED_SHORT) {
-                    short idx = indexSrc.getShort();
-                    index = idx & 0xffff;
-                    indexData.putShort(idx);
-                } else
-                    assert false;
-                data.get(element);
-                attribData.put(element);
-                if (index > maxIndex)
-                    maxIndex = index;
-            }
-            code.format("    FILE * attribFile = fopen(\"/sdcard/frame_data.bin\", \"rb\");CHKERR;\n");
-            code.format("    assert(attribFile);CHKERR;\n");
-            code.format("    fseek(attribFile, 0x%X, SEEK_SET);CHKERR;\n",
-                    dataOut.getChannel().position());
-            dataOut.write(indexData.array());
-            code.format("    %s * const indexData = (%s *)malloc(%d);\n", typeName, typeName,
-                    indexData.capacity());
-            code.format("    assert(indexData);\n");
-            code.format("    fread(indexData, %d, 1, attribFile);\n", indexData.capacity());
-            if (attribDataStride > 0) {
-                code.format("    glBindBuffer(GL_ARRAY_BUFFER, 0);CHKERR;\n");
-                for (int i = 0; i < maxAttrib; i++) {
-                    final GLAttribPointer att = v.attribPointers[i];
-                    if (!att.enabled)
-                        continue;
-                    if (att.buffer != null)
-                        continue;
-                    code.format("    char * const attrib%d = (char *)malloc(%d);\n",
-                            i, att.elemSize * (maxIndex + 1));
-                    code.format("    assert(attrib%d);\n", i);
-                    code.format(
-                            "    glVertexAttribPointer(%d, %d, %s, %b, %d, attrib%d);CHKERR;\n",
-                            i, att.size, att.type, att.normalized, att.elemSize, i);
-                }
-                dataOut.write(attribData.array());
-                code.format("    for (%s i = 0; i < %d; i++) {\n", typeName, count);
-                for (int i = 0; i < maxAttrib; i++) {
-                    final GLAttribPointer att = v.attribPointers[i];
-                    if (!att.enabled)
-                        continue;
-                    if (att.buffer != null)
-                        continue;
-                    code.format(
-                            "        fread(attrib%d + indexData[i] * %d, %d, 1, attribFile);\n",
-                            i, att.elemSize, att.elemSize);
-                }
-                code.format("    }\n");
-                if (v.attribBuffer != null)
-                    code.format("    glBindBuffer(GL_ARRAY_BUFFER, %d);CHKERR;\n",
-                            v.attribBuffer.name);
-            }
-            code.format("    fclose(attribFile);\n");
-        }
-        if (v.indexBuffer != null)
-            code.format("    glDrawElements(%s, %d, %s, (const void *)%d);CHKERR;\n",
-                    mode, count, type, msgData.msg.getArg3());
-        else {
-            code.format("    glDrawElements(%s, %d, %s, indexData);CHKERR;\n",
-                    mode, count, type);
-            code.format("    free(indexData);\n");
-        }
-        for (int i = 0; i < maxAttrib; i++) {
-            final GLAttribPointer att = v.attribPointers[i];
-            if (!att.enabled)
-                continue;
-            if (att.buffer != null)
-                continue;
-            code.format("    free(attrib%d);\n", i);
-        }
-        code.write("};\n");
-    }
-
-    private void codeGenDraw(final GLServerVertex v, final MessageData msgData)
-            throws IOException {
-        final int maxAttrib = msgData.msg.getArg7();
-        if (maxAttrib < 1) {
-            code.write("// no vertex data\n");
-            return;
-        }
-        final int count = msgData.attribs[0].length / 4;
-        final GLEnum mode = GLEnum.valueOf(msgData.msg.getArg0());
-        final ByteBuffer attribData = ByteBuffer.allocate(maxAttrib * count * 16);
-        attribData.order(SampleView.targetByteOrder);
-        for (int i = 0; i < count; i++)
-            for (int j = 0; j < maxAttrib; j++)
-                for (int k = 0; k < 4; k++)
-                    attribData.putFloat(msgData.attribs[j][i * 4 + k]);
-        assert attribData.remaining() == 0;
-        code.write("{\n");
-        code.format("    FILE * attribFile = fopen(\"/sdcard/frame_data.bin\", \"rb\");CHKERR;\n");
-        code.format("    assert(attribFile);CHKERR;\n");
-        code.format("    fseek(attribFile, 0x%X, SEEK_SET);CHKERR;\n",
-                dataOut.getChannel().position());
-        dataOut.write(attribData.array());
-        code.format("    char * const attribData = (char *)malloc(%d);\n", attribData.capacity());
-        code.format("    assert(attribData);\n");
-        code.format("    fread(attribData, %d, 1, attribFile);\n", attribData.capacity());
-        code.format("    fclose(attribFile);\n");
-        code.format("    glBindBuffer(GL_ARRAY_BUFFER, 0);CHKERR;\n");
-        for (int i = 0; i < maxAttrib; i++) {
-            final GLAttribPointer att = v.attribPointers[i];
-            assert msgData.attribs[i].length == count * 4;
-            code.format(
-                    "    glVertexAttribPointer(%d, %d, GL_FLOAT, GL_FALSE, %d, attribData + %d);CHKERR;\n",
-                        i, att.size, maxAttrib * 16, i * 16);
-        }
-        code.format("    glDrawArrays(%s, 0, %d);CHKERR;\n", mode, count);
-        code.format("    free(attribData);\n");
-        if (v.attribBuffer != null)
-            code.format("    glBindBuffer(GL_ARRAY_BUFFER, %d);CHKERR;\n",
-                        v.attribBuffer.name);
-        code.write("};\n");
-    }
-
-    private void codeGenFunction(final Context ctx, final MessageData msgData)
-            throws IOException {
-        final Message msg = msgData.msg;
-        String call = MessageFormatter.format(msg, true);
-        switch (msg.getFunction()) {
-            case glActiveTexture:
-            case glAttachShader:
-            case glBindAttribLocation:
-                break;
-            case glBindBuffer:
-            case glBindFramebuffer:
-            case glBindRenderbuffer:
-            case glBindTexture:
-                codeGenBindNames(msg);
-                return;
-            case glBlendColor:
-            case glBlendEquation:
-            case glBlendEquationSeparate:
-            case glBlendFunc:
-            case glBlendFuncSeparate:
-                break;
-            case glBufferData:
-                call = MessageFormatter.format(msg, true).replace("arg2", "bufferData");
-                codeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
-                return;
-            case glBufferSubData:
-                call = MessageFormatter.format(msg, true).replace("arg3", "bufferData");
-                codeGenBufferData(msg.getData().asReadOnlyByteBuffer(), call);
-                return;
-            case glCheckFramebufferStatus:
-            case glClear:
-            case glClearColor:
-            case glClearDepthf:
-            case glClearStencil:
-            case glColorMask:
-            case glCompileShader:
-                break;
-            case glCompressedTexImage2D:
-            case glCompressedTexSubImage2D:
-            case glCopyTexImage2D:
-            case glCopyTexSubImage2D:
-                codeGenTextureUpload(msg, false);
-                return;
-            case glCreateProgram:
-                namesHeader.format("extern GLuint program_%d;\n", msg.getRet());
-                namesSource.format("GLuint program_%d = 0;\n", msg.getRet());
-                code.format("program_%d = glCreateProgram();CHKERR;\n", msg.getRet());
-                return;
-            case glCreateShader:
-                namesHeader.format("extern GLuint shader_%d;\n", msg.getRet());
-                namesSource.format("GLuint shader_%d = 0;\n", msg.getRet());
-                code.format("shader_%d = %s;\n", msg.getRet(), call);
-                return;
-            case glCullFace:
-                break;
-            case glDeleteBuffers:
-            case glDeleteFramebuffers:
-            case glDeleteProgram:
-                programNames.put(msg.getArg0(), 0);
-                break;
-            case glDeleteRenderbuffers:
-                codeGenDeleteNames(msg);
-                return;
-            case glDeleteShader:
-                shaderNames.put(msg.getArg0(), 0);
-                return;
-            case glDeleteTextures:
-                codeGenDeleteNames(msg);
-                return;
-            case glDepthFunc:
-            case glDepthMask:
-            case glDepthRangef:
-            case glDetachShader:
-            case glDisable:
-            case glDisableVertexAttribArray:
-                break;
-            case glDrawArrays:
-                // CodeGenDraw(ctx.serverVertex, msgData);
-                codeGenDrawArrays(ctx.serverVertex, msgData);
-                return;
-            case glDrawElements:
-                // CodeGenDraw(ctx.serverVertex, msgData);
-                codeGenDrawElements(ctx.serverVertex, msgData);
-                return;
-            case glEnable:
-            case glEnableVertexAttribArray:
-            case glFinish:
-            case glFlush:
-            case glFramebufferRenderbuffer:
-            case glFramebufferTexture2D:
-            case glFrontFace:
-                break;
-            case glGenBuffers:
-                codeGenGenNames(msg);
-                return;
-            case glGenerateMipmap:
-                break;
-            case glGenFramebuffers:
-            case glGenRenderbuffers:
-            case glGenTextures:
-                codeGenGenNames(msg);
-                return;
-            case glGetActiveAttrib:
-            case glGetActiveUniform:
-            case glGetAttachedShaders:
-                break;
-            case glGetAttribLocation:
-                call = String.format("assert(%d == %s)", msg.getRet(), call);
-                break;
-            case glGetBooleanv:
-            case glGetBufferParameteriv:
-                return; // TODO
-            case glGetError:
-                code.write("CHKERR;\n");
-                return;
-            case glGetFloatv:
-            case glGetFramebufferAttachmentParameteriv:
-            case glGetIntegerv:
-            case glGetProgramiv:
-            case glGetProgramInfoLog:
-            case glGetRenderbufferParameteriv:
-            case glGetShaderiv:
-            case glGetShaderInfoLog:
-            case glGetShaderPrecisionFormat:
-            case glGetShaderSource:
-            case glGetString:
-            case glGetTexParameterfv:
-            case glGetTexParameteriv:
-            case glGetUniformfv:
-            case glGetUniformiv:
-                return;
-            case glGetUniformLocation:
-                call = String.format("assert(%d == %s)", msg.getRet(), call);
-                break;
-            case glGetVertexAttribfv:
-            case glGetVertexAttribiv:
-            case glGetVertexAttribPointerv:
-                return; // TODO
-            case glHint:
-            case glIsBuffer:
-            case glIsEnabled:
-            case glIsFramebuffer:
-            case glIsProgram:
-            case glIsRenderbuffer:
-            case glIsShader:
-            case glIsTexture:
-            case glLineWidth:
-            case glLinkProgram:
-            case glPixelStorei:
-            case glPolygonOffset:
-                break;
-            case glReadPixels:
-                return; // TODO
-            case glReleaseShaderCompiler:
-            case glRenderbufferStorage:
-            case glSampleCoverage:
-            case glScissor:
-                break;
-            case glShaderBinary:
-                return; // TODO
-            case glShaderSource:
-                call = String.format(
-                        "glShaderSource(shader_%d, 1, (const char * []){\"%s\"}, NULL)",
-                        msg.getArg0(),
-                        msg.getData().toStringUtf8().replace("\r", "").replace("\n", "\\n\\\n")
-                                .replace("\"", "\\\"")
-                                );
-                break;
-            case glStencilFunc:
-            case glStencilFuncSeparate:
-            case glStencilMask:
-            case glStencilMaskSeparate:
-            case glStencilOp:
-            case glStencilOpSeparate:
-                break;
-            case glTexImage2D:
-                codeGenTextureUpload(msg, false);
-                return;
-            case glTexParameterf:
-                break;
-            case glTexParameterfv:
-                return; // TODO
-            case glTexParameteri:
-                break;
-            case glTexParameteriv:
-                return; // TODO
-            case glTexSubImage2D:
-                codeGenTextureUpload(msg, false);
-                return;
-            case glUniform1f:
-            case glUniform1fv:
-            case glUniform1i:
-            case glUniform1iv:
-            case glUniform2f:
-            case glUniform2fv:
-            case glUniform2i:
-            case glUniform2iv:
-            case glUniform3f:
-            case glUniform3fv:
-            case glUniform3i:
-            case glUniform3iv:
-            case glUniform4f:
-            case glUniform4fv:
-            case glUniform4i:
-            case glUniform4iv:
-            case glUniformMatrix2fv:
-            case glUniformMatrix3fv:
-            case glUniformMatrix4fv:
-            case glUseProgram:
-            case glValidateProgram:
-            case glVertexAttrib1f:
-            case glVertexAttrib1fv:
-            case glVertexAttrib2f:
-            case glVertexAttrib2fv:
-            case glVertexAttrib3f:
-            case glVertexAttrib3fv:
-            case glVertexAttrib4f:
-            case glVertexAttrib4fv:
-                break;
-            case glVertexAttribPointer:
-                // if it's user pointer, then CodeGenDrawArrays/Elements will
-                // replace it with loaded data just before the draw
-                call = call.replace("arg5", "(const void *)0x" +
-                        Integer.toHexString(msg.getArg5()));
-                break;
-            case glViewport:
-                break;
-            case eglSwapBuffers:
-                return;
-            default:
-                assert false;
-                return;
-        }
-        if (call.indexOf("glEnable(/*cap*/ GL_TEXTURE_2D)") >= 0)
-            return;
-        else if (call.indexOf("glDisable(/*cap*/ GL_TEXTURE_2D)") >= 0)
-            return;
-        else if (call.indexOf("glActiveTexture(/*texture*/ GL_TEXTURE_2D)") >= 0)
-            return;
-        code.write(call + ";CHKERR;\n");
-    }
-
-    private void codeGenSetup(final Context ctx) {
-        try {
-            codeFile = new FileWriter("frame_setup.cpp", false);
-            code = new PrintWriter(codeFile);
-            dataOut = new FileOutputStream("frame_data.bin", false);
-            namesHeaderFile = new FileWriter("frame_names.h", false);
-            namesHeader = new PrintWriter(namesHeaderFile);
-            namesSourceFile = new FileWriter("frame_names.cpp", false);
-            namesSource = new PrintWriter(namesSourceFile);
-        } catch (IOException e) {
-            e.printStackTrace();
-            assert false;
-        }
-        bufferNames = new SparseIntArray();
-        framebufferNames = new SparseIntArray();
-        programNames = new SparseIntArray();
-        textureNames = new SparseIntArray();
-        shaderNames = new SparseIntArray();
-        renderbufferNames = new SparseIntArray();
-
-        namesHeader.write("#include <stdlib.h>\n");
-        namesHeader.write("#include <stdio.h>\n");
-        namesHeader.write("#include <assert.h>\n");
-        namesHeader.write("#include <GLES2/gl2.h>\n");
-        namesHeader.write("#include <GLES2/gl2ext.h>\n");
-        namesHeader.write("#define CHKERR assert(GL_NO_ERROR == glGetError());/**/\n");
-        namesHeader.write("void FrameSetup();\n");
-        namesHeader.write("extern const unsigned int FrameCount;\n");
-        namesHeader.write("extern const GLuint program_0;\n");
-
-        namesSource.write("/*\n" + 
-        " * Copyright (C) 2011 The Android Open Source Project\n" + 
-        " *\n" + 
-        " * Licensed under the Apache License, Version 2.0 (the \"License\");\n" + 
-        " * you may not use this file except in compliance with the License.\n" + 
-        " * You may obtain a copy of the License at\n" + 
-        " *\n" + 
-        " *      http://www.apache.org/licenses/LICENSE-2.0\n" + 
-        " *\n" + 
-        " * Unless required by applicable law or agreed to in writing, software\n" + 
-        " * distributed under the License is distributed on an \"AS IS\" BASIS,\n" + 
-        " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + 
-        " * See the License for the specific language governing permissions and\n" + 
-        " * limitations under the License.\n" + 
-        " */\n" + 
-        "\n" + 
-        "#include <stdlib.h>\n" + 
-        "#include <stdio.h>\n" + 
-        "\n" + 
-        "#include <EGL/egl.h>\n" + 
-        "#include <GLES2/gl2.h>\n" + 
-        "#include <GLES2/gl2ext.h>\n" + 
-        "\n" + 
-        "#include <ui/FramebufferNativeWindow.h>\n" + 
-        "#include <ui/EGLUtils.h>\n" + 
-        "\n" + 
-        "#include <private/ui/android_natives_priv.h>\n" + 
-        "\n" + 
-        "#include <surfaceflinger/Surface.h>\n" + 
-        "#include <surfaceflinger/ISurface.h>\n" + 
-        "#include <surfaceflinger/SurfaceComposerClient.h>\n" + 
-        "\n" + 
-        "using namespace android;\n" + 
-        "\n" + 
-        "static void checkEglError(const char* op, EGLBoolean returnVal = EGL_TRUE)\n" + 
-        "{\n" + 
-        "    if (returnVal != EGL_TRUE) {\n" + 
-        "        fprintf(stderr, \"%s() returned %d\\n\", op, returnVal);\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    for (EGLint error = eglGetError(); error != EGL_SUCCESS; error\n" + 
-        "            = eglGetError()) {\n" + 
-        "        fprintf(stderr, \"after %s() eglError %s (0x%x)\\n\", op, EGLUtils::strerror(error),\n" + 
-        "                error);\n" + 
-        "    }\n" + 
-        "}\n" + 
-        "\n" + 
-        "static EGLDisplay dpy;\n" + 
-        "static EGLSurface surface;\n" + 
-        "\n" + 
-        "#include \"frame_names.h\"\n" + 
-        "const GLuint program_0 = 0;\n" + 
-        "int main(int argc, char** argv)\n" + 
-        "{\n" + 
-        "    EGLBoolean returnValue;\n" + 
-        "    EGLConfig myConfig = {0};\n" + 
-        "\n" + 
-        "    EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };\n" + 
-        "    EGLint majorVersion;\n" + 
-        "    EGLint minorVersion;\n" + 
-        "    EGLContext context;\n" + 
-        "    EGLint w, h;\n" + 
-        "\n" + 
-        "\n" + 
-        "    checkEglError(\"<init>\");\n" + 
-        "    dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);\n" + 
-        "    checkEglError(\"eglGetDisplay\");\n" + 
-        "    if (dpy == EGL_NO_DISPLAY) {\n" + 
-        "        printf(\"eglGetDisplay returned EGL_NO_DISPLAY.\\n\");\n" + 
-        "        return 0;\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    returnValue = eglInitialize(dpy, &majorVersion, &minorVersion);\n" + 
-        "    checkEglError(\"eglInitialize\", returnValue);\n" + 
-        "    if (returnValue != EGL_TRUE) {\n" + 
-        "        printf(\"eglInitialize failed\\n\");\n" + 
-        "        return 0;\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    sp<SurfaceComposerClient> spClient;\n" + 
-        "    sp<SurfaceControl> spControl;\n" + 
-        "    sp<Surface> spSurface;\n" + 
-        "\n" + 
-        "    // create a client to surfaceflinger\n" + 
-        "    spClient = new SurfaceComposerClient();\n" + 
-        "\n" + 
-        "    spControl = spClient->createSurface(getpid(), 0, 1280, 752, PIXEL_FORMAT_RGBX_8888);\n" + 
-        "    spClient->openTransaction();\n" + 
-        "    spControl->setLayer(350000);\n" + 
-        "    spControl->show();\n" + 
-        "    spClient->closeTransaction();\n" + 
-        "\n" + 
-        "    spSurface = spControl->getSurface();\n" + 
-        "    EGLNativeWindowType window = spSurface.get();\n" + 
-        "\n" + 
-        "    printf(\"window=%p\\n\", window);\n" + 
-        "    EGLint attrib_list[] = {\n" + 
-        "        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,\n" + 
-        "        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,\n" + 
-        "        EGL_BUFFER_SIZE, 32,\n" + 
-        "        EGL_RED_SIZE, 8,\n" + 
-        "        EGL_GREEN_SIZE, 8,\n" + 
-        "        EGL_BLUE_SIZE, 8,\n" + 
-        "        EGL_NONE\n" + 
-        "    };\n" + 
-        "\n" + 
-        "    EGLConfig configs[12] = {0};\n" + 
-        "    int num_config = -1;\n" + 
-        "    eglChooseConfig(dpy, attrib_list, configs, sizeof(configs) / sizeof(*configs), &num_config);\n" + 
-        "    printf(\"eglChooseConfig %d \\n\", num_config);\n" + 
-        "\n" + 
-        "    surface = eglCreateWindowSurface(dpy, configs[0], window, NULL);\n" + 
-        "    checkEglError(\"eglCreateWindowSurface\");\n" + 
-        "    if (surface == EGL_NO_SURFACE) {\n" + 
-        "        printf(\"gelCreateWindowSurface failed.\\n\");\n" + 
-        "        return 0;\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    context = eglCreateContext(dpy, configs[0], EGL_NO_CONTEXT, context_attribs);\n" + 
-        "    checkEglError(\"eglCreateContext\");\n" + 
-        "    if (context == EGL_NO_CONTEXT) {\n" + 
-        "        printf(\"eglCreateContext failed\\n\");\n" + 
-        "        return 0;\n" + 
-        "    }\n" + 
-        "    printf(\"context=%p \\n\", context);\n" + 
-        "\n" + 
-        "    returnValue = eglMakeCurrent(dpy, surface, surface, context);\n" + 
-        "    checkEglError(\"eglMakeCurrent\", returnValue);\n" + 
-        "    if (returnValue != EGL_TRUE) {\n" + 
-        "        return 0;\n" + 
-        "    }\n" + 
-        "\n" + 
-        "    glClearColor(1,1,1,1);\n" + 
-        "    glClear(GL_COLOR_BUFFER_BIT);\n" + 
-        "\n" + 
-        "    FrameSetup();\n" + 
-        "    while (true)\n" + 
-        "        for (unsigned int i = 0; i < FrameCount; i++) {\n" + 
-        "            Frames[i]();\n" + 
-        "            eglSwapBuffers(dpy, surface);\n" + 
-        "            printf(\"press ENTER after Frame%d \\n\", i);\n" + 
-        "            getchar();\n" + 
-        "        }\n" + 
-        "\n" + 
-        "    return 0;\n" + 
-        "}");
-
-        code.write("#include \"frame_names.h\"\n");
-        code.write("void FrameSetup(){\n");
-
-        codeGenServerState(ctx.serverState);
-        codeGenServerShader(ctx.serverShader);
-        codeGenServerTexture(ctx.serverTexture, true);
-        codeGenServerVertex(ctx.serverVertex);
-
-        code.write("}\n");
-
-        try {
-            codeFile.close();
-            makeFile = new FileWriter("Android.mk", false);
-            make = new PrintWriter(makeFile);
-            make.write("LOCAL_PATH:= $(call my-dir)\n" +
-                    "include $(CLEAR_VARS)\n" +
-                    "LOCAL_SRC_FILES := \\\n");
-        } catch (IOException e) {
-            e.printStackTrace();
-            assert false;
-        }
-    }
-
-    private void codeGenCleanup() {
-        make.write("    frame_setup.cpp \\\n");
-        make.write("    frame_names.cpp \\\n");
-        make.write("#\n");
-        make.write(
-                "LOCAL_SHARED_LIBRARIES := \\\n" + 
-                "    libcutils \\\n" + 
-                "    libutils \\\n" + 
-                "    libEGL \\\n" + 
-                "    libGLESv2 \\\n" + 
-                "    libui \\\n" + 
-                "    libhardware \\\n" + 
-                "    libgui\n" + 
-                "\n" + 
-                "LOCAL_MODULE:= gles2dbg\n" + 
-                "\n" + 
-                "LOCAL_MODULE_TAGS := optional\n" + 
-                "\n" + 
-                "LOCAL_CFLAGS := -DGL_GLEXT_PROTOTYPES -O0 -g -DDEBUG -UNDEBUG\n" + 
-                "\n" + 
-                "include $(BUILD_EXECUTABLE)");
-        try {
-            dataOut.flush();
-            dataOut.close();
-            codeFile.close();
-            makeFile.close();
-            namesHeaderFile.close();
-            namesSourceFile.close();
-        } catch (IOException e) {
-            e.printStackTrace();
-            assert false;
-        }
-        dataOut = null;
-        code = null;
-        codeFile = null;
-        make = null;
-        makeFile = null;
-
-        bufferNames = null;
-        framebufferNames = null;
-        programNames = null;
-        textureNames = null;
-        shaderNames = null;
-        renderbufferNames = null;
-    }
-
-    private DebugContext dbgCtx;
-    private int count;
-    private IProgressMonitor progress;
-
-    @Override
-    public void run(IProgressMonitor monitor) {
-        progress.beginTask("CodeGenFrames", count + 2);
-        Context ctx = dbgCtx.getFrame(0).startContext.clone();
-        codeGenSetup(ctx);
-        progress.worked(1);
-        for (int i = 0; i < count; i++) {
-            try {
-                codeFile = new FileWriter("frame" + i + ".cpp", false);
-                code = new PrintWriter(codeFile);
-            } catch (IOException e1) {
-                e1.printStackTrace();
-                assert false;
-            }
-            make.format("    frame%d.cpp \\\n", i);
-
-            code.write("#include \"frame_names.h\"\n");
-            code.format("void Frame%d(){\n", i);
-            final Frame frame = dbgCtx.getFrame(i);
-            for (int j = 0; j < frame.size(); j++) {
-                final MessageData msgData = frame.get(j);
-                code.format("/* frame function %d: %s %s*/\n", j, msgData.msg.getFunction(),
-                        MessageFormatter.format(msgData.msg, false));
-                ctx.processMessage(msgData.msg);
-                try {
-                    codeGenFunction(ctx, msgData);
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    assert false;
-                }
-            }
-            code.write("}\n");
-            try {
-                codeFile.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-                assert false;
-            }
-            progress.worked(1);
-        }
-        for (int i = 0; i < count; i++)
-            namesHeader.format("void Frame%d();\n", i);
-        namesHeader.format("extern void (* Frames[%d])();\n", count);
-        namesSource.format("void (* Frames[%d])() = {\n", count);
-        for (int i = 0; i < count; i++) {
-            namesSource.format("    Frame%d,\n", i);
-        }
-        namesSource.write("};\n");
-        namesSource.format("const unsigned int FrameCount = %d;\n", count);
-        codeGenCleanup();
-        progress.worked(1);
-    }
-
-    void codeGenFrames(final DebugContext dbgCtx, int count, final Shell shell) {
-        this.dbgCtx = dbgCtx;
-        this.count = count;
-        ProgressMonitorDialog dialog = new ProgressMonitorDialog(shell);
-        this.progress = dialog.getProgressMonitor();
-        try {
-            dialog.run(false, true, this);
-        } catch (InvocationTargetException e) {
-            e.printStackTrace();
-            assert false;
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        this.dbgCtx = null;
-        this.count = 0;
-        progress = null;
-    }
-
-    void codeGenFrame(final Frame frame) {
-        Context ctx = frame.startContext.clone();
-        codeGenSetup(ctx);
-        try {
-            codeFile = new FileWriter("frame0.cpp", false);
-            code = new PrintWriter(codeFile);
-        } catch (IOException e1) {
-            e1.printStackTrace();
-            assert false;
-        }
-        make.format("    frame0.cpp \\\n");
-        code.write("#include \"frame_names.h\"\n");
-        code.format("void Frame0(){\n");
-        for (int i = 0; i < frame.size(); i++) {
-            final MessageData msgData = frame.get(i);
-            code.format("/* frame function %d: %s %s*/\n", i, msgData.msg.getFunction(),
-                    MessageFormatter.format(msgData.msg, false));
-            ctx.processMessage(msgData.msg);
-            try {
-                codeGenFunction(ctx, msgData);
-            } catch (IOException e) {
-                e.printStackTrace();
-                assert false;
-            }
-        }
-        code.write("}\n");
-        namesHeader.write("void Frame0();\n");
-        namesHeader.write("extern void (* Frames[1])();\n");
-        namesSource.write("void (* Frames[1])() = {Frame0};\n");
-        namesSource.write("const unsigned int FrameCount = 1;\n");
-        codeGenCleanup();
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/Context.java b/tools/glesv2debugger/src/com/android/glesv2debugger/Context.java
deleted file mode 100644
index 122695b..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/Context.java
+++ /dev/null
@@ -1,532 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.DataType;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Prop;
-import com.android.sdklib.util.SparseArray;
-import com.android.sdklib.util.SparseIntArray;
-import com.google.protobuf.ByteString;
-
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Display;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.lang.reflect.Array;
-import java.lang.reflect.Field;
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-class Frame {
-    public final long filePosition;
-    private int callsCount;
-
-    final Context startContext;
-    private ArrayList<MessageData> calls = new ArrayList<MessageData>();
-
-    Frame(final Context context, final long filePosition) {
-        this.startContext = context.clone();
-        this.filePosition = filePosition;
-    }
-
-    void add(final MessageData msgData) {
-        calls.add(msgData);
-    }
-
-    void increaseCallsCount() {
-        callsCount++;
-    }
-
-    Context computeContext(final MessageData call) {
-        Context ctx = startContext.clone();
-        for (int i = 0; i < calls.size(); i++)
-            if (call == calls.get(i))
-                return ctx;
-            else
-                ctx.processMessage(calls.get(i).msg);
-        assert false;
-        return ctx;
-    }
-
-    int size() {
-        return callsCount;
-    }
-
-    MessageData get(final int i) {
-        return calls.get(i);
-    }
-
-    ArrayList<MessageData> get() {
-        return calls;
-    }
-
-    void unload() {
-        if (calls == null)
-            return;
-        calls.clear();
-        calls = null;
-    }
-
-    void load(final RandomAccessFile file) {
-        if (calls != null && calls.size() == callsCount)
-            return;
-        try {
-            Context ctx = startContext.clone();
-            calls = new ArrayList<MessageData>(callsCount);
-            final long oriPosition = file.getFilePointer();
-            file.seek(filePosition);
-            for (int i = 0; i < callsCount; i++) {
-                int len = file.readInt();
-                if (SampleView.targetByteOrder == ByteOrder.LITTLE_ENDIAN)
-                    len = Integer.reverseBytes(len);
-                final byte[] data = new byte[len];
-                file.read(data);
-                Message msg = Message.parseFrom(data);
-                ctx.processMessage(msg);
-                final MessageData msgData = new MessageData(Display.getCurrent(), msg, ctx);
-                calls.add(msgData);
-            }
-            file.seek(oriPosition);
-        } catch (IOException e) {
-            e.printStackTrace();
-            assert false;
-        }
-    }
-}
-
-class DebugContext {
-    boolean uiUpdate = false;
-    final int contextId;
-    Context currentContext;
-    private ArrayList<Frame> frames = new ArrayList<Frame>(128);
-    private Frame lastFrame;
-    private Frame loadedFrame;
-    private RandomAccessFile file;
-
-    DebugContext(final int contextId) {
-        this.contextId = contextId;
-        currentContext = new Context(contextId);
-        try {
-            file = new RandomAccessFile("0x" + Integer.toHexString(contextId) +
-                    ".gles2dbg", "rw");
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-            assert false;
-        }
-    }
-
-    /** write message to file; if frame not null, then increase its call count */
-    void saveMessage(final Message msg, final RandomAccessFile file, Frame frame) {
-        synchronized (file) {
-            if (frame != null)
-                frame.increaseCallsCount();
-            final byte[] data = msg.toByteArray();
-            final ByteBuffer len = ByteBuffer.allocate(4);
-            len.order(SampleView.targetByteOrder);
-            len.putInt(data.length);
-            try {
-                if (SampleView.targetByteOrder == ByteOrder.BIG_ENDIAN)
-                    file.writeInt(data.length);
-                else
-                    file.writeInt(Integer.reverseBytes(data.length));
-                file.write(data);
-            } catch (IOException e) {
-                e.printStackTrace();
-                assert false;
-            }
-        }
-    }
-
-    /**
-     * Caches new Message, and formats into MessageData for current frame; this
-     * function is called exactly once for each new Message
-     */
-    void processMessage(final Message newMsg) {
-        Message msg = newMsg;
-        if (msg.getFunction() == Function.SETPROP) {
-            // GL impl. consts should have been sent before any GL call messages
-            assert frames.size() == 0;
-            assert lastFrame == null;
-            assert msg.getProp() == Prop.GLConstant;
-            switch (GLEnum.valueOf(msg.getArg0())) {
-                case GL_MAX_VERTEX_ATTRIBS:
-                    currentContext.serverVertex = new GLServerVertex(msg.getArg1());
-                    break;
-                case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
-                    currentContext.serverTexture = new GLServerTexture(currentContext,
-                            msg.getArg1());
-                    break;
-                default:
-                    assert false;
-                    return;
-            }
-            saveMessage(msg, file, null);
-            return;
-        }
-
-        if (lastFrame == null) {
-            // first real message after the GL impl. consts
-            synchronized (file) {
-                try {
-                    lastFrame = new Frame(currentContext, file.getFilePointer());
-                } catch (IOException e) {
-                    e.printStackTrace();
-                    assert false;
-                }
-            }
-            synchronized (frames) {
-                frames.add(lastFrame);
-            }
-            assert loadedFrame == null;
-            loadedFrame = lastFrame;
-        }
-        currentContext.processMessage(msg);
-        if (msg.hasDataType() && msg.getDataType() == DataType.ReferencedImage) {
-            // decode referenced image so it doesn't rely on context later on
-            final byte[] referenced = MessageProcessor.lzfDecompressChunks(msg.getData());
-            currentContext.readPixelRef = MessageProcessor.decodeReferencedImage(
-                        currentContext.readPixelRef, referenced);
-            final byte[] decoded = MessageProcessor.lzfCompressChunks(
-                        currentContext.readPixelRef, referenced.length);
-            msg = msg.toBuilder().setDataType(DataType.NonreferencedImage)
-                        .setData(ByteString.copyFrom(decoded)).build();
-        }
-        saveMessage(msg, file, lastFrame);
-        if (loadedFrame == lastFrame) {
-            // frame selected for view, so format MessageData
-            final MessageData msgData = new MessageData(Display.getCurrent(), msg, currentContext);
-            lastFrame.add(msgData);
-            uiUpdate = true;
-        }
-        if (msg.getFunction() != Function.eglSwapBuffers)
-            return;
-        synchronized (frames) {
-            if (loadedFrame != lastFrame)
-                lastFrame.unload();
-            try {
-                frames.add(lastFrame = new Frame(currentContext, file.getFilePointer()));
-                // file.getChannel().force(false);
-                uiUpdate = true;
-            } catch (IOException e) {
-                e.printStackTrace();
-                assert false;
-            }
-        }
-        return;
-    }
-
-    Frame getFrame(int index) {
-        synchronized (frames) {
-            Frame newFrame = frames.get(index);
-            if (loadedFrame != null && loadedFrame != lastFrame && newFrame != loadedFrame) {
-                loadedFrame.unload();
-                uiUpdate = true;
-            }
-            loadedFrame = newFrame;
-            synchronized (file) {
-                loadedFrame.load(file);
-            }
-            return loadedFrame;
-        }
-    }
-
-    int frameCount() {
-        synchronized (frames) {
-            return frames.size();
-        }
-    }
-}
-
-/** aggregate of GL states */
-public class Context implements Cloneable {
-    public final int contextId;
-    public ArrayList<Context> shares = new ArrayList<Context>(); // self too
-    public GLServerVertex serverVertex;
-    public GLServerShader serverShader = new GLServerShader(this);
-    public GLServerState serverState = new GLServerState(this);
-    public GLServerTexture serverTexture;
-
-    byte[] readPixelRef = new byte[0];
-
-    public Context(int contextId) {
-        this.contextId = contextId;
-        shares.add(this);
-    }
-
-    @Override
-    public Context clone() {
-        try {
-            Context copy = (Context) super.clone();
-            // FIXME: context sharing list clone
-            copy.shares = new ArrayList<Context>(1);
-            copy.shares.add(copy);
-            if (serverVertex != null)
-                copy.serverVertex = serverVertex.clone();
-            copy.serverShader = serverShader.clone(copy);
-            copy.serverState = serverState.clone();
-            if (serverTexture != null)
-                copy.serverTexture = serverTexture.clone(copy);
-            // don't need to clone readPixelsRef, since referenced images
-            // are decoded when they are encountered
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-
-    /** mainly updating states */
-    public void processMessage(Message msg) {
-        if (serverVertex.process(msg))
-            return;
-        if (serverShader.processMessage(msg))
-            return;
-        if (serverState.processMessage(msg))
-            return;
-        if (serverTexture.processMessage(msg))
-            return;
-    }
-}
-
-class ContextViewProvider extends LabelProvider implements ITreeContentProvider,
-        ISelectionChangedListener {
-    Context context;
-    final SampleView sampleView;
-
-    ContextViewProvider(final SampleView sampleView) {
-        this.sampleView = sampleView;
-    }
-
-    @Override
-    public void dispose() {
-    }
-
-    @Override
-    public String getText(Object obj) {
-        if (obj == null)
-            return "null";
-        if (obj instanceof Entry) {
-            Entry entry = (Entry) obj;
-            String objStr = "null (or default)";
-            if (entry.obj != null) {
-                objStr = entry.obj.toString();
-                if (entry.obj instanceof Message)
-                    objStr = MessageFormatter.format((Message) entry.obj, false);
-            }
-            return entry.name + " = " + objStr;
-        }
-        return obj.toString();
-    }
-
-    @Override
-    public Image getImage(Object obj) {
-        if (!(obj instanceof Entry))
-            return null;
-        final Entry entry = (Entry) obj;
-        if (!(entry.obj instanceof Message))
-            return null;
-        final Message msg = (Message) entry.obj;
-        switch (msg.getFunction()) {
-            case glTexImage2D:
-            case glTexSubImage2D:
-            case glCopyTexImage2D:
-            case glCopyTexSubImage2D: {
-                entry.image = new MessageData(Display.getCurrent(), msg, null).getImage();
-                if (entry.image == null)
-                    return null;
-                return new Image(Display.getCurrent(), entry.image.getImageData().scaledTo(96, 96));
-            }
-            default:
-                return null;
-        }
-    }
-
-    @Override
-    public void selectionChanged(SelectionChangedEvent event) {
-        StructuredSelection selection = (StructuredSelection) event
-                .getSelection();
-        if (null == selection)
-            return;
-        final Object obj = selection.getFirstElement();
-        if (!(obj instanceof Entry))
-            return;
-        final Entry entry = (Entry) obj;
-        if (entry.image == null)
-            return;
-        sampleView.tabFolder.setSelection(sampleView.tabItemImage);
-        sampleView.canvas.setBackgroundImage(entry.image);
-        sampleView.canvas.redraw();
-    }
-
-    @Override
-    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-        context = (Context) newInput;
-    }
-
-    class Entry {
-        String name;
-        Object obj;
-        Image image;
-
-        Entry(String name, Object obj) {
-            this.name = name;
-            this.obj = obj;
-        }
-    }
-
-    @Override
-    public Object[] getElements(Object inputElement) {
-        if (inputElement != context)
-            return null;
-        return getChildren(new Entry("Context", inputElement));
-    }
-
-    @Override
-    public Object[] getChildren(Object parentElement) {
-        if (!(parentElement instanceof Entry))
-            return null;
-        Entry entry = (Entry) parentElement;
-        ArrayList<Object> children = new ArrayList<Object>();
-        if (entry.obj == context.serverState.enableDisables) {
-            for (int i = 0; i < context.serverState.enableDisables.size(); i++) {
-                final int key = context.serverState.enableDisables.keyAt(i);
-                final int value = context.serverState.enableDisables.valueAt(i);
-                children.add(GLEnum.valueOf(key).name() + " = " + value);
-            }
-        } else if (entry.obj == context.serverState.integers) {
-            for (int i = 0; i < context.serverState.integers.size(); i++) {
-                final int key = context.serverState.integers.keyAt(i);
-                final Message val = context.serverState.integers.valueAt(i);
-                if (val != null)
-                    children.add(GLEnum.valueOf(key).name() + " : " +
-                            MessageFormatter.format(val, false));
-                else
-                    children.add(GLEnum.valueOf(key).name() + " : default");
-            }
-        } else if (entry.obj == context.serverState.lastSetter) {
-            for (int i = 0; i < context.serverState.lastSetter.size(); i++) {
-                final int key = context.serverState.lastSetter.keyAt(i);
-                final Message msg = context.serverState.lastSetter.valueAt(i);
-                if (msg == null)
-                    children.add(Function.valueOf(key).name() + " : default");
-                else
-                    children.add(Function.valueOf(key).name() + " : "
-                            + MessageFormatter.format(msg, false));
-            }
-        } else if (entry.obj instanceof SparseArray) {
-            SparseArray<?> sa = (SparseArray<?>) entry.obj;
-            for (int i = 0; i < sa.size(); i++)
-                children.add(new Entry("[" + sa.keyAt(i) + "]", sa.valueAt(i)));
-        } else if (entry.obj instanceof Map) {
-            Set<?> set = ((Map<?, ?>) entry.obj).entrySet();
-            for (Object o : set) {
-                Map.Entry e = (Map.Entry) o;
-                children.add(new Entry(e.getKey().toString(), e.getValue()));
-            }
-        } else if (entry.obj instanceof SparseIntArray) {
-            SparseIntArray sa = (SparseIntArray) entry.obj;
-            for (int i = 0; i < sa.size(); i++)
-                children.add("[" + sa.keyAt(i) + "] = " + sa.valueAt(i));
-        } else if (entry.obj instanceof Collection) {
-            Collection<?> collection = (Collection<?>) entry.obj;
-            for (Object o : collection)
-                children.add(new Entry("[?]", o));
-        } else if (entry.obj.getClass().isArray()) {
-            for (int i = 0; i < Array.getLength(entry.obj); i++)
-                children.add(new Entry("[" + i + "]", Array.get(entry.obj, i)));
-        } else {
-            Field[] fields = entry.obj.getClass().getFields();
-            for (Field f : fields) {
-                try {
-                    children.add(new Entry(f.getName(), f.get(entry.obj)));
-                } catch (IllegalArgumentException e) {
-                    e.printStackTrace();
-                } catch (IllegalAccessException e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-        return children.toArray();
-    }
-
-    @Override
-    public Object getParent(Object element) {
-        return null;
-    }
-
-    @Override
-    public boolean hasChildren(Object element) {
-        if (element == null)
-            return false;
-        if (!(element instanceof Entry))
-            return false;
-        Object obj = ((Entry) element).obj;
-        if (obj == null)
-            return false;
-        if (obj instanceof SparseArray)
-            return ((SparseArray<?>) obj).size() > 0;
-        else if (obj instanceof SparseIntArray)
-            return ((SparseIntArray) obj).size() > 0;
-        else if (obj instanceof Collection)
-            return ((Collection<?>) obj).size() > 0;
-        else if (obj instanceof Map)
-            return ((Map<?, ?>) obj).size() > 0;
-        else if (obj.getClass().isArray())
-            return Array.getLength(obj) > 0;
-        else if (obj instanceof Message)
-            return false;
-        else if (isPrimitive(obj))
-            return false;
-        else if (obj.getClass().equals(String.class))
-            return false;
-        else if (obj.getClass().equals(Message.class))
-            return false;
-        else if (obj instanceof GLEnum)
-            return false;
-        return obj.getClass().getFields().length > 0;
-    }
-
-    static boolean isPrimitive(final Object obj) {
-        final Class<? extends Object> c = obj.getClass();
-        if (c.isPrimitive())
-            return true;
-        if (c == Integer.class)
-            return true;
-        if (c == Boolean.class)
-            return true;
-        if (c == Float.class)
-            return true;
-        if (c == Short.class)
-            return true;
-        return false;
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/DebuggerMessage.java b/tools/glesv2debugger/src/com/android/glesv2debugger/DebuggerMessage.java
deleted file mode 100644
index 94133f5..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/DebuggerMessage.java
+++ /dev/null
@@ -1,1713 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: debugger_message.proto
-
-package com.android.glesv2debugger;
-
-public final class DebuggerMessage {
-  private DebuggerMessage() {}
-  public static void registerAllExtensions(
-      com.google.protobuf.ExtensionRegistryLite registry) {
-  }
-  public static final class Message extends
-      com.google.protobuf.GeneratedMessageLite {
-    // Use Message.newBuilder() to construct.
-    private Message() {
-      initFields();
-    }
-    private Message(boolean noInit) {}
-    
-    private static final Message defaultInstance;
-    public static Message getDefaultInstance() {
-      return defaultInstance;
-    }
-    
-    public Message getDefaultInstanceForType() {
-      return defaultInstance;
-    }
-    
-    public enum Function
-        implements com.google.protobuf.Internal.EnumLite {
-      glActiveTexture(0, 0),
-      glAttachShader(1, 1),
-      glBindAttribLocation(2, 2),
-      glBindBuffer(3, 3),
-      glBindFramebuffer(4, 4),
-      glBindRenderbuffer(5, 5),
-      glBindTexture(6, 6),
-      glBlendColor(7, 7),
-      glBlendEquation(8, 8),
-      glBlendEquationSeparate(9, 9),
-      glBlendFunc(10, 10),
-      glBlendFuncSeparate(11, 11),
-      glBufferData(12, 12),
-      glBufferSubData(13, 13),
-      glCheckFramebufferStatus(14, 14),
-      glClear(15, 15),
-      glClearColor(16, 16),
-      glClearDepthf(17, 17),
-      glClearStencil(18, 18),
-      glColorMask(19, 19),
-      glCompileShader(20, 20),
-      glCompressedTexImage2D(21, 21),
-      glCompressedTexSubImage2D(22, 22),
-      glCopyTexImage2D(23, 23),
-      glCopyTexSubImage2D(24, 24),
-      glCreateProgram(25, 25),
-      glCreateShader(26, 26),
-      glCullFace(27, 27),
-      glDeleteBuffers(28, 28),
-      glDeleteFramebuffers(29, 29),
-      glDeleteProgram(30, 30),
-      glDeleteRenderbuffers(31, 31),
-      glDeleteShader(32, 32),
-      glDeleteTextures(33, 33),
-      glDepthFunc(34, 34),
-      glDepthMask(35, 35),
-      glDepthRangef(36, 36),
-      glDetachShader(37, 37),
-      glDisable(38, 38),
-      glDisableVertexAttribArray(39, 39),
-      glDrawArrays(40, 40),
-      glDrawElements(41, 41),
-      glEnable(42, 42),
-      glEnableVertexAttribArray(43, 43),
-      glFinish(44, 44),
-      glFlush(45, 45),
-      glFramebufferRenderbuffer(46, 46),
-      glFramebufferTexture2D(47, 47),
-      glFrontFace(48, 48),
-      glGenBuffers(49, 49),
-      glGenerateMipmap(50, 50),
-      glGenFramebuffers(51, 51),
-      glGenRenderbuffers(52, 52),
-      glGenTextures(53, 53),
-      glGetActiveAttrib(54, 54),
-      glGetActiveUniform(55, 55),
-      glGetAttachedShaders(56, 56),
-      glGetAttribLocation(57, 57),
-      glGetBooleanv(58, 58),
-      glGetBufferParameteriv(59, 59),
-      glGetError(60, 60),
-      glGetFloatv(61, 61),
-      glGetFramebufferAttachmentParameteriv(62, 62),
-      glGetIntegerv(63, 63),
-      glGetProgramiv(64, 64),
-      glGetProgramInfoLog(65, 65),
-      glGetRenderbufferParameteriv(66, 66),
-      glGetShaderiv(67, 67),
-      glGetShaderInfoLog(68, 68),
-      glGetShaderPrecisionFormat(69, 69),
-      glGetShaderSource(70, 70),
-      glGetString(71, 71),
-      glGetTexParameterfv(72, 72),
-      glGetTexParameteriv(73, 73),
-      glGetUniformfv(74, 74),
-      glGetUniformiv(75, 75),
-      glGetUniformLocation(76, 76),
-      glGetVertexAttribfv(77, 77),
-      glGetVertexAttribiv(78, 78),
-      glGetVertexAttribPointerv(79, 79),
-      glHint(80, 80),
-      glIsBuffer(81, 81),
-      glIsEnabled(82, 82),
-      glIsFramebuffer(83, 83),
-      glIsProgram(84, 84),
-      glIsRenderbuffer(85, 85),
-      glIsShader(86, 86),
-      glIsTexture(87, 87),
-      glLineWidth(88, 88),
-      glLinkProgram(89, 89),
-      glPixelStorei(90, 90),
-      glPolygonOffset(91, 91),
-      glReadPixels(92, 92),
-      glReleaseShaderCompiler(93, 93),
-      glRenderbufferStorage(94, 94),
-      glSampleCoverage(95, 95),
-      glScissor(96, 96),
-      glShaderBinary(97, 97),
-      glShaderSource(98, 98),
-      glStencilFunc(99, 99),
-      glStencilFuncSeparate(100, 100),
-      glStencilMask(101, 101),
-      glStencilMaskSeparate(102, 102),
-      glStencilOp(103, 103),
-      glStencilOpSeparate(104, 104),
-      glTexImage2D(105, 105),
-      glTexParameterf(106, 106),
-      glTexParameterfv(107, 107),
-      glTexParameteri(108, 108),
-      glTexParameteriv(109, 109),
-      glTexSubImage2D(110, 110),
-      glUniform1f(111, 111),
-      glUniform1fv(112, 112),
-      glUniform1i(113, 113),
-      glUniform1iv(114, 114),
-      glUniform2f(115, 115),
-      glUniform2fv(116, 116),
-      glUniform2i(117, 117),
-      glUniform2iv(118, 118),
-      glUniform3f(119, 119),
-      glUniform3fv(120, 120),
-      glUniform3i(121, 121),
-      glUniform3iv(122, 122),
-      glUniform4f(123, 123),
-      glUniform4fv(124, 124),
-      glUniform4i(125, 125),
-      glUniform4iv(126, 126),
-      glUniformMatrix2fv(127, 127),
-      glUniformMatrix3fv(128, 128),
-      glUniformMatrix4fv(129, 129),
-      glUseProgram(130, 130),
-      glValidateProgram(131, 131),
-      glVertexAttrib1f(132, 132),
-      glVertexAttrib1fv(133, 133),
-      glVertexAttrib2f(134, 134),
-      glVertexAttrib2fv(135, 135),
-      glVertexAttrib3f(136, 136),
-      glVertexAttrib3fv(137, 137),
-      glVertexAttrib4f(138, 138),
-      glVertexAttrib4fv(139, 139),
-      glVertexAttribPointer(140, 140),
-      glViewport(141, 141),
-      eglGetDisplay(142, 142),
-      eglInitialize(143, 143),
-      eglTerminate(144, 144),
-      eglGetConfigs(145, 145),
-      eglChooseConfig(146, 146),
-      eglGetConfigAttrib(147, 147),
-      eglCreateWindowSurface(148, 148),
-      eglCreatePixmapSurface(149, 149),
-      eglCreatePbufferSurface(150, 150),
-      eglDestroySurface(151, 151),
-      eglQuerySurface(152, 152),
-      eglCreateContext(153, 153),
-      eglDestroyContext(154, 154),
-      eglMakeCurrent(155, 155),
-      eglGetCurrentContext(156, 156),
-      eglGetCurrentSurface(157, 157),
-      eglGetCurrentDisplay(158, 158),
-      eglQueryContext(159, 159),
-      eglWaitGL(160, 160),
-      eglWaitNative(161, 161),
-      eglSwapBuffers(162, 162),
-      eglCopyBuffers(163, 163),
-      eglGetError(164, 164),
-      eglQueryString(165, 165),
-      eglGetProcAddress(166, 166),
-      eglSurfaceAttrib(167, 167),
-      eglBindTexImage(168, 168),
-      eglReleaseTexImage(169, 169),
-      eglSwapInterval(170, 170),
-      eglBindAPI(171, 171),
-      eglQueryAPI(172, 172),
-      eglWaitClient(173, 173),
-      eglReleaseThread(174, 174),
-      eglCreatePbufferFromClientBuffer(175, 175),
-      eglLockSurfaceKHR(176, 176),
-      eglUnlockSurfaceKHR(177, 177),
-      eglCreateImageKHR(178, 178),
-      eglDestroyImageKHR(179, 179),
-      eglCreateSyncKHR(180, 180),
-      eglDestroySyncKHR(181, 181),
-      eglClientWaitSyncKHR(182, 182),
-      eglGetSyncAttribKHR(183, 183),
-      eglSetSwapRectangleANDROID(184, 184),
-      eglGetRenderBufferANDROID(185, 185),
-      ACK(186, 186),
-      NEG(187, 187),
-      CONTINUE(188, 188),
-      SKIP(189, 189),
-      SETPROP(190, 190),
-      ;
-      
-      
-      public final int getNumber() { return value; }
-      
-      public static Function valueOf(int value) {
-        switch (value) {
-          case 0: return glActiveTexture;
-          case 1: return glAttachShader;
-          case 2: return glBindAttribLocation;
-          case 3: return glBindBuffer;
-          case 4: return glBindFramebuffer;
-          case 5: return glBindRenderbuffer;
-          case 6: return glBindTexture;
-          case 7: return glBlendColor;
-          case 8: return glBlendEquation;
-          case 9: return glBlendEquationSeparate;
-          case 10: return glBlendFunc;
-          case 11: return glBlendFuncSeparate;
-          case 12: return glBufferData;
-          case 13: return glBufferSubData;
-          case 14: return glCheckFramebufferStatus;
-          case 15: return glClear;
-          case 16: return glClearColor;
-          case 17: return glClearDepthf;
-          case 18: return glClearStencil;
-          case 19: return glColorMask;
-          case 20: return glCompileShader;
-          case 21: return glCompressedTexImage2D;
-          case 22: return glCompressedTexSubImage2D;
-          case 23: return glCopyTexImage2D;
-          case 24: return glCopyTexSubImage2D;
-          case 25: return glCreateProgram;
-          case 26: return glCreateShader;
-          case 27: return glCullFace;
-          case 28: return glDeleteBuffers;
-          case 29: return glDeleteFramebuffers;
-          case 30: return glDeleteProgram;
-          case 31: return glDeleteRenderbuffers;
-          case 32: return glDeleteShader;
-          case 33: return glDeleteTextures;
-          case 34: return glDepthFunc;
-          case 35: return glDepthMask;
-          case 36: return glDepthRangef;
-          case 37: return glDetachShader;
-          case 38: return glDisable;
-          case 39: return glDisableVertexAttribArray;
-          case 40: return glDrawArrays;
-          case 41: return glDrawElements;
-          case 42: return glEnable;
-          case 43: return glEnableVertexAttribArray;
-          case 44: return glFinish;
-          case 45: return glFlush;
-          case 46: return glFramebufferRenderbuffer;
-          case 47: return glFramebufferTexture2D;
-          case 48: return glFrontFace;
-          case 49: return glGenBuffers;
-          case 50: return glGenerateMipmap;
-          case 51: return glGenFramebuffers;
-          case 52: return glGenRenderbuffers;
-          case 53: return glGenTextures;
-          case 54: return glGetActiveAttrib;
-          case 55: return glGetActiveUniform;
-          case 56: return glGetAttachedShaders;
-          case 57: return glGetAttribLocation;
-          case 58: return glGetBooleanv;
-          case 59: return glGetBufferParameteriv;
-          case 60: return glGetError;
-          case 61: return glGetFloatv;
-          case 62: return glGetFramebufferAttachmentParameteriv;
-          case 63: return glGetIntegerv;
-          case 64: return glGetProgramiv;
-          case 65: return glGetProgramInfoLog;
-          case 66: return glGetRenderbufferParameteriv;
-          case 67: return glGetShaderiv;
-          case 68: return glGetShaderInfoLog;
-          case 69: return glGetShaderPrecisionFormat;
-          case 70: return glGetShaderSource;
-          case 71: return glGetString;
-          case 72: return glGetTexParameterfv;
-          case 73: return glGetTexParameteriv;
-          case 74: return glGetUniformfv;
-          case 75: return glGetUniformiv;
-          case 76: return glGetUniformLocation;
-          case 77: return glGetVertexAttribfv;
-          case 78: return glGetVertexAttribiv;
-          case 79: return glGetVertexAttribPointerv;
-          case 80: return glHint;
-          case 81: return glIsBuffer;
-          case 82: return glIsEnabled;
-          case 83: return glIsFramebuffer;
-          case 84: return glIsProgram;
-          case 85: return glIsRenderbuffer;
-          case 86: return glIsShader;
-          case 87: return glIsTexture;
-          case 88: return glLineWidth;
-          case 89: return glLinkProgram;
-          case 90: return glPixelStorei;
-          case 91: return glPolygonOffset;
-          case 92: return glReadPixels;
-          case 93: return glReleaseShaderCompiler;
-          case 94: return glRenderbufferStorage;
-          case 95: return glSampleCoverage;
-          case 96: return glScissor;
-          case 97: return glShaderBinary;
-          case 98: return glShaderSource;
-          case 99: return glStencilFunc;
-          case 100: return glStencilFuncSeparate;
-          case 101: return glStencilMask;
-          case 102: return glStencilMaskSeparate;
-          case 103: return glStencilOp;
-          case 104: return glStencilOpSeparate;
-          case 105: return glTexImage2D;
-          case 106: return glTexParameterf;
-          case 107: return glTexParameterfv;
-          case 108: return glTexParameteri;
-          case 109: return glTexParameteriv;
-          case 110: return glTexSubImage2D;
-          case 111: return glUniform1f;
-          case 112: return glUniform1fv;
-          case 113: return glUniform1i;
-          case 114: return glUniform1iv;
-          case 115: return glUniform2f;
-          case 116: return glUniform2fv;
-          case 117: return glUniform2i;
-          case 118: return glUniform2iv;
-          case 119: return glUniform3f;
-          case 120: return glUniform3fv;
-          case 121: return glUniform3i;
-          case 122: return glUniform3iv;
-          case 123: return glUniform4f;
-          case 124: return glUniform4fv;
-          case 125: return glUniform4i;
-          case 126: return glUniform4iv;
-          case 127: return glUniformMatrix2fv;
-          case 128: return glUniformMatrix3fv;
-          case 129: return glUniformMatrix4fv;
-          case 130: return glUseProgram;
-          case 131: return glValidateProgram;
-          case 132: return glVertexAttrib1f;
-          case 133: return glVertexAttrib1fv;
-          case 134: return glVertexAttrib2f;
-          case 135: return glVertexAttrib2fv;
-          case 136: return glVertexAttrib3f;
-          case 137: return glVertexAttrib3fv;
-          case 138: return glVertexAttrib4f;
-          case 139: return glVertexAttrib4fv;
-          case 140: return glVertexAttribPointer;
-          case 141: return glViewport;
-          case 142: return eglGetDisplay;
-          case 143: return eglInitialize;
-          case 144: return eglTerminate;
-          case 145: return eglGetConfigs;
-          case 146: return eglChooseConfig;
-          case 147: return eglGetConfigAttrib;
-          case 148: return eglCreateWindowSurface;
-          case 149: return eglCreatePixmapSurface;
-          case 150: return eglCreatePbufferSurface;
-          case 151: return eglDestroySurface;
-          case 152: return eglQuerySurface;
-          case 153: return eglCreateContext;
-          case 154: return eglDestroyContext;
-          case 155: return eglMakeCurrent;
-          case 156: return eglGetCurrentContext;
-          case 157: return eglGetCurrentSurface;
-          case 158: return eglGetCurrentDisplay;
-          case 159: return eglQueryContext;
-          case 160: return eglWaitGL;
-          case 161: return eglWaitNative;
-          case 162: return eglSwapBuffers;
-          case 163: return eglCopyBuffers;
-          case 164: return eglGetError;
-          case 165: return eglQueryString;
-          case 166: return eglGetProcAddress;
-          case 167: return eglSurfaceAttrib;
-          case 168: return eglBindTexImage;
-          case 169: return eglReleaseTexImage;
-          case 170: return eglSwapInterval;
-          case 171: return eglBindAPI;
-          case 172: return eglQueryAPI;
-          case 173: return eglWaitClient;
-          case 174: return eglReleaseThread;
-          case 175: return eglCreatePbufferFromClientBuffer;
-          case 176: return eglLockSurfaceKHR;
-          case 177: return eglUnlockSurfaceKHR;
-          case 178: return eglCreateImageKHR;
-          case 179: return eglDestroyImageKHR;
-          case 180: return eglCreateSyncKHR;
-          case 181: return eglDestroySyncKHR;
-          case 182: return eglClientWaitSyncKHR;
-          case 183: return eglGetSyncAttribKHR;
-          case 184: return eglSetSwapRectangleANDROID;
-          case 185: return eglGetRenderBufferANDROID;
-          case 186: return ACK;
-          case 187: return NEG;
-          case 188: return CONTINUE;
-          case 189: return SKIP;
-          case 190: return SETPROP;
-          default: return null;
-        }
-      }
-      
-      public static com.google.protobuf.Internal.EnumLiteMap<Function>
-          internalGetValueMap() {
-        return internalValueMap;
-      }
-      private static com.google.protobuf.Internal.EnumLiteMap<Function>
-          internalValueMap =
-            new com.google.protobuf.Internal.EnumLiteMap<Function>() {
-              public Function findValueByNumber(int number) {
-                return Function.valueOf(number)
-      ;        }
-            };
-      
-      private final int index;
-      private final int value;
-      private Function(int index, int value) {
-        this.index = index;
-        this.value = value;
-      }
-      
-      // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.Function)
-    }
-    
-    public enum Type
-        implements com.google.protobuf.Internal.EnumLite {
-      BeforeCall(0, 0),
-      AfterCall(1, 1),
-      AfterGeneratedCall(2, 2),
-      Response(3, 3),
-      CompleteCall(4, 4),
-      ;
-      
-      
-      public final int getNumber() { return value; }
-      
-      public static Type valueOf(int value) {
-        switch (value) {
-          case 0: return BeforeCall;
-          case 1: return AfterCall;
-          case 2: return AfterGeneratedCall;
-          case 3: return Response;
-          case 4: return CompleteCall;
-          default: return null;
-        }
-      }
-      
-      public static com.google.protobuf.Internal.EnumLiteMap<Type>
-          internalGetValueMap() {
-        return internalValueMap;
-      }
-      private static com.google.protobuf.Internal.EnumLiteMap<Type>
-          internalValueMap =
-            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
-              public Type findValueByNumber(int number) {
-                return Type.valueOf(number)
-      ;        }
-            };
-      
-      private final int index;
-      private final int value;
-      private Type(int index, int value) {
-        this.index = index;
-        this.value = value;
-      }
-      
-      // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.Type)
-    }
-    
-    public enum DataType
-        implements com.google.protobuf.Internal.EnumLite {
-      ReferencedImage(0, 0),
-      NonreferencedImage(1, 1),
-      ;
-      
-      
-      public final int getNumber() { return value; }
-      
-      public static DataType valueOf(int value) {
-        switch (value) {
-          case 0: return ReferencedImage;
-          case 1: return NonreferencedImage;
-          default: return null;
-        }
-      }
-      
-      public static com.google.protobuf.Internal.EnumLiteMap<DataType>
-          internalGetValueMap() {
-        return internalValueMap;
-      }
-      private static com.google.protobuf.Internal.EnumLiteMap<DataType>
-          internalValueMap =
-            new com.google.protobuf.Internal.EnumLiteMap<DataType>() {
-              public DataType findValueByNumber(int number) {
-                return DataType.valueOf(number)
-      ;        }
-            };
-      
-      private final int index;
-      private final int value;
-      private DataType(int index, int value) {
-        this.index = index;
-        this.value = value;
-      }
-      
-      // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.DataType)
-    }
-    
-    public enum Prop
-        implements com.google.protobuf.Internal.EnumLite {
-      CaptureDraw(0, 0),
-      TimeMode(1, 1),
-      ExpectResponse(2, 2),
-      CaptureSwap(3, 3),
-      GLConstant(4, 4),
-      ;
-      
-      
-      public final int getNumber() { return value; }
-      
-      public static Prop valueOf(int value) {
-        switch (value) {
-          case 0: return CaptureDraw;
-          case 1: return TimeMode;
-          case 2: return ExpectResponse;
-          case 3: return CaptureSwap;
-          case 4: return GLConstant;
-          default: return null;
-        }
-      }
-      
-      public static com.google.protobuf.Internal.EnumLiteMap<Prop>
-          internalGetValueMap() {
-        return internalValueMap;
-      }
-      private static com.google.protobuf.Internal.EnumLiteMap<Prop>
-          internalValueMap =
-            new com.google.protobuf.Internal.EnumLiteMap<Prop>() {
-              public Prop findValueByNumber(int number) {
-                return Prop.valueOf(number)
-      ;        }
-            };
-      
-      private final int index;
-      private final int value;
-      private Prop(int index, int value) {
-        this.index = index;
-        this.value = value;
-      }
-      
-      // @@protoc_insertion_point(enum_scope:com.android.glesv2debugger.Message.Prop)
-    }
-    
-    // required int32 context_id = 1;
-    public static final int CONTEXT_ID_FIELD_NUMBER = 1;
-    private boolean hasContextId;
-    private int contextId_ = 0;
-    public boolean hasContextId() { return hasContextId; }
-    public int getContextId() { return contextId_; }
-    
-    // required .com.android.glesv2debugger.Message.Function function = 2 [default = NEG];
-    public static final int FUNCTION_FIELD_NUMBER = 2;
-    private boolean hasFunction;
-    private com.android.glesv2debugger.DebuggerMessage.Message.Function function_;
-    public boolean hasFunction() { return hasFunction; }
-    public com.android.glesv2debugger.DebuggerMessage.Message.Function getFunction() { return function_; }
-    
-    // required .com.android.glesv2debugger.Message.Type type = 3;
-    public static final int TYPE_FIELD_NUMBER = 3;
-    private boolean hasType;
-    private com.android.glesv2debugger.DebuggerMessage.Message.Type type_;
-    public boolean hasType() { return hasType; }
-    public com.android.glesv2debugger.DebuggerMessage.Message.Type getType() { return type_; }
-    
-    // required bool expect_response = 4;
-    public static final int EXPECT_RESPONSE_FIELD_NUMBER = 4;
-    private boolean hasExpectResponse;
-    private boolean expectResponse_ = false;
-    public boolean hasExpectResponse() { return hasExpectResponse; }
-    public boolean getExpectResponse() { return expectResponse_; }
-    
-    // optional int32 ret = 5;
-    public static final int RET_FIELD_NUMBER = 5;
-    private boolean hasRet;
-    private int ret_ = 0;
-    public boolean hasRet() { return hasRet; }
-    public int getRet() { return ret_; }
-    
-    // optional int32 arg0 = 6;
-    public static final int ARG0_FIELD_NUMBER = 6;
-    private boolean hasArg0;
-    private int arg0_ = 0;
-    public boolean hasArg0() { return hasArg0; }
-    public int getArg0() { return arg0_; }
-    
-    // optional int32 arg1 = 7;
-    public static final int ARG1_FIELD_NUMBER = 7;
-    private boolean hasArg1;
-    private int arg1_ = 0;
-    public boolean hasArg1() { return hasArg1; }
-    public int getArg1() { return arg1_; }
-    
-    // optional int32 arg2 = 8;
-    public static final int ARG2_FIELD_NUMBER = 8;
-    private boolean hasArg2;
-    private int arg2_ = 0;
-    public boolean hasArg2() { return hasArg2; }
-    public int getArg2() { return arg2_; }
-    
-    // optional int32 arg3 = 9;
-    public static final int ARG3_FIELD_NUMBER = 9;
-    private boolean hasArg3;
-    private int arg3_ = 0;
-    public boolean hasArg3() { return hasArg3; }
-    public int getArg3() { return arg3_; }
-    
-    // optional int32 arg4 = 16;
-    public static final int ARG4_FIELD_NUMBER = 16;
-    private boolean hasArg4;
-    private int arg4_ = 0;
-    public boolean hasArg4() { return hasArg4; }
-    public int getArg4() { return arg4_; }
-    
-    // optional int32 arg5 = 17;
-    public static final int ARG5_FIELD_NUMBER = 17;
-    private boolean hasArg5;
-    private int arg5_ = 0;
-    public boolean hasArg5() { return hasArg5; }
-    public int getArg5() { return arg5_; }
-    
-    // optional int32 arg6 = 18;
-    public static final int ARG6_FIELD_NUMBER = 18;
-    private boolean hasArg6;
-    private int arg6_ = 0;
-    public boolean hasArg6() { return hasArg6; }
-    public int getArg6() { return arg6_; }
-    
-    // optional int32 arg7 = 19;
-    public static final int ARG7_FIELD_NUMBER = 19;
-    private boolean hasArg7;
-    private int arg7_ = 0;
-    public boolean hasArg7() { return hasArg7; }
-    public int getArg7() { return arg7_; }
-    
-    // optional int32 arg8 = 20;
-    public static final int ARG8_FIELD_NUMBER = 20;
-    private boolean hasArg8;
-    private int arg8_ = 0;
-    public boolean hasArg8() { return hasArg8; }
-    public int getArg8() { return arg8_; }
-    
-    // optional bytes data = 10;
-    public static final int DATA_FIELD_NUMBER = 10;
-    private boolean hasData;
-    private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
-    public boolean hasData() { return hasData; }
-    public com.google.protobuf.ByteString getData() { return data_; }
-    
-    // optional .com.android.glesv2debugger.Message.DataType data_type = 23;
-    public static final int DATA_TYPE_FIELD_NUMBER = 23;
-    private boolean hasDataType;
-    private com.android.glesv2debugger.DebuggerMessage.Message.DataType dataType_;
-    public boolean hasDataType() { return hasDataType; }
-    public com.android.glesv2debugger.DebuggerMessage.Message.DataType getDataType() { return dataType_; }
-    
-    // optional int32 pixel_format = 24;
-    public static final int PIXEL_FORMAT_FIELD_NUMBER = 24;
-    private boolean hasPixelFormat;
-    private int pixelFormat_ = 0;
-    public boolean hasPixelFormat() { return hasPixelFormat; }
-    public int getPixelFormat() { return pixelFormat_; }
-    
-    // optional int32 pixel_type = 25;
-    public static final int PIXEL_TYPE_FIELD_NUMBER = 25;
-    private boolean hasPixelType;
-    private int pixelType_ = 0;
-    public boolean hasPixelType() { return hasPixelType; }
-    public int getPixelType() { return pixelType_; }
-    
-    // optional int32 image_width = 26;
-    public static final int IMAGE_WIDTH_FIELD_NUMBER = 26;
-    private boolean hasImageWidth;
-    private int imageWidth_ = 0;
-    public boolean hasImageWidth() { return hasImageWidth; }
-    public int getImageWidth() { return imageWidth_; }
-    
-    // optional int32 image_height = 27;
-    public static final int IMAGE_HEIGHT_FIELD_NUMBER = 27;
-    private boolean hasImageHeight;
-    private int imageHeight_ = 0;
-    public boolean hasImageHeight() { return hasImageHeight; }
-    public int getImageHeight() { return imageHeight_; }
-    
-    // optional float time = 11;
-    public static final int TIME_FIELD_NUMBER = 11;
-    private boolean hasTime;
-    private float time_ = 0F;
-    public boolean hasTime() { return hasTime; }
-    public float getTime() { return time_; }
-    
-    // optional .com.android.glesv2debugger.Message.Prop prop = 21;
-    public static final int PROP_FIELD_NUMBER = 21;
-    private boolean hasProp;
-    private com.android.glesv2debugger.DebuggerMessage.Message.Prop prop_;
-    public boolean hasProp() { return hasProp; }
-    public com.android.glesv2debugger.DebuggerMessage.Message.Prop getProp() { return prop_; }
-    
-    // optional float clock = 22;
-    public static final int CLOCK_FIELD_NUMBER = 22;
-    private boolean hasClock;
-    private float clock_ = 0F;
-    public boolean hasClock() { return hasClock; }
-    public float getClock() { return clock_; }
-    
-    private void initFields() {
-      function_ = com.android.glesv2debugger.DebuggerMessage.Message.Function.NEG;
-      type_ = com.android.glesv2debugger.DebuggerMessage.Message.Type.BeforeCall;
-      dataType_ = com.android.glesv2debugger.DebuggerMessage.Message.DataType.ReferencedImage;
-      prop_ = com.android.glesv2debugger.DebuggerMessage.Message.Prop.CaptureDraw;
-    }
-    public final boolean isInitialized() {
-      if (!hasContextId) return false;
-      if (!hasFunction) return false;
-      if (!hasType) return false;
-      if (!hasExpectResponse) return false;
-      return true;
-    }
-    
-    public void writeTo(com.google.protobuf.CodedOutputStream output)
-                        throws java.io.IOException {
-      getSerializedSize();
-      if (hasContextId()) {
-        output.writeInt32(1, getContextId());
-      }
-      if (hasFunction()) {
-        output.writeEnum(2, getFunction().getNumber());
-      }
-      if (hasType()) {
-        output.writeEnum(3, getType().getNumber());
-      }
-      if (hasExpectResponse()) {
-        output.writeBool(4, getExpectResponse());
-      }
-      if (hasRet()) {
-        output.writeInt32(5, getRet());
-      }
-      if (hasArg0()) {
-        output.writeInt32(6, getArg0());
-      }
-      if (hasArg1()) {
-        output.writeInt32(7, getArg1());
-      }
-      if (hasArg2()) {
-        output.writeInt32(8, getArg2());
-      }
-      if (hasArg3()) {
-        output.writeInt32(9, getArg3());
-      }
-      if (hasData()) {
-        output.writeBytes(10, getData());
-      }
-      if (hasTime()) {
-        output.writeFloat(11, getTime());
-      }
-      if (hasArg4()) {
-        output.writeInt32(16, getArg4());
-      }
-      if (hasArg5()) {
-        output.writeInt32(17, getArg5());
-      }
-      if (hasArg6()) {
-        output.writeInt32(18, getArg6());
-      }
-      if (hasArg7()) {
-        output.writeInt32(19, getArg7());
-      }
-      if (hasArg8()) {
-        output.writeInt32(20, getArg8());
-      }
-      if (hasProp()) {
-        output.writeEnum(21, getProp().getNumber());
-      }
-      if (hasClock()) {
-        output.writeFloat(22, getClock());
-      }
-      if (hasDataType()) {
-        output.writeEnum(23, getDataType().getNumber());
-      }
-      if (hasPixelFormat()) {
-        output.writeInt32(24, getPixelFormat());
-      }
-      if (hasPixelType()) {
-        output.writeInt32(25, getPixelType());
-      }
-      if (hasImageWidth()) {
-        output.writeInt32(26, getImageWidth());
-      }
-      if (hasImageHeight()) {
-        output.writeInt32(27, getImageHeight());
-      }
-    }
-    
-    private int memoizedSerializedSize = -1;
-    public int getSerializedSize() {
-      int size = memoizedSerializedSize;
-      if (size != -1) return size;
-    
-      size = 0;
-      if (hasContextId()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(1, getContextId());
-      }
-      if (hasFunction()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(2, getFunction().getNumber());
-      }
-      if (hasType()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(3, getType().getNumber());
-      }
-      if (hasExpectResponse()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBoolSize(4, getExpectResponse());
-      }
-      if (hasRet()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(5, getRet());
-      }
-      if (hasArg0()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(6, getArg0());
-      }
-      if (hasArg1()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(7, getArg1());
-      }
-      if (hasArg2()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(8, getArg2());
-      }
-      if (hasArg3()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(9, getArg3());
-      }
-      if (hasData()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(10, getData());
-      }
-      if (hasTime()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(11, getTime());
-      }
-      if (hasArg4()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(16, getArg4());
-      }
-      if (hasArg5()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(17, getArg5());
-      }
-      if (hasArg6()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(18, getArg6());
-      }
-      if (hasArg7()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(19, getArg7());
-      }
-      if (hasArg8()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(20, getArg8());
-      }
-      if (hasProp()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(21, getProp().getNumber());
-      }
-      if (hasClock()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeFloatSize(22, getClock());
-      }
-      if (hasDataType()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeEnumSize(23, getDataType().getNumber());
-      }
-      if (hasPixelFormat()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(24, getPixelFormat());
-      }
-      if (hasPixelType()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(25, getPixelType());
-      }
-      if (hasImageWidth()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(26, getImageWidth());
-      }
-      if (hasImageHeight()) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeInt32Size(27, getImageHeight());
-      }
-      memoizedSerializedSize = size;
-      return size;
-    }
-    
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
-        com.google.protobuf.ByteString data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
-        com.google.protobuf.ByteString data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(byte[] data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data).buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
-        byte[] data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return newBuilder().mergeFrom(data, extensionRegistry)
-               .buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseDelimitedFrom(java.io.InputStream input)
-        throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseDelimitedFrom(
-        java.io.InputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      Builder builder = newBuilder();
-      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
-        return builder.buildParsed();
-      } else {
-        return null;
-      }
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
-        com.google.protobuf.CodedInputStream input)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input).buildParsed();
-    }
-    public static com.android.glesv2debugger.DebuggerMessage.Message parseFrom(
-        com.google.protobuf.CodedInputStream input,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws java.io.IOException {
-      return newBuilder().mergeFrom(input, extensionRegistry)
-               .buildParsed();
-    }
-    
-    public static Builder newBuilder() { return Builder.create(); }
-    public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(com.android.glesv2debugger.DebuggerMessage.Message prototype) {
-      return newBuilder().mergeFrom(prototype);
-    }
-    public Builder toBuilder() { return newBuilder(this); }
-    
-    public static final class Builder extends
-        com.google.protobuf.GeneratedMessageLite.Builder<
-          com.android.glesv2debugger.DebuggerMessage.Message, Builder> {
-      private com.android.glesv2debugger.DebuggerMessage.Message result;
-      
-      // Construct using com.android.glesv2debugger.DebuggerMessage.Message.newBuilder()
-      private Builder() {}
-      
-      private static Builder create() {
-        Builder builder = new Builder();
-        builder.result = new com.android.glesv2debugger.DebuggerMessage.Message();
-        return builder;
-      }
-      
-      protected com.android.glesv2debugger.DebuggerMessage.Message internalGetResult() {
-        return result;
-      }
-      
-      public Builder clear() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "Cannot call clear() after build().");
-        }
-        result = new com.android.glesv2debugger.DebuggerMessage.Message();
-        return this;
-      }
-      
-      public Builder clone() {
-        return create().mergeFrom(result);
-      }
-      
-      public com.android.glesv2debugger.DebuggerMessage.Message getDefaultInstanceForType() {
-        return com.android.glesv2debugger.DebuggerMessage.Message.getDefaultInstance();
-      }
-      
-      public boolean isInitialized() {
-        return result.isInitialized();
-      }
-      public com.android.glesv2debugger.DebuggerMessage.Message build() {
-        if (result != null && !isInitialized()) {
-          throw newUninitializedMessageException(result);
-        }
-        return buildPartial();
-      }
-      
-      private com.android.glesv2debugger.DebuggerMessage.Message buildParsed()
-          throws com.google.protobuf.InvalidProtocolBufferException {
-        if (!isInitialized()) {
-          throw newUninitializedMessageException(
-            result).asInvalidProtocolBufferException();
-        }
-        return buildPartial();
-      }
-      
-      public com.android.glesv2debugger.DebuggerMessage.Message buildPartial() {
-        if (result == null) {
-          throw new IllegalStateException(
-            "build() has already been called on this Builder.");
-        }
-        com.android.glesv2debugger.DebuggerMessage.Message returnMe = result;
-        result = null;
-        return returnMe;
-      }
-      
-      public Builder mergeFrom(com.android.glesv2debugger.DebuggerMessage.Message other) {
-        if (other == com.android.glesv2debugger.DebuggerMessage.Message.getDefaultInstance()) return this;
-        if (other.hasContextId()) {
-          setContextId(other.getContextId());
-        }
-        if (other.hasFunction()) {
-          setFunction(other.getFunction());
-        }
-        if (other.hasType()) {
-          setType(other.getType());
-        }
-        if (other.hasExpectResponse()) {
-          setExpectResponse(other.getExpectResponse());
-        }
-        if (other.hasRet()) {
-          setRet(other.getRet());
-        }
-        if (other.hasArg0()) {
-          setArg0(other.getArg0());
-        }
-        if (other.hasArg1()) {
-          setArg1(other.getArg1());
-        }
-        if (other.hasArg2()) {
-          setArg2(other.getArg2());
-        }
-        if (other.hasArg3()) {
-          setArg3(other.getArg3());
-        }
-        if (other.hasArg4()) {
-          setArg4(other.getArg4());
-        }
-        if (other.hasArg5()) {
-          setArg5(other.getArg5());
-        }
-        if (other.hasArg6()) {
-          setArg6(other.getArg6());
-        }
-        if (other.hasArg7()) {
-          setArg7(other.getArg7());
-        }
-        if (other.hasArg8()) {
-          setArg8(other.getArg8());
-        }
-        if (other.hasData()) {
-          setData(other.getData());
-        }
-        if (other.hasDataType()) {
-          setDataType(other.getDataType());
-        }
-        if (other.hasPixelFormat()) {
-          setPixelFormat(other.getPixelFormat());
-        }
-        if (other.hasPixelType()) {
-          setPixelType(other.getPixelType());
-        }
-        if (other.hasImageWidth()) {
-          setImageWidth(other.getImageWidth());
-        }
-        if (other.hasImageHeight()) {
-          setImageHeight(other.getImageHeight());
-        }
-        if (other.hasTime()) {
-          setTime(other.getTime());
-        }
-        if (other.hasProp()) {
-          setProp(other.getProp());
-        }
-        if (other.hasClock()) {
-          setClock(other.getClock());
-        }
-        return this;
-      }
-      
-      public Builder mergeFrom(
-          com.google.protobuf.CodedInputStream input,
-          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-          throws java.io.IOException {
-        while (true) {
-          int tag = input.readTag();
-          switch (tag) {
-            case 0:
-              return this;
-            default: {
-              if (!parseUnknownField(input, extensionRegistry, tag)) {
-                return this;
-              }
-              break;
-            }
-            case 8: {
-              setContextId(input.readInt32());
-              break;
-            }
-            case 16: {
-              int rawValue = input.readEnum();
-              com.android.glesv2debugger.DebuggerMessage.Message.Function value = com.android.glesv2debugger.DebuggerMessage.Message.Function.valueOf(rawValue);
-              if (value != null) {
-                setFunction(value);
-              }
-              break;
-            }
-            case 24: {
-              int rawValue = input.readEnum();
-              com.android.glesv2debugger.DebuggerMessage.Message.Type value = com.android.glesv2debugger.DebuggerMessage.Message.Type.valueOf(rawValue);
-              if (value != null) {
-                setType(value);
-              }
-              break;
-            }
-            case 32: {
-              setExpectResponse(input.readBool());
-              break;
-            }
-            case 40: {
-              setRet(input.readInt32());
-              break;
-            }
-            case 48: {
-              setArg0(input.readInt32());
-              break;
-            }
-            case 56: {
-              setArg1(input.readInt32());
-              break;
-            }
-            case 64: {
-              setArg2(input.readInt32());
-              break;
-            }
-            case 72: {
-              setArg3(input.readInt32());
-              break;
-            }
-            case 82: {
-              setData(input.readBytes());
-              break;
-            }
-            case 93: {
-              setTime(input.readFloat());
-              break;
-            }
-            case 128: {
-              setArg4(input.readInt32());
-              break;
-            }
-            case 136: {
-              setArg5(input.readInt32());
-              break;
-            }
-            case 144: {
-              setArg6(input.readInt32());
-              break;
-            }
-            case 152: {
-              setArg7(input.readInt32());
-              break;
-            }
-            case 160: {
-              setArg8(input.readInt32());
-              break;
-            }
-            case 168: {
-              int rawValue = input.readEnum();
-              com.android.glesv2debugger.DebuggerMessage.Message.Prop value = com.android.glesv2debugger.DebuggerMessage.Message.Prop.valueOf(rawValue);
-              if (value != null) {
-                setProp(value);
-              }
-              break;
-            }
-            case 181: {
-              setClock(input.readFloat());
-              break;
-            }
-            case 184: {
-              int rawValue = input.readEnum();
-              com.android.glesv2debugger.DebuggerMessage.Message.DataType value = com.android.glesv2debugger.DebuggerMessage.Message.DataType.valueOf(rawValue);
-              if (value != null) {
-                setDataType(value);
-              }
-              break;
-            }
-            case 192: {
-              setPixelFormat(input.readInt32());
-              break;
-            }
-            case 200: {
-              setPixelType(input.readInt32());
-              break;
-            }
-            case 208: {
-              setImageWidth(input.readInt32());
-              break;
-            }
-            case 216: {
-              setImageHeight(input.readInt32());
-              break;
-            }
-          }
-        }
-      }
-      
-      
-      // required int32 context_id = 1;
-      public boolean hasContextId() {
-        return result.hasContextId();
-      }
-      public int getContextId() {
-        return result.getContextId();
-      }
-      public Builder setContextId(int value) {
-        result.hasContextId = true;
-        result.contextId_ = value;
-        return this;
-      }
-      public Builder clearContextId() {
-        result.hasContextId = false;
-        result.contextId_ = 0;
-        return this;
-      }
-      
-      // required .com.android.glesv2debugger.Message.Function function = 2 [default = NEG];
-      public boolean hasFunction() {
-        return result.hasFunction();
-      }
-      public com.android.glesv2debugger.DebuggerMessage.Message.Function getFunction() {
-        return result.getFunction();
-      }
-      public Builder setFunction(com.android.glesv2debugger.DebuggerMessage.Message.Function value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        result.hasFunction = true;
-        result.function_ = value;
-        return this;
-      }
-      public Builder clearFunction() {
-        result.hasFunction = false;
-        result.function_ = com.android.glesv2debugger.DebuggerMessage.Message.Function.NEG;
-        return this;
-      }
-      
-      // required .com.android.glesv2debugger.Message.Type type = 3;
-      public boolean hasType() {
-        return result.hasType();
-      }
-      public com.android.glesv2debugger.DebuggerMessage.Message.Type getType() {
-        return result.getType();
-      }
-      public Builder setType(com.android.glesv2debugger.DebuggerMessage.Message.Type value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        result.hasType = true;
-        result.type_ = value;
-        return this;
-      }
-      public Builder clearType() {
-        result.hasType = false;
-        result.type_ = com.android.glesv2debugger.DebuggerMessage.Message.Type.BeforeCall;
-        return this;
-      }
-      
-      // required bool expect_response = 4;
-      public boolean hasExpectResponse() {
-        return result.hasExpectResponse();
-      }
-      public boolean getExpectResponse() {
-        return result.getExpectResponse();
-      }
-      public Builder setExpectResponse(boolean value) {
-        result.hasExpectResponse = true;
-        result.expectResponse_ = value;
-        return this;
-      }
-      public Builder clearExpectResponse() {
-        result.hasExpectResponse = false;
-        result.expectResponse_ = false;
-        return this;
-      }
-      
-      // optional int32 ret = 5;
-      public boolean hasRet() {
-        return result.hasRet();
-      }
-      public int getRet() {
-        return result.getRet();
-      }
-      public Builder setRet(int value) {
-        result.hasRet = true;
-        result.ret_ = value;
-        return this;
-      }
-      public Builder clearRet() {
-        result.hasRet = false;
-        result.ret_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg0 = 6;
-      public boolean hasArg0() {
-        return result.hasArg0();
-      }
-      public int getArg0() {
-        return result.getArg0();
-      }
-      public Builder setArg0(int value) {
-        result.hasArg0 = true;
-        result.arg0_ = value;
-        return this;
-      }
-      public Builder clearArg0() {
-        result.hasArg0 = false;
-        result.arg0_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg1 = 7;
-      public boolean hasArg1() {
-        return result.hasArg1();
-      }
-      public int getArg1() {
-        return result.getArg1();
-      }
-      public Builder setArg1(int value) {
-        result.hasArg1 = true;
-        result.arg1_ = value;
-        return this;
-      }
-      public Builder clearArg1() {
-        result.hasArg1 = false;
-        result.arg1_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg2 = 8;
-      public boolean hasArg2() {
-        return result.hasArg2();
-      }
-      public int getArg2() {
-        return result.getArg2();
-      }
-      public Builder setArg2(int value) {
-        result.hasArg2 = true;
-        result.arg2_ = value;
-        return this;
-      }
-      public Builder clearArg2() {
-        result.hasArg2 = false;
-        result.arg2_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg3 = 9;
-      public boolean hasArg3() {
-        return result.hasArg3();
-      }
-      public int getArg3() {
-        return result.getArg3();
-      }
-      public Builder setArg3(int value) {
-        result.hasArg3 = true;
-        result.arg3_ = value;
-        return this;
-      }
-      public Builder clearArg3() {
-        result.hasArg3 = false;
-        result.arg3_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg4 = 16;
-      public boolean hasArg4() {
-        return result.hasArg4();
-      }
-      public int getArg4() {
-        return result.getArg4();
-      }
-      public Builder setArg4(int value) {
-        result.hasArg4 = true;
-        result.arg4_ = value;
-        return this;
-      }
-      public Builder clearArg4() {
-        result.hasArg4 = false;
-        result.arg4_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg5 = 17;
-      public boolean hasArg5() {
-        return result.hasArg5();
-      }
-      public int getArg5() {
-        return result.getArg5();
-      }
-      public Builder setArg5(int value) {
-        result.hasArg5 = true;
-        result.arg5_ = value;
-        return this;
-      }
-      public Builder clearArg5() {
-        result.hasArg5 = false;
-        result.arg5_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg6 = 18;
-      public boolean hasArg6() {
-        return result.hasArg6();
-      }
-      public int getArg6() {
-        return result.getArg6();
-      }
-      public Builder setArg6(int value) {
-        result.hasArg6 = true;
-        result.arg6_ = value;
-        return this;
-      }
-      public Builder clearArg6() {
-        result.hasArg6 = false;
-        result.arg6_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg7 = 19;
-      public boolean hasArg7() {
-        return result.hasArg7();
-      }
-      public int getArg7() {
-        return result.getArg7();
-      }
-      public Builder setArg7(int value) {
-        result.hasArg7 = true;
-        result.arg7_ = value;
-        return this;
-      }
-      public Builder clearArg7() {
-        result.hasArg7 = false;
-        result.arg7_ = 0;
-        return this;
-      }
-      
-      // optional int32 arg8 = 20;
-      public boolean hasArg8() {
-        return result.hasArg8();
-      }
-      public int getArg8() {
-        return result.getArg8();
-      }
-      public Builder setArg8(int value) {
-        result.hasArg8 = true;
-        result.arg8_ = value;
-        return this;
-      }
-      public Builder clearArg8() {
-        result.hasArg8 = false;
-        result.arg8_ = 0;
-        return this;
-      }
-      
-      // optional bytes data = 10;
-      public boolean hasData() {
-        return result.hasData();
-      }
-      public com.google.protobuf.ByteString getData() {
-        return result.getData();
-      }
-      public Builder setData(com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  result.hasData = true;
-        result.data_ = value;
-        return this;
-      }
-      public Builder clearData() {
-        result.hasData = false;
-        result.data_ = getDefaultInstance().getData();
-        return this;
-      }
-      
-      // optional .com.android.glesv2debugger.Message.DataType data_type = 23;
-      public boolean hasDataType() {
-        return result.hasDataType();
-      }
-      public com.android.glesv2debugger.DebuggerMessage.Message.DataType getDataType() {
-        return result.getDataType();
-      }
-      public Builder setDataType(com.android.glesv2debugger.DebuggerMessage.Message.DataType value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        result.hasDataType = true;
-        result.dataType_ = value;
-        return this;
-      }
-      public Builder clearDataType() {
-        result.hasDataType = false;
-        result.dataType_ = com.android.glesv2debugger.DebuggerMessage.Message.DataType.ReferencedImage;
-        return this;
-      }
-      
-      // optional int32 pixel_format = 24;
-      public boolean hasPixelFormat() {
-        return result.hasPixelFormat();
-      }
-      public int getPixelFormat() {
-        return result.getPixelFormat();
-      }
-      public Builder setPixelFormat(int value) {
-        result.hasPixelFormat = true;
-        result.pixelFormat_ = value;
-        return this;
-      }
-      public Builder clearPixelFormat() {
-        result.hasPixelFormat = false;
-        result.pixelFormat_ = 0;
-        return this;
-      }
-      
-      // optional int32 pixel_type = 25;
-      public boolean hasPixelType() {
-        return result.hasPixelType();
-      }
-      public int getPixelType() {
-        return result.getPixelType();
-      }
-      public Builder setPixelType(int value) {
-        result.hasPixelType = true;
-        result.pixelType_ = value;
-        return this;
-      }
-      public Builder clearPixelType() {
-        result.hasPixelType = false;
-        result.pixelType_ = 0;
-        return this;
-      }
-      
-      // optional int32 image_width = 26;
-      public boolean hasImageWidth() {
-        return result.hasImageWidth();
-      }
-      public int getImageWidth() {
-        return result.getImageWidth();
-      }
-      public Builder setImageWidth(int value) {
-        result.hasImageWidth = true;
-        result.imageWidth_ = value;
-        return this;
-      }
-      public Builder clearImageWidth() {
-        result.hasImageWidth = false;
-        result.imageWidth_ = 0;
-        return this;
-      }
-      
-      // optional int32 image_height = 27;
-      public boolean hasImageHeight() {
-        return result.hasImageHeight();
-      }
-      public int getImageHeight() {
-        return result.getImageHeight();
-      }
-      public Builder setImageHeight(int value) {
-        result.hasImageHeight = true;
-        result.imageHeight_ = value;
-        return this;
-      }
-      public Builder clearImageHeight() {
-        result.hasImageHeight = false;
-        result.imageHeight_ = 0;
-        return this;
-      }
-      
-      // optional float time = 11;
-      public boolean hasTime() {
-        return result.hasTime();
-      }
-      public float getTime() {
-        return result.getTime();
-      }
-      public Builder setTime(float value) {
-        result.hasTime = true;
-        result.time_ = value;
-        return this;
-      }
-      public Builder clearTime() {
-        result.hasTime = false;
-        result.time_ = 0F;
-        return this;
-      }
-      
-      // optional .com.android.glesv2debugger.Message.Prop prop = 21;
-      public boolean hasProp() {
-        return result.hasProp();
-      }
-      public com.android.glesv2debugger.DebuggerMessage.Message.Prop getProp() {
-        return result.getProp();
-      }
-      public Builder setProp(com.android.glesv2debugger.DebuggerMessage.Message.Prop value) {
-        if (value == null) {
-          throw new NullPointerException();
-        }
-        result.hasProp = true;
-        result.prop_ = value;
-        return this;
-      }
-      public Builder clearProp() {
-        result.hasProp = false;
-        result.prop_ = com.android.glesv2debugger.DebuggerMessage.Message.Prop.CaptureDraw;
-        return this;
-      }
-      
-      // optional float clock = 22;
-      public boolean hasClock() {
-        return result.hasClock();
-      }
-      public float getClock() {
-        return result.getClock();
-      }
-      public Builder setClock(float value) {
-        result.hasClock = true;
-        result.clock_ = value;
-        return this;
-      }
-      public Builder clearClock() {
-        result.hasClock = false;
-        result.clock_ = 0F;
-        return this;
-      }
-      
-      // @@protoc_insertion_point(builder_scope:com.android.glesv2debugger.Message)
-    }
-    
-    static {
-      defaultInstance = new Message(true);
-      com.android.glesv2debugger.DebuggerMessage.internalForceInit();
-      defaultInstance.initFields();
-    }
-    
-    // @@protoc_insertion_point(class_scope:com.android.glesv2debugger.Message)
-  }
-  
-  
-  static {
-  }
-  
-  public static void internalForceInit() {}
-  
-  // @@protoc_insertion_point(outer_class_scope)
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/GLEnum.java b/tools/glesv2debugger/src/com/android/glesv2debugger/GLEnum.java
deleted file mode 100644
index 898c6e9..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/GLEnum.java
+++ /dev/null
@@ -1,632 +0,0 @@
-/*
- ** Copyright 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.
- */
-
-// auto generated by generate_GLEnum_java.py"
-
-package com.android.glesv2debugger;
-
-public enum GLEnum {
-    GL_POINTS(0x0000),
-    GL_LINES(0x0001),
-    GL_LINE_LOOP(0x0002),
-    GL_LINE_STRIP(0x0003),
-    GL_TRIANGLES(0x0004),
-    GL_TRIANGLE_STRIP(0x0005),
-    GL_TRIANGLE_FAN(0x0006),
-    GL_ADD(0x0104),
-    GL_NEVER(0x0200),
-    GL_LESS(0x0201),
-    GL_EQUAL(0x0202),
-    GL_LEQUAL(0x0203),
-    GL_GREATER(0x0204),
-    GL_NOTEQUAL(0x0205),
-    GL_GEQUAL(0x0206),
-    GL_ALWAYS(0x0207),
-    GL_SRC_COLOR(0x0300),
-    GL_ONE_MINUS_SRC_COLOR(0x0301),
-    GL_SRC_ALPHA(0x0302),
-    GL_ONE_MINUS_SRC_ALPHA(0x0303),
-    GL_DST_ALPHA(0x0304),
-    GL_ONE_MINUS_DST_ALPHA(0x0305),
-    GL_DST_COLOR(0x0306),
-    GL_ONE_MINUS_DST_COLOR(0x0307),
-    GL_SRC_ALPHA_SATURATE(0x0308),
-    GL_FRONT(0x0404),
-    GL_BACK(0x0405),
-    GL_FRONT_AND_BACK(0x0408),
-    GL_INVALID_ENUM(0x0500),
-    GL_INVALID_VALUE(0x0501),
-    GL_INVALID_OPERATION(0x0502),
-    GL_STACK_OVERFLOW(0x0503),
-    GL_STACK_UNDERFLOW(0x0504),
-    GL_OUT_OF_MEMORY(0x0505),
-    GL_INVALID_FRAMEBUFFER_OPERATION(0x0506),
-    GL_EXP(0x0800),
-    GL_EXP2(0x0801),
-    GL_CW(0x0900),
-    GL_CCW(0x0901),
-    GL_CURRENT_COLOR(0x0B00),
-    GL_CURRENT_NORMAL(0x0B02),
-    GL_CURRENT_TEXTURE_COORDS(0x0B03),
-    GL_POINT_SMOOTH(0x0B10),
-    GL_POINT_SIZE(0x0B11),
-    GL_SMOOTH_POINT_SIZE_RANGE(0x0B12),
-    GL_LINE_SMOOTH(0x0B20),
-    GL_LINE_WIDTH(0x0B21),
-    GL_SMOOTH_LINE_WIDTH_RANGE(0x0B22),
-    GL_CULL_FACE(0x0B44),
-    GL_CULL_FACE_MODE(0x0B45),
-    GL_FRONT_FACE(0x0B46),
-    GL_LIGHTING(0x0B50),
-    GL_LIGHT_MODEL_TWO_SIDE(0x0B52),
-    GL_LIGHT_MODEL_AMBIENT(0x0B53),
-    GL_SHADE_MODEL(0x0B54),
-    GL_COLOR_MATERIAL(0x0B57),
-    GL_FOG(0x0B60),
-    GL_FOG_DENSITY(0x0B62),
-    GL_FOG_START(0x0B63),
-    GL_FOG_END(0x0B64),
-    GL_FOG_MODE(0x0B65),
-    GL_FOG_COLOR(0x0B66),
-    GL_DEPTH_RANGE(0x0B70),
-    GL_DEPTH_TEST(0x0B71),
-    GL_DEPTH_WRITEMASK(0x0B72),
-    GL_DEPTH_CLEAR_VALUE(0x0B73),
-    GL_DEPTH_FUNC(0x0B74),
-    GL_STENCIL_TEST(0x0B90),
-    GL_STENCIL_CLEAR_VALUE(0x0B91),
-    GL_STENCIL_FUNC(0x0B92),
-    GL_STENCIL_VALUE_MASK(0x0B93),
-    GL_STENCIL_FAIL(0x0B94),
-    GL_STENCIL_PASS_DEPTH_FAIL(0x0B95),
-    GL_STENCIL_PASS_DEPTH_PASS(0x0B96),
-    GL_STENCIL_REF(0x0B97),
-    GL_STENCIL_WRITEMASK(0x0B98),
-    GL_MATRIX_MODE(0x0BA0),
-    GL_NORMALIZE(0x0BA1),
-    GL_VIEWPORT(0x0BA2),
-    GL_MODELVIEW_STACK_DEPTH(0x0BA3),
-    GL_PROJECTION_STACK_DEPTH(0x0BA4),
-    GL_TEXTURE_STACK_DEPTH(0x0BA5),
-    GL_MODELVIEW_MATRIX(0x0BA6),
-    GL_PROJECTION_MATRIX(0x0BA7),
-    GL_TEXTURE_MATRIX(0x0BA8),
-    GL_ALPHA_TEST(0x0BC0),
-    GL_ALPHA_TEST_FUNC(0x0BC1),
-    GL_ALPHA_TEST_REF(0x0BC2),
-    GL_DITHER(0x0BD0),
-    GL_BLEND_DST(0x0BE0),
-    GL_BLEND_SRC(0x0BE1),
-    GL_BLEND(0x0BE2),
-    GL_LOGIC_OP_MODE(0x0BF0),
-    GL_COLOR_LOGIC_OP(0x0BF2),
-    GL_SCISSOR_BOX(0x0C10),
-    GL_SCISSOR_TEST(0x0C11),
-    GL_COLOR_CLEAR_VALUE(0x0C22),
-    GL_COLOR_WRITEMASK(0x0C23),
-    GL_PERSPECTIVE_CORRECTION_HINT(0x0C50),
-    GL_POINT_SMOOTH_HINT(0x0C51),
-    GL_LINE_SMOOTH_HINT(0x0C52),
-    GL_FOG_HINT(0x0C54),
-    GL_UNPACK_ALIGNMENT(0x0CF5),
-    GL_PACK_ALIGNMENT(0x0D05),
-    GL_ALPHA_SCALE(0x0D1C),
-    GL_MAX_LIGHTS(0x0D31),
-    GL_MAX_CLIP_PLANES(0x0D32),
-    GL_MAX_TEXTURE_SIZE(0x0D33),
-    GL_MAX_MODELVIEW_STACK_DEPTH(0x0D36),
-    GL_MAX_PROJECTION_STACK_DEPTH(0x0D38),
-    GL_MAX_TEXTURE_STACK_DEPTH(0x0D39),
-    GL_MAX_VIEWPORT_DIMS(0x0D3A),
-    GL_SUBPIXEL_BITS(0x0D50),
-    GL_RED_BITS(0x0D52),
-    GL_GREEN_BITS(0x0D53),
-    GL_BLUE_BITS(0x0D54),
-    GL_ALPHA_BITS(0x0D55),
-    GL_DEPTH_BITS(0x0D56),
-    GL_STENCIL_BITS(0x0D57),
-    GL_TEXTURE_2D(0x0DE1),
-    GL_DONT_CARE(0x1100),
-    GL_FASTEST(0x1101),
-    GL_NICEST(0x1102),
-    GL_AMBIENT(0x1200),
-    GL_DIFFUSE(0x1201),
-    GL_SPECULAR(0x1202),
-    GL_POSITION(0x1203),
-    GL_SPOT_DIRECTION(0x1204),
-    GL_SPOT_EXPONENT(0x1205),
-    GL_SPOT_CUTOFF(0x1206),
-    GL_CONSTANT_ATTENUATION(0x1207),
-    GL_LINEAR_ATTENUATION(0x1208),
-    GL_QUADRATIC_ATTENUATION(0x1209),
-    GL_BYTE(0x1400),
-    GL_UNSIGNED_BYTE(0x1401),
-    GL_SHORT(0x1402),
-    GL_UNSIGNED_SHORT(0x1403),
-    GL_INT(0x1404),
-    GL_UNSIGNED_INT(0x1405),
-    GL_FLOAT(0x1406),
-    GL_FIXED(0x140C),
-    GL_CLEAR(0x1500),
-    GL_AND(0x1501),
-    GL_AND_REVERSE(0x1502),
-    GL_COPY(0x1503),
-    GL_AND_INVERTED(0x1504),
-    GL_NOOP(0x1505),
-    GL_XOR(0x1506),
-    GL_OR(0x1507),
-    GL_NOR(0x1508),
-    GL_EQUIV(0x1509),
-    GL_INVERT(0x150A),
-    GL_OR_REVERSE(0x150B),
-    GL_COPY_INVERTED(0x150C),
-    GL_OR_INVERTED(0x150D),
-    GL_NAND(0x150E),
-    GL_SET(0x150F),
-    GL_EMISSION(0x1600),
-    GL_SHININESS(0x1601),
-    GL_AMBIENT_AND_DIFFUSE(0x1602),
-    GL_MODELVIEW(0x1700),
-    GL_PROJECTION(0x1701),
-    GL_TEXTURE(0x1702),
-    GL_COLOR_EXT(0x1800),
-    GL_DEPTH_EXT(0x1801),
-    GL_STENCIL_EXT(0x1802),
-    GL_STENCIL_INDEX(0x1901),
-    GL_DEPTH_COMPONENT(0x1902),
-    GL_ALPHA(0x1906),
-    GL_RGB(0x1907),
-    GL_RGBA(0x1908),
-    GL_LUMINANCE(0x1909),
-    GL_LUMINANCE_ALPHA(0x190A),
-    GL_FLAT(0x1D00),
-    GL_SMOOTH(0x1D01),
-    GL_KEEP(0x1E00),
-    GL_REPLACE(0x1E01),
-    GL_INCR(0x1E02),
-    GL_DECR(0x1E03),
-    GL_VENDOR(0x1F00),
-    GL_RENDERER(0x1F01),
-    GL_VERSION(0x1F02),
-    GL_EXTENSIONS(0x1F03),
-    GL_MODULATE(0x2100),
-    GL_DECAL(0x2101),
-    GL_TEXTURE_ENV_MODE(0x2200),
-    GL_TEXTURE_ENV_COLOR(0x2201),
-    GL_TEXTURE_ENV(0x2300),
-    GL_TEXTURE_GEN_MODE(0x2500),
-    GL_NEAREST(0x2600),
-    GL_LINEAR(0x2601),
-    GL_NEAREST_MIPMAP_NEAREST(0x2700),
-    GL_LINEAR_MIPMAP_NEAREST(0x2701),
-    GL_NEAREST_MIPMAP_LINEAR(0x2702),
-    GL_LINEAR_MIPMAP_LINEAR(0x2703),
-    GL_TEXTURE_MAG_FILTER(0x2800),
-    GL_TEXTURE_MIN_FILTER(0x2801),
-    GL_TEXTURE_WRAP_S(0x2802),
-    GL_TEXTURE_WRAP_T(0x2803),
-    GL_REPEAT(0x2901),
-    GL_POLYGON_OFFSET_UNITS(0x2A00),
-    GL_CLIP_PLANE0(0x3000),
-    GL_CLIP_PLANE1(0x3001),
-    GL_CLIP_PLANE2(0x3002),
-    GL_CLIP_PLANE3(0x3003),
-    GL_CLIP_PLANE4(0x3004),
-    GL_CLIP_PLANE5(0x3005),
-    GL_LIGHT0(0x4000),
-    GL_LIGHT1(0x4001),
-    GL_LIGHT2(0x4002),
-    GL_LIGHT3(0x4003),
-    GL_LIGHT4(0x4004),
-    GL_LIGHT5(0x4005),
-    GL_LIGHT6(0x4006),
-    GL_LIGHT7(0x4007),
-    GL_COVERAGE_BUFFER_BIT_NV(0x8000),
-    GL_CONSTANT_COLOR(0x8001),
-    GL_ONE_MINUS_CONSTANT_COLOR(0x8002),
-    GL_CONSTANT_ALPHA(0x8003),
-    GL_ONE_MINUS_CONSTANT_ALPHA(0x8004),
-    GL_BLEND_COLOR(0x8005),
-    GL_FUNC_ADD(0x8006),
-    GL_MIN_EXT(0x8007),
-    GL_MAX_EXT(0x8008),
-    GL_BLEND_EQUATION_RGB(0x8009),
-    GL_FUNC_SUBTRACT(0x800A),
-    GL_FUNC_REVERSE_SUBTRACT(0x800B),
-    GL_UNSIGNED_SHORT_4_4_4_4(0x8033),
-    GL_UNSIGNED_SHORT_5_5_5_1(0x8034),
-    GL_POLYGON_OFFSET_FILL(0x8037),
-    GL_POLYGON_OFFSET_FACTOR(0x8038),
-    GL_RESCALE_NORMAL(0x803A),
-    GL_RGB8(0x8051),
-    GL_RGBA4(0x8056),
-    GL_RGB5_A1(0x8057),
-    GL_RGBA8(0x8058),
-    GL_TEXTURE_BINDING_2D(0x8069),
-    GL_TEXTURE_BINDING_3D(0x806A),
-    GL_TEXTURE_3D(0x806F),
-    GL_TEXTURE_WRAP_R(0x8072),
-    GL_MAX_3D_TEXTURE_SIZE(0x8073),
-    GL_VERTEX_ARRAY(0x8074),
-    GL_NORMAL_ARRAY(0x8075),
-    GL_COLOR_ARRAY(0x8076),
-    GL_TEXTURE_COORD_ARRAY(0x8078),
-    GL_VERTEX_ARRAY_SIZE(0x807A),
-    GL_VERTEX_ARRAY_TYPE(0x807B),
-    GL_VERTEX_ARRAY_STRIDE(0x807C),
-    GL_NORMAL_ARRAY_TYPE(0x807E),
-    GL_NORMAL_ARRAY_STRIDE(0x807F),
-    GL_COLOR_ARRAY_SIZE(0x8081),
-    GL_COLOR_ARRAY_TYPE(0x8082),
-    GL_COLOR_ARRAY_STRIDE(0x8083),
-    GL_TEXTURE_COORD_ARRAY_SIZE(0x8088),
-    GL_TEXTURE_COORD_ARRAY_TYPE(0x8089),
-    GL_TEXTURE_COORD_ARRAY_STRIDE(0x808A),
-    GL_VERTEX_ARRAY_POINTER(0x808E),
-    GL_NORMAL_ARRAY_POINTER(0x808F),
-    GL_COLOR_ARRAY_POINTER(0x8090),
-    GL_TEXTURE_COORD_ARRAY_POINTER(0x8092),
-    GL_MULTISAMPLE(0x809D),
-    GL_SAMPLE_ALPHA_TO_COVERAGE(0x809E),
-    GL_SAMPLE_ALPHA_TO_ONE(0x809F),
-    GL_SAMPLE_COVERAGE(0x80A0),
-    GL_SAMPLE_BUFFERS(0x80A8),
-    GL_SAMPLES(0x80A9),
-    GL_SAMPLE_COVERAGE_VALUE(0x80AA),
-    GL_SAMPLE_COVERAGE_INVERT(0x80AB),
-    GL_BLEND_DST_RGB(0x80C8),
-    GL_BLEND_SRC_RGB(0x80C9),
-    GL_BLEND_DST_ALPHA(0x80CA),
-    GL_BLEND_SRC_ALPHA(0x80CB),
-    GL_BGRA_EXT(0x80E1),
-    GL_POINT_SIZE_MIN(0x8126),
-    GL_POINT_SIZE_MAX(0x8127),
-    GL_POINT_FADE_THRESHOLD_SIZE(0x8128),
-    GL_POINT_DISTANCE_ATTENUATION(0x8129),
-    GL_CLAMP_TO_EDGE(0x812F),
-    GL_GENERATE_MIPMAP(0x8191),
-    GL_GENERATE_MIPMAP_HINT(0x8192),
-    GL_DEPTH_COMPONENT16(0x81A5),
-    GL_DEPTH_COMPONENT24(0x81A6),
-    GL_DEPTH_COMPONENT32(0x81A7),
-    GL_UNSIGNED_SHORT_5_6_5(0x8363),
-    GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT(0x8365),
-    GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT(0x8366),
-    GL_UNSIGNED_INT_2_10_10_10_REV_EXT(0x8368),
-    GL_MIRRORED_REPEAT(0x8370),
-    GL_COMPRESSED_RGB_S3TC_DXT1_EXT(0x83F0),
-    GL_COMPRESSED_RGBA_S3TC_DXT1_EXT(0x83F1),
-    GL_ALIASED_POINT_SIZE_RANGE(0x846D),
-    GL_ALIASED_LINE_WIDTH_RANGE(0x846E),
-    GL_TEXTURE0(0x84C0),
-    GL_TEXTURE1(0x84C1),
-    GL_TEXTURE2(0x84C2),
-    GL_TEXTURE3(0x84C3),
-    GL_TEXTURE4(0x84C4),
-    GL_TEXTURE5(0x84C5),
-    GL_TEXTURE6(0x84C6),
-    GL_TEXTURE7(0x84C7),
-    GL_TEXTURE8(0x84C8),
-    GL_TEXTURE9(0x84C9),
-    GL_TEXTURE10(0x84CA),
-    GL_TEXTURE11(0x84CB),
-    GL_TEXTURE12(0x84CC),
-    GL_TEXTURE13(0x84CD),
-    GL_TEXTURE14(0x84CE),
-    GL_TEXTURE15(0x84CF),
-    GL_TEXTURE16(0x84D0),
-    GL_TEXTURE17(0x84D1),
-    GL_TEXTURE18(0x84D2),
-    GL_TEXTURE19(0x84D3),
-    GL_TEXTURE20(0x84D4),
-    GL_TEXTURE21(0x84D5),
-    GL_TEXTURE22(0x84D6),
-    GL_TEXTURE23(0x84D7),
-    GL_TEXTURE24(0x84D8),
-    GL_TEXTURE25(0x84D9),
-    GL_TEXTURE26(0x84DA),
-    GL_TEXTURE27(0x84DB),
-    GL_TEXTURE28(0x84DC),
-    GL_TEXTURE29(0x84DD),
-    GL_TEXTURE30(0x84DE),
-    GL_TEXTURE31(0x84DF),
-    GL_ACTIVE_TEXTURE(0x84E0),
-    GL_CLIENT_ACTIVE_TEXTURE(0x84E1),
-    GL_MAX_TEXTURE_UNITS(0x84E2),
-    GL_SUBTRACT(0x84E7),
-    GL_MAX_RENDERBUFFER_SIZE(0x84E8),
-    GL_ALL_COMPLETED_NV(0x84F2),
-    GL_FENCE_STATUS_NV(0x84F3),
-    GL_FENCE_CONDITION_NV(0x84F4),
-    GL_DEPTH_STENCIL(0x84F9),
-    GL_UNSIGNED_INT_24_8(0x84FA),
-    GL_MAX_TEXTURE_LOD_BIAS_EXT(0x84FD),
-    GL_TEXTURE_MAX_ANISOTROPY_EXT(0x84FE),
-    GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT(0x84FF),
-    GL_TEXTURE_FILTER_CONTROL_EXT(0x8500),
-    GL_TEXTURE_LOD_BIAS_EXT(0x8501),
-    GL_INCR_WRAP(0x8507),
-    GL_DECR_WRAP(0x8508),
-    GL_NORMAL_MAP(0x8511),
-    GL_REFLECTION_MAP(0x8512),
-    GL_TEXTURE_CUBE_MAP(0x8513),
-    GL_TEXTURE_BINDING_CUBE_MAP(0x8514),
-    GL_TEXTURE_CUBE_MAP_POSITIVE_X(0x8515),
-    GL_TEXTURE_CUBE_MAP_NEGATIVE_X(0x8516),
-    GL_TEXTURE_CUBE_MAP_POSITIVE_Y(0x8517),
-    GL_TEXTURE_CUBE_MAP_NEGATIVE_Y(0x8518),
-    GL_TEXTURE_CUBE_MAP_POSITIVE_Z(0x8519),
-    GL_TEXTURE_CUBE_MAP_NEGATIVE_Z(0x851A),
-    GL_MAX_CUBE_MAP_TEXTURE_SIZE(0x851C),
-    GL_COMBINE(0x8570),
-    GL_COMBINE_RGB(0x8571),
-    GL_COMBINE_ALPHA(0x8572),
-    GL_RGB_SCALE(0x8573),
-    GL_ADD_SIGNED(0x8574),
-    GL_INTERPOLATE(0x8575),
-    GL_CONSTANT(0x8576),
-    GL_PRIMARY_COLOR(0x8577),
-    GL_PREVIOUS(0x8578),
-    GL_SRC0_RGB(0x8580),
-    GL_SRC1_RGB(0x8581),
-    GL_SRC2_RGB(0x8582),
-    GL_SRC0_ALPHA(0x8588),
-    GL_SRC1_ALPHA(0x8589),
-    GL_SRC2_ALPHA(0x858A),
-    GL_OPERAND0_RGB(0x8590),
-    GL_OPERAND1_RGB(0x8591),
-    GL_OPERAND2_RGB(0x8592),
-    GL_OPERAND0_ALPHA(0x8598),
-    GL_OPERAND1_ALPHA(0x8599),
-    GL_OPERAND2_ALPHA(0x859A),
-    GL_VERTEX_ARRAY_BINDING(0x85B5),
-    GL_VERTEX_ATTRIB_ARRAY_ENABLED(0x8622),
-    GL_VERTEX_ATTRIB_ARRAY_SIZE(0x8623),
-    GL_VERTEX_ATTRIB_ARRAY_STRIDE(0x8624),
-    GL_VERTEX_ATTRIB_ARRAY_TYPE(0x8625),
-    GL_CURRENT_VERTEX_ATTRIB(0x8626),
-    GL_VERTEX_ATTRIB_ARRAY_POINTER(0x8645),
-    GL_NUM_COMPRESSED_TEXTURE_FORMATS(0x86A2),
-    GL_COMPRESSED_TEXTURE_FORMATS(0x86A3),
-    GL_MAX_VERTEX_UNITS(0x86A4),
-    GL_WEIGHT_ARRAY_TYPE(0x86A9),
-    GL_WEIGHT_ARRAY_STRIDE(0x86AA),
-    GL_WEIGHT_ARRAY_SIZE(0x86AB),
-    GL_WEIGHT_ARRAY_POINTER(0x86AC),
-    GL_WEIGHT_ARRAY(0x86AD),
-    GL_DOT3_RGB(0x86AE),
-    GL_DOT3_RGBA(0x86AF),
-    GL_Z400_BINARY_AMD(0x8740),
-    GL_PROGRAM_BINARY_LENGTH(0x8741),
-    GL_BUFFER_SIZE(0x8764),
-    GL_BUFFER_USAGE(0x8765),
-    GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD(0x87EE),
-    GL_3DC_X_AMD(0x87F9),
-    GL_3DC_XY_AMD(0x87FA),
-    GL_NUM_PROGRAM_BINARY_FORMATS(0x87FE),
-    GL_PROGRAM_BINARY_FORMATS(0x87FF),
-    GL_STENCIL_BACK_FUNC(0x8800),
-    GL_STENCIL_BACK_FAIL(0x8801),
-    GL_STENCIL_BACK_PASS_DEPTH_FAIL(0x8802),
-    GL_STENCIL_BACK_PASS_DEPTH_PASS(0x8803),
-    GL_WRITEONLY_RENDERING_QCOM(0x8823),
-    GL_BLEND_EQUATION_ALPHA(0x883D),
-    GL_MATRIX_PALETTE(0x8840),
-    GL_MAX_PALETTE_MATRICES(0x8842),
-    GL_CURRENT_PALETTE_MATRIX(0x8843),
-    GL_MATRIX_INDEX_ARRAY(0x8844),
-    GL_MATRIX_INDEX_ARRAY_SIZE(0x8846),
-    GL_MATRIX_INDEX_ARRAY_TYPE(0x8847),
-    GL_MATRIX_INDEX_ARRAY_STRIDE(0x8848),
-    GL_MATRIX_INDEX_ARRAY_POINTER(0x8849),
-    GL_POINT_SPRITE(0x8861),
-    GL_COORD_REPLACE(0x8862),
-    GL_MAX_VERTEX_ATTRIBS(0x8869),
-    GL_VERTEX_ATTRIB_ARRAY_NORMALIZED(0x886A),
-    GL_MAX_TEXTURE_IMAGE_UNITS(0x8872),
-    GL_ARRAY_BUFFER(0x8892),
-    GL_ELEMENT_ARRAY_BUFFER(0x8893),
-    GL_ARRAY_BUFFER_BINDING(0x8894),
-    GL_ELEMENT_ARRAY_BUFFER_BINDING(0x8895),
-    GL_VERTEX_ARRAY_BUFFER_BINDING(0x8896),
-    GL_NORMAL_ARRAY_BUFFER_BINDING(0x8897),
-    GL_COLOR_ARRAY_BUFFER_BINDING(0x8898),
-    GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING(0x889A),
-    GL_WEIGHT_ARRAY_BUFFER_BINDING(0x889E),
-    GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING(0x889F),
-    GL_WRITE_ONLY(0x88B9),
-    GL_BUFFER_ACCESS(0x88BB),
-    GL_BUFFER_MAPPED(0x88BC),
-    GL_BUFFER_MAP_POINTER(0x88BD),
-    GL_STREAM_DRAW(0x88E0),
-    GL_STATIC_DRAW(0x88E4),
-    GL_DYNAMIC_DRAW(0x88E8),
-    GL_DEPTH24_STENCIL8(0x88F0),
-    GL_POINT_SIZE_ARRAY_TYPE(0x898A),
-    GL_POINT_SIZE_ARRAY_STRIDE(0x898B),
-    GL_POINT_SIZE_ARRAY_POINTER(0x898C),
-    GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS(0x898D),
-    GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS(0x898E),
-    GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS(0x898F),
-    GL_FRAGMENT_SHADER(0x8B30),
-    GL_VERTEX_SHADER(0x8B31),
-    GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS(0x8B4C),
-    GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS(0x8B4D),
-    GL_SHADER_TYPE(0x8B4F),
-    GL_FLOAT_VEC2(0x8B50),
-    GL_FLOAT_VEC3(0x8B51),
-    GL_FLOAT_VEC4(0x8B52),
-    GL_INT_VEC2(0x8B53),
-    GL_INT_VEC3(0x8B54),
-    GL_INT_VEC4(0x8B55),
-    GL_BOOL(0x8B56),
-    GL_BOOL_VEC2(0x8B57),
-    GL_BOOL_VEC3(0x8B58),
-    GL_BOOL_VEC4(0x8B59),
-    GL_FLOAT_MAT2(0x8B5A),
-    GL_FLOAT_MAT3(0x8B5B),
-    GL_FLOAT_MAT4(0x8B5C),
-    GL_SAMPLER_2D(0x8B5E),
-    GL_SAMPLER_3D(0x8B5F),
-    GL_SAMPLER_CUBE(0x8B60),
-    GL_DELETE_STATUS(0x8B80),
-    GL_COMPILE_STATUS(0x8B81),
-    GL_LINK_STATUS(0x8B82),
-    GL_VALIDATE_STATUS(0x8B83),
-    GL_INFO_LOG_LENGTH(0x8B84),
-    GL_ATTACHED_SHADERS(0x8B85),
-    GL_ACTIVE_UNIFORMS(0x8B86),
-    GL_ACTIVE_UNIFORM_MAX_LENGTH(0x8B87),
-    GL_SHADER_SOURCE_LENGTH(0x8B88),
-    GL_ACTIVE_ATTRIBUTES(0x8B89),
-    GL_ACTIVE_ATTRIBUTE_MAX_LENGTH(0x8B8A),
-    GL_FRAGMENT_SHADER_DERIVATIVE_HINT(0x8B8B),
-    GL_SHADING_LANGUAGE_VERSION(0x8B8C),
-    GL_CURRENT_PROGRAM(0x8B8D),
-    GL_PALETTE4_RGB8(0x8B90),
-    GL_PALETTE4_RGBA8(0x8B91),
-    GL_PALETTE4_R5_G6_B5(0x8B92),
-    GL_PALETTE4_RGBA4(0x8B93),
-    GL_PALETTE4_RGB5_A1(0x8B94),
-    GL_PALETTE8_RGB8(0x8B95),
-    GL_PALETTE8_RGBA8(0x8B96),
-    GL_PALETTE8_R5_G6_B5(0x8B97),
-    GL_PALETTE8_RGBA4(0x8B98),
-    GL_PALETTE8_RGB5_A1(0x8B99),
-    GL_IMPLEMENTATION_COLOR_READ_TYPE(0x8B9A),
-    GL_IMPLEMENTATION_COLOR_READ_FORMAT(0x8B9B),
-    GL_POINT_SIZE_ARRAY(0x8B9C),
-    GL_TEXTURE_CROP_RECT(0x8B9D),
-    GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING(0x8B9E),
-    GL_POINT_SIZE_ARRAY_BUFFER_BINDING(0x8B9F),
-    GL_COUNTER_TYPE_AMD(0x8BC0),
-    GL_COUNTER_RANGE_AMD(0x8BC1),
-    GL_UNSIGNED_INT64_AMD(0x8BC2),
-    GL_PERCENTAGE_AMD(0x8BC3),
-    GL_PERFMON_RESULT_AVAILABLE_AMD(0x8BC4),
-    GL_PERFMON_RESULT_SIZE_AMD(0x8BC5),
-    GL_PERFMON_RESULT_AMD(0x8BC6),
-    GL_TEXTURE_WIDTH_QCOM(0x8BD2),
-    GL_TEXTURE_HEIGHT_QCOM(0x8BD3),
-    GL_TEXTURE_DEPTH_QCOM(0x8BD4),
-    GL_TEXTURE_INTERNAL_FORMAT_QCOM(0x8BD5),
-    GL_TEXTURE_FORMAT_QCOM(0x8BD6),
-    GL_TEXTURE_TYPE_QCOM(0x8BD7),
-    GL_TEXTURE_IMAGE_VALID_QCOM(0x8BD8),
-    GL_TEXTURE_NUM_LEVELS_QCOM(0x8BD9),
-    GL_TEXTURE_TARGET_QCOM(0x8BDA),
-    GL_TEXTURE_OBJECT_VALID_QCOM(0x8BDB),
-    GL_STATE_RESTORE(0x8BDC),
-    GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG(0x8C00),
-    GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG(0x8C01),
-    GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG(0x8C02),
-    GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG(0x8C03),
-    GL_MODULATE_COLOR_IMG(0x8C04),
-    GL_RECIP_ADD_SIGNED_ALPHA_IMG(0x8C05),
-    GL_TEXTURE_ALPHA_MODULATE_IMG(0x8C06),
-    GL_FACTOR_ALPHA_MODULATE_IMG(0x8C07),
-    GL_FRAGMENT_ALPHA_MODULATE_IMG(0x8C08),
-    GL_ADD_BLEND_IMG(0x8C09),
-    GL_SGX_BINARY_IMG(0x8C0A),
-    GL_ATC_RGB_AMD(0x8C92),
-    GL_ATC_RGBA_EXPLICIT_ALPHA_AMD(0x8C93),
-    GL_STENCIL_BACK_REF(0x8CA3),
-    GL_STENCIL_BACK_VALUE_MASK(0x8CA4),
-    GL_STENCIL_BACK_WRITEMASK(0x8CA5),
-    GL_FRAMEBUFFER_BINDING(0x8CA6),
-    GL_RENDERBUFFER_BINDING(0x8CA7),
-    GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE(0x8CD0),
-    GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME(0x8CD1),
-    GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL(0x8CD2),
-    GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE(0x8CD3),
-    GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET(0x8CD4),
-    GL_FRAMEBUFFER_COMPLETE(0x8CD5),
-    GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT(0x8CD6),
-    GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT(0x8CD7),
-    GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS(0x8CD9),
-    GL_FRAMEBUFFER_INCOMPLETE_FORMATS(0x8CDA),
-    GL_FRAMEBUFFER_UNSUPPORTED(0x8CDD),
-    GL_COLOR_ATTACHMENT0(0x8CE0),
-    GL_DEPTH_ATTACHMENT(0x8D00),
-    GL_STENCIL_ATTACHMENT(0x8D20),
-    GL_FRAMEBUFFER(0x8D40),
-    GL_RENDERBUFFER(0x8D41),
-    GL_RENDERBUFFER_WIDTH(0x8D42),
-    GL_RENDERBUFFER_HEIGHT(0x8D43),
-    GL_RENDERBUFFER_INTERNAL_FORMAT(0x8D44),
-    GL_STENCIL_INDEX1(0x8D46),
-    GL_STENCIL_INDEX4(0x8D47),
-    GL_STENCIL_INDEX8(0x8D48),
-    GL_RENDERBUFFER_RED_SIZE(0x8D50),
-    GL_RENDERBUFFER_GREEN_SIZE(0x8D51),
-    GL_RENDERBUFFER_BLUE_SIZE(0x8D52),
-    GL_RENDERBUFFER_ALPHA_SIZE(0x8D53),
-    GL_RENDERBUFFER_DEPTH_SIZE(0x8D54),
-    GL_RENDERBUFFER_STENCIL_SIZE(0x8D55),
-    GL_TEXTURE_GEN_STR(0x8D60),
-    GL_HALF_FLOAT(0x8D61),
-    GL_RGB565(0x8D62),
-    GL_ETC1_RGB8(0x8D64),
-    GL_TEXTURE_EXTERNAL(0x8D65),
-    GL_SAMPLER_EXTERNAL(0x8D66),
-    GL_TEXTURE_BINDING_EXTERNAL(0x8D67),
-    GL_REQUIRED_TEXTURE_IMAGE_UNITS(0x8D68),
-    GL_LOW_FLOAT(0x8DF0),
-    GL_MEDIUM_FLOAT(0x8DF1),
-    GL_HIGH_FLOAT(0x8DF2),
-    GL_LOW_INT(0x8DF3),
-    GL_MEDIUM_INT(0x8DF4),
-    GL_HIGH_INT(0x8DF5),
-    GL_UNSIGNED_INT_10_10_10_2(0x8DF6),
-    GL_INT_10_10_10_2(0x8DF7),
-    GL_SHADER_BINARY_FORMATS(0x8DF8),
-    GL_NUM_SHADER_BINARY_FORMATS(0x8DF9),
-    GL_SHADER_COMPILER(0x8DFA),
-    GL_MAX_VERTEX_UNIFORM_VECTORS(0x8DFB),
-    GL_MAX_VARYING_VECTORS(0x8DFC),
-    GL_MAX_FRAGMENT_UNIFORM_VECTORS(0x8DFD),
-    GL_DEPTH_COMPONENT16_NONLINEAR_NV(0x8E2C),
-    GL_COVERAGE_COMPONENT_NV(0x8ED0),
-    GL_COVERAGE_COMPONENT4_NV(0x8ED1),
-    GL_COVERAGE_ATTACHMENT_NV(0x8ED2),
-    GL_COVERAGE_BUFFERS_NV(0x8ED3),
-    GL_COVERAGE_SAMPLES_NV(0x8ED4),
-    GL_COVERAGE_ALL_FRAGMENTS_NV(0x8ED5),
-    GL_COVERAGE_EDGE_FRAGMENTS_NV(0x8ED6),
-    GL_COVERAGE_AUTOMATIC_NV(0x8ED7),
-    GL_PERFMON_GLOBAL_MODE_QCOM(0x8FA0),
-    GL_SGX_PROGRAM_BINARY_IMG(0x9130),
-    GL_RENDERBUFFER_SAMPLES_IMG(0x9133),
-    GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG(0x9134),
-    GL_MAX_SAMPLES_IMG(0x9135),
-    GL_TEXTURE_SAMPLES_IMG(0x9136),
-    ;
-
-    public final int value;
-    GLEnum(final int value) {
-        this.value = value;
-    }
-
-    private static final java.util.HashMap<Integer, GLEnum> reverseMap = new java.util.HashMap<Integer, GLEnum>();
-    static {
-        for (GLEnum e : GLEnum.values())
-        reverseMap.put(e.value, e);
-    }
-
-    public static GLEnum valueOf(final int value) {
-        return reverseMap.get(value);
-    }
-}
\ No newline at end of file
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerShader.java b/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerShader.java
deleted file mode 100644
index f13c465..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerShader.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.sdklib.util.SparseArray;
-
-import java.util.ArrayList;
-
-class GLShader implements Cloneable {
-    public final int name;
-    GLServerShader context; // the context this was created in
-    public final GLEnum type;
-    public boolean delete;
-    public ArrayList<Integer> programs = new ArrayList<Integer>();
-    public String source, originalSource;
-
-    GLShader(final int name, final GLServerShader context, final GLEnum type) {
-        this.name = name;
-        this.context = context;
-        this.type = type;
-    }
-
-    /** deep copy */
-    public GLShader clone(final GLServerShader copyContext) {
-        try {
-            GLShader shader = (GLShader) super.clone();
-            shader.programs = (ArrayList<Integer>) programs.clone();
-            shader.context = copyContext;
-            return shader;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-}
-
-class GLProgram implements Cloneable {
-    public final int name;
-    GLServerShader context; // the context this was created in
-    public boolean delete;
-    public int vert, frag;
-
-    GLProgram(final int name, final GLServerShader context) {
-        this.name = name;
-        this.context = context;
-    }
-
-    /** deep copy */
-    public GLProgram clone(final GLServerShader copyContext) {
-        try {
-            GLProgram copy = (GLProgram) super.clone();
-            copy.context = copyContext;
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-}
-
-public class GLServerShader implements Cloneable {
-    Context context;
-    public SparseArray<GLShader> shaders = new SparseArray<GLShader>();
-    public SparseArray<GLProgram> programs = new SparseArray<GLProgram>();
-    public GLProgram current = null;
-    boolean uiUpdate = false;
-
-    GLServerShader(Context context) {
-        this.context = context;
-    }
-
-    /** deep copy */
-    public GLServerShader clone(final Context copyContext) {
-        try {
-            GLServerShader copy = (GLServerShader) super.clone();
-            copy.context = copyContext;
-
-            copy.shaders = new SparseArray<GLShader>(shaders.size());
-            for (int i = 0; i < shaders.size(); i++)
-                copy.shaders.append(shaders.keyAt(i), shaders.valueAt(i).clone(copy));
-
-            copy.programs = new SparseArray<GLProgram>(programs.size());
-            for (int i = 0; i < programs.size(); i++)
-                copy.programs.append(programs.keyAt(i), programs.valueAt(i).clone(copy));
-
-            if (current != null)
-                copy.current = copy.programs.get(current.name);
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-
-    /** returns true if processed */
-    public boolean processMessage(final Message msg) {
-        boolean oldUiUpdate = uiUpdate;
-        uiUpdate = true;
-        switch (msg.getFunction()) {
-            case glAttachShader:
-                glAttachShader(msg);
-                return true;
-            case glCreateProgram:
-                glCreateProgram(msg);
-                return true;
-            case glCreateShader:
-                glCreateShader(msg);
-                return true;
-            case glDeleteProgram:
-                glDeleteProgram(msg);
-                return true;
-            case glDeleteShader:
-                glDeleteShader(msg);
-                return true;
-            case glDetachShader:
-                glDetachShader(msg);
-                return true;
-            case glShaderSource:
-                glShaderSource(msg);
-                return true;
-            case glUseProgram:
-                glUseProgram(msg);
-                return true;
-            default:
-                uiUpdate = oldUiUpdate;
-                return false;
-        }
-    }
-
-    GLShader getShader(int name) {
-        if (name == 0)
-            return null;
-        for (Context ctx : context.shares) {
-            GLShader shader = ctx.serverShader.shaders.get(name);
-            if (shader != null)
-                return shader;
-        }
-        assert false;
-        return null;
-    }
-
-    GLProgram getProgram(int name) {
-        if (name == 0)
-            return null;
-        for (Context ctx : context.shares) {
-            GLProgram program = ctx.serverShader.programs.get(name);
-            if (program != null)
-                return program;
-        }
-        assert false;
-        return null;
-    }
-
-    // void API_ENTRY(glAttachShader)(GLuint program, GLuint shader)
-    void glAttachShader(final Message msg) {
-        GLProgram program = getProgram(msg.getArg0());
-        assert program != null;
-        GLShader shader = getShader(msg.getArg1());
-        assert program != null;
-        if (GLEnum.GL_VERTEX_SHADER == shader.type)
-            program.vert = shader.name;
-        else
-            program.frag = shader.name;
-        shader.programs.add(program.name);
-    }
-
-    // GLuint API_ENTRY(glCreateProgram)(void)
-    void glCreateProgram(final Message msg) {
-        programs.put(msg.getRet(), new GLProgram(msg.getRet(), this));
-    }
-
-    // GLuint API_ENTRY(glCreateShader)(GLenum type)
-    void glCreateShader(final Message msg) {
-        shaders.put(msg.getRet(),
-                new GLShader(msg.getRet(), this, GLEnum.valueOf(msg.getArg0())));
-    }
-
-    // void API_ENTRY(glDeleteProgram)
-    void glDeleteProgram(final Message msg) {
-        if (msg.getArg0() == 0)
-            return;
-        GLProgram program = getProgram(msg.getArg0());
-        program.delete = true;
-        for (Context ctx : context.shares)
-            if (ctx.serverShader.current == program)
-                return;
-        glDetachShader(program, getShader(program.vert));
-        glDetachShader(program, getShader(program.frag));
-        programs.remove(program.name);
-    }
-
-    // void API_ENTRY(glDeleteShader)(GLuint shader)
-    void glDeleteShader(final Message msg) {
-        if (msg.getArg0() == 0)
-            return;
-        GLShader shader = getShader(msg.getArg0());
-        shader.delete = true;
-        if (shader.programs.size() == 0)
-            shaders.remove(shader.name);
-    }
-
-    // void API_ENTRY(glDetachShader)(GLuint program, GLuint shader)
-    void glDetachShader(final Message msg) {
-        glDetachShader(getProgram(msg.getArg0()), getShader(msg.getArg1()));
-    }
-
-    void glDetachShader(final GLProgram program, final GLShader shader) {
-        if (program == null)
-            return;
-        if (program.vert == shader.name)
-            program.vert = 0;
-        else if (program.frag == shader.name)
-            program.frag = 0;
-        else
-            return;
-        shader.programs.remove(new Integer(program.name));
-        if (shader.delete && shader.programs.size() == 0)
-            shaders.remove(shader.name);
-    }
-
-    // void API_ENTRY(glShaderSource)(GLuint shader, GLsizei count, const
-    // GLchar** string, const GLint* length)
-    void glShaderSource(final Message msg) {
-        if (!msg.hasData())
-            return; // TODO: distinguish between generated calls
-        GLShader shader = getShader(msg.getArg0());
-        shader.source = shader.originalSource = msg.getData().toStringUtf8();
-    }
-
-    // void API_ENTRY(glUseProgram)(GLuint program)
-    void glUseProgram(final Message msg) {
-        GLProgram oldCurrent = current;
-        current = getProgram(msg.getArg0());
-        if (null != oldCurrent && oldCurrent.delete && oldCurrent != current) {
-            for (Context ctx : context.shares)
-                if (ctx.serverShader.current == oldCurrent)
-                    return;
-            oldCurrent.context.programs.remove(new Integer(oldCurrent.name));
-        }
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerState.java b/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerState.java
deleted file mode 100644
index addf277..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerState.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.sdklib.util.SparseArray;
-import com.android.sdklib.util.SparseIntArray;
-
-class GLStencilState implements Cloneable {
-    public int ref, mask;
-    public GLEnum func;
-    public GLEnum sf, df, dp; // operation
-
-    @Override
-    public Object clone() {
-        try {
-            return super.clone();
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-}
-
-public class GLServerState implements Cloneable {
-    final Context context;
-    public GLStencilState front = new GLStencilState(), back = new GLStencilState();
-    public SparseIntArray enableDisables;
-
-    /** integer states set via a GL function and GLEnum; keyed by GLEnum.value */
-    public SparseArray<Message> integers;
-
-    /** states set only via a GL function; keyed by Function.getNumber() */
-    public SparseArray<Message> lastSetter;
-
-    GLServerState(final Context context) {
-        this.context = context;
-        enableDisables = new SparseIntArray();
-        enableDisables.put(GLEnum.GL_BLEND.value, 0);
-        enableDisables.put(GLEnum.GL_DITHER.value, 1);
-        enableDisables.put(GLEnum.GL_DEPTH_TEST.value, 0);
-        enableDisables.put(GLEnum.GL_STENCIL_TEST.value, 0);
-        enableDisables.put(GLEnum.GL_SCISSOR_TEST.value, 0);
-        enableDisables.put(GLEnum.GL_SAMPLE_COVERAGE.value, 0);
-        enableDisables.put(GLEnum.GL_SAMPLE_ALPHA_TO_COVERAGE.value, 0);
-        enableDisables.put(GLEnum.GL_POLYGON_OFFSET_FILL.value, 0);
-        enableDisables.put(GLEnum.GL_CULL_FACE.value, 0);
-        // enableDisables.put(GLEnum.GL_TEXTURE_2D.value, 1);
-
-        lastSetter = new SparseArray<Message>();
-        lastSetter.put(Function.glBlendColor.getNumber(), null);
-        // glBlendEquation overwrites glBlendEquationSeparate
-        lastSetter.put(Function.glBlendEquationSeparate.getNumber(), null);
-        // glBlendFunc overwrites glBlendFuncSeparate
-        lastSetter.put(Function.glBlendFuncSeparate.getNumber(), null);
-        lastSetter.put(Function.glClearColor.getNumber(), null);
-        lastSetter.put(Function.glClearDepthf.getNumber(), null);
-        lastSetter.put(Function.glClearStencil.getNumber(), null);
-        lastSetter.put(Function.glColorMask.getNumber(), null);
-        lastSetter.put(Function.glCullFace.getNumber(), null);
-        lastSetter.put(Function.glDepthMask.getNumber(), null);
-        lastSetter.put(Function.glDepthFunc.getNumber(), null);
-        lastSetter.put(Function.glDepthRangef.getNumber(), null);
-        lastSetter.put(Function.glFrontFace.getNumber(), null);
-        lastSetter.put(Function.glLineWidth.getNumber(), null);
-        lastSetter.put(Function.glPolygonOffset.getNumber(), null);
-        lastSetter.put(Function.glSampleCoverage.getNumber(), null);
-        lastSetter.put(Function.glScissor.getNumber(), null);
-        lastSetter.put(Function.glStencilMaskSeparate.getNumber(), null);
-        lastSetter.put(Function.glViewport.getNumber(), null);
-
-        integers = new SparseArray<Message>();
-        integers.put(GLEnum.GL_PACK_ALIGNMENT.value, null);
-        integers.put(GLEnum.GL_UNPACK_ALIGNMENT.value, null);
-    }
-
-    /** returns true if processed */
-    public boolean processMessage(final Message msg) {
-        switch (msg.getFunction()) {
-            case glBlendColor:
-            case glBlendEquation:
-            case glBlendEquationSeparate:
-            case glBlendFunc:
-            case glBlendFuncSeparate:
-            case glClearColor:
-            case glClearDepthf:
-            case glClearStencil:
-            case glColorMask:
-            case glCullFace:
-            case glDepthMask:
-            case glDepthFunc:
-            case glDepthRangef:
-                return setter(msg);
-            case glDisable:
-                return enableDisable(false, msg);
-            case glEnable:
-                return enableDisable(true, msg);
-            case glFrontFace:
-            case glLineWidth:
-                return setter(msg);
-            case glPixelStorei:
-                if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_PACK_ALIGNMENT)
-                    integers.put(msg.getArg0(), msg);
-                else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_UNPACK_ALIGNMENT)
-                    integers.put(msg.getArg0(), msg);
-                else
-                    assert false;
-                return true;
-            case glPolygonOffset:
-            case glSampleCoverage:
-            case glScissor:
-                return setter(msg);
-            case glStencilFunc: {
-                Message.Builder builder = msg.toBuilder();
-                builder.setArg2(msg.getArg1());
-                builder.setArg1(msg.getArg0());
-                builder.setArg0(GLEnum.GL_FRONT_AND_BACK.value);
-                return glStencilFuncSeparate(builder.build());
-            }
-            case glStencilFuncSeparate:
-                return glStencilFuncSeparate(msg);
-            case glStencilMask:
-            case glStencilMaskSeparate:
-                return setter(msg);
-            case glStencilOp: {
-                Message.Builder builder = msg.toBuilder();
-                builder.setArg3(msg.getArg2());
-                builder.setArg2(msg.getArg1());
-                builder.setArg1(msg.getArg0());
-                builder.setArg0(GLEnum.GL_FRONT_AND_BACK.value);
-                return glStencilOpSeparate(builder.build());
-            }
-            case glStencilOpSeparate:
-                return glStencilOpSeparate(msg);
-            case glViewport:
-                return setter(msg);
-            default:
-                return false;
-        }
-    }
-
-    boolean setter(final Message msg) {
-        switch (msg.getFunction()) {
-            case glBlendFunc:
-                lastSetter.put(Function.glBlendFuncSeparate.getNumber(), msg);
-                break;
-            case glBlendEquation:
-                lastSetter.put(Function.glBlendEquationSeparate.getNumber(), msg);
-                break;
-            case glStencilMask:
-                lastSetter.put(Function.glStencilMaskSeparate.getNumber(), msg);
-                break;
-            default:
-                lastSetter.put(msg.getFunction().getNumber(), msg);
-                break;
-        }
-        return true;
-    }
-
-    boolean enableDisable(boolean enable, final Message msg) {
-        int index = enableDisables.indexOfKey(msg.getArg0());
-        if (index < 0) {
-            System.out.print("invalid glDisable/Enable: ");
-            System.out.println(MessageFormatter.format(msg, false));
-            return true;
-        }
-        if ((enableDisables.valueAt(index) != 0) == enable)
-            return true; // TODO: redundant
-        enableDisables.put(msg.getArg0(), enable ? 1 : 0);
-        return true;
-    }
-
-    // void StencilFuncSeparate( enum face, enum func, int ref, uint mask )
-    boolean glStencilFuncSeparate(final Message msg) {
-        GLEnum ff = front.func, bf = back.func;
-        int fr = front.ref, br = back.ref;
-        int fm = front.mask, bm = back.mask;
-        final GLEnum face = GLEnum.valueOf(msg.getArg0());
-        if (face == GLEnum.GL_FRONT || face == GLEnum.GL_FRONT_AND_BACK) {
-            ff = GLEnum.valueOf(msg.getArg1());
-            fr = msg.getArg2();
-            fm = msg.getArg3();
-        }
-        if (face == GLEnum.GL_BACK || face == GLEnum.GL_FRONT_AND_BACK) {
-            bf = GLEnum.valueOf(msg.getArg1());
-            br = msg.getArg2();
-            bm = msg.getArg3();
-        }
-        if (ff == front.func && fr == front.ref && fm == front.mask)
-            if (bf == back.func && br == back.ref && bm == back.mask)
-                return true; // TODO: redundant
-        front.func = ff;
-        front.ref = fr;
-        front.mask = fm;
-        back.func = bf;
-        back.ref = br;
-        back.mask = bm;
-        return true;
-    }
-
-    // void StencilOpSeparate( enum face, enum sfail, enum dpfail, enum dppass )
-    boolean glStencilOpSeparate(final Message msg) {
-        GLEnum fsf = front.sf, fdf = front.df, fdp = front.dp;
-        GLEnum bsf = back.sf, bdf = back.df, bdp = back.dp;
-        final GLEnum face = GLEnum.valueOf(msg.getArg0());
-        if (face == GLEnum.GL_FRONT || face == GLEnum.GL_FRONT_AND_BACK) {
-            fsf = GLEnum.valueOf(msg.getArg1());
-            fdf = GLEnum.valueOf(msg.getArg2());
-            fdp = GLEnum.valueOf(msg.getArg3());
-        }
-        if (face == GLEnum.GL_BACK || face == GLEnum.GL_FRONT_AND_BACK) {
-            bsf = GLEnum.valueOf(msg.getArg1());
-            bdf = GLEnum.valueOf(msg.getArg2());
-            bdp = GLEnum.valueOf(msg.getArg3());
-        }
-        if (fsf == front.sf && fdf == front.df && fdp == front.dp)
-            if (bsf == back.sf && bdf == back.df && bdp == back.dp)
-                return true; // TODO: redundant
-        front.sf = fsf;
-        front.df = fdf;
-        front.dp = fdp;
-        back.sf = bsf;
-        back.df = bdf;
-        back.dp = bdp;
-        return true;
-    }
-
-    /** deep copy */
-    @Override
-    public GLServerState clone() {
-        try {
-            GLServerState newState = (GLServerState) super.clone();
-            newState.front = (GLStencilState) front.clone();
-            newState.back = (GLStencilState) back.clone();
-
-            newState.enableDisables = new SparseIntArray(enableDisables.size());
-            for (int i = 0; i < enableDisables.size(); i++)
-                newState.enableDisables.append(enableDisables.keyAt(i),
-                        enableDisables.valueAt(i));
-
-            newState.integers = new SparseArray<Message>(integers.size());
-            for (int i = 0; i < integers.size(); i++)
-                newState.integers.append(integers.keyAt(i), integers.valueAt(i));
-
-            newState.lastSetter = new SparseArray<Message>(lastSetter.size());
-            for (int i = 0; i < lastSetter.size(); i++)
-                newState.lastSetter.append(lastSetter.keyAt(i), lastSetter.valueAt(i));
-
-            return newState;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerTexture.java b/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerTexture.java
deleted file mode 100644
index 27676dd..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerTexture.java
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.sdklib.util.SparseArray;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-
-class GLTexture implements Cloneable {
-    public final int name;
-    public final GLEnum target;
-    public ArrayList<Message> contentChanges = new ArrayList<Message>();
-    public GLEnum wrapS = GLEnum.GL_REPEAT, wrapT = GLEnum.GL_REPEAT;
-    public GLEnum min = GLEnum.GL_NEAREST_MIPMAP_LINEAR;
-    public GLEnum mag = GLEnum.GL_LINEAR;
-    public GLEnum format;
-    public int width, height;
-
-    GLTexture(final int name, final GLEnum target) {
-        this.name = name;
-        this.target = target;
-    }
-
-    @Override
-    public GLTexture clone() {
-        try {
-            GLTexture copy = (GLTexture) super.clone();
-            copy.contentChanges = (ArrayList<Message>) contentChanges.clone();
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-
-    boolean processMessage(final Message msg) {
-        switch (msg.getFunction()) {
-            case glCompressedTexImage2D:
-            case glCopyTexImage2D:
-            case glTexImage2D:
-                if (msg.getArg1() == 0) { // level 0
-                    format = GLEnum.valueOf(msg.getArg2());
-                    width = msg.getArg3();
-                    height = msg.getArg4();
-                }
-                //$FALL-THROUGH$
-            case glCompressedTexSubImage2D:
-            case glCopyTexSubImage2D:
-            case glTexSubImage2D:
-            case glGenerateMipmap:
-                contentChanges.add(msg);
-                break;
-            default:
-                assert false;
-        }
-        return true;
-    }
-
-    @Override
-    public String toString() {
-        return String.format("%s %s %d*%d %d change(s)", target, format, width, height,
-                contentChanges.size());
-    }
-}
-
-public class GLServerTexture implements Cloneable {
-    Context context;
-
-    public GLEnum activeTexture = GLEnum.GL_TEXTURE0;
-    public int[] tmu2D;
-    public int[] tmuCube;
-    public SparseArray<GLTexture> textures = new SparseArray<GLTexture>();
-    public GLTexture tex2D = null, texCube = null;
-
-    GLServerTexture(final Context context, final int MAX_COMBINED_TEXTURE_IMAGE_UNITS) {
-        this.context = context;
-        textures.append(0, null);
-        tmu2D = new int[MAX_COMBINED_TEXTURE_IMAGE_UNITS];
-        tmuCube = new int[MAX_COMBINED_TEXTURE_IMAGE_UNITS];
-    }
-
-    public GLServerTexture clone(final Context copyContext) {
-        try {
-            GLServerTexture copy = (GLServerTexture) super.clone();
-            copy.context = copyContext;
-
-            copy.tmu2D = tmu2D.clone();
-            copy.tmuCube = tmuCube.clone();
-
-            copy.textures = new SparseArray<GLTexture>(textures.size());
-            for (int i = 0; i < textures.size(); i++)
-                if (textures.valueAt(i) != null)
-                    copy.textures.append(textures.keyAt(i), textures.valueAt(i).clone());
-                else
-                    copy.textures.append(textures.keyAt(i), null);
-
-            if (tex2D != null)
-                copy.tex2D = copy.textures.get(tex2D.name);
-            if (texCube != null)
-                copy.texCube = copy.textures.get(texCube.name);
-
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-
-    public boolean processMessage(final Message msg) {
-        switch (msg.getFunction()) {
-            case glActiveTexture:
-                activeTexture = GLEnum.valueOf(msg.getArg0());
-                return true;
-            case glBindTexture:
-                return bindTexture(msg.getArg0(), msg.getArg1());
-            case glCompressedTexImage2D:
-            case glCompressedTexSubImage2D:
-            case glCopyTexImage2D:
-            case glCopyTexSubImage2D:
-            case glTexImage2D:
-            case glTexSubImage2D:
-                switch (GLEnum.valueOf(msg.getArg0())) {
-                    case GL_TEXTURE_2D:
-                        if (tex2D != null)
-                            return tex2D.processMessage(msg);
-                        return true;
-                    case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-                    case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-                    case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-                    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-                    case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-                    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-                        if (texCube != null)
-                            return texCube.processMessage(msg);
-                        return true;
-                    default:
-                        return true;
-                }
-            case glDeleteTextures: {
-                final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
-                names.order(SampleView.targetByteOrder);
-                for (int i = 0; i < msg.getArg0(); i++) {
-                    final int name = names.getInt();
-                    if (tex2D != null && tex2D.name == name)
-                        bindTexture(GLEnum.GL_TEXTURE_2D.value, 0);
-                    if (texCube != null && texCube.name == name)
-                        bindTexture(GLEnum.GL_TEXTURE_CUBE_MAP.value, 0);
-                    if (name != 0)
-                        textures.remove(name);
-                }
-                return true;
-            }
-            case glGenerateMipmap:
-                if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_2D && tex2D != null)
-                    return tex2D.processMessage(msg);
-                else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_TEXTURE_CUBE_MAP
-                        && texCube != null)
-                    return texCube.processMessage(msg);
-                return true;
-            case glTexParameteri:
-                return texParameter(msg.getArg0(), msg.getArg1(), msg.getArg2());
-            case glTexParameterf:
-                return texParameter(msg.getArg0(), msg.getArg1(),
-                        (int) Float.intBitsToFloat(msg.getArg2()));
-            default:
-                return false;
-        }
-    }
-
-    boolean bindTexture(final int target, final int name) {
-        final int index = activeTexture.value - GLEnum.GL_TEXTURE0.value;
-        if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D) {
-            tex2D = textures.get(name);
-            if (name != 0 && tex2D == null)
-                textures.put(name, tex2D = new GLTexture(name,
-                        GLEnum.GL_TEXTURE_2D));
-            if (index >= 0 && index < tmu2D.length)
-                tmu2D[index] = name;
-        } else if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_CUBE_MAP) {
-            texCube = textures.get(name);
-            if (name != 0 && texCube == null)
-                textures.put(name, texCube = new GLTexture(name,
-                        GLEnum.GL_TEXTURE_CUBE_MAP));
-            if (index >= 0 && index < tmu2D.length)
-                tmu2D[index] = name;
-        } else
-            assert false;
-        return true;
-    }
-
-    boolean texParameter(final int target, final int pname, final int param) {
-        GLTexture tex = null;
-        if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_2D)
-            tex = tex2D;
-        else if (GLEnum.valueOf(target) == GLEnum.GL_TEXTURE_CUBE_MAP)
-            tex = texCube;
-        if (tex == null)
-            return true;
-        final GLEnum p = GLEnum.valueOf(param);
-        switch (GLEnum.valueOf(pname)) {
-            case GL_TEXTURE_WRAP_S:
-                tex.wrapS = p;
-                return true;
-            case GL_TEXTURE_WRAP_T:
-                tex.wrapT = p;
-                return true;
-            case GL_TEXTURE_MIN_FILTER:
-                tex.min = p;
-                return true;
-            case GL_TEXTURE_MAG_FILTER:
-                tex.mag = p;
-                return true;
-            default:
-                return true;
-        }
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerVertex.java b/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerVertex.java
deleted file mode 100644
index 5f9d513..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/GLServerVertex.java
+++ /dev/null
@@ -1,542 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.sdklib.util.SparseArray;
-
-import java.nio.ByteBuffer;
-
-class GLBuffer implements Cloneable {
-    public final int name;
-    public GLEnum usage;
-    public GLEnum target;
-    /** in SampleView.targetByteOrder */
-    public ByteBuffer data;
-
-    public GLBuffer(final int name) {
-        this.name = name;
-    }
-
-    /** deep copy */
-    @Override
-    public GLBuffer clone() {
-        try {
-            GLBuffer copy = (GLBuffer) super.clone();
-            if (data != null) {
-                copy.data = ByteBuffer.allocate(data.capacity());
-                copy.data.order(SampleView.targetByteOrder);
-                data.position(0);
-                copy.data.put(data);
-            }
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-}
-
-class GLAttribPointer implements Cloneable {
-    public int size; // number of values per vertex
-    public GLEnum type; // data type
-    public int stride; // bytes
-    /**
-     * element stride in bytes, used when fetching from buffer; not for fetching
-     * from user pointer since server already packed elements
-     */
-    int elemStride; // in bytes
-    /** element size in bytes */
-    int elemSize;
-    public int ptr; // pointer in debugger server or byte offset into buffer
-    public GLBuffer buffer;
-    public boolean normalized;
-    public boolean enabled;
-
-    /** deep copy, re-maps buffer into copyBuffers */
-    public GLAttribPointer clone(SparseArray<GLBuffer> copyBuffers) {
-        try {
-            GLAttribPointer copy = (GLAttribPointer) super.clone();
-            if (buffer != null)
-                copy.buffer = copyBuffers.get(buffer.name);
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-}
-
-public class GLServerVertex implements Cloneable {
-    public SparseArray<GLBuffer> buffers = new SparseArray<GLBuffer>();
-    public GLBuffer attribBuffer, indexBuffer; // current binding
-    public GLAttribPointer attribPointers[];
-    public float defaultAttribs[][];
-
-    public GLServerVertex(final int MAX_VERTEX_ATTRIBS) {
-        buffers.append(0, null);
-        attribPointers = new GLAttribPointer[MAX_VERTEX_ATTRIBS];
-        for (int i = 0; i < attribPointers.length; i++)
-            attribPointers[i] = new GLAttribPointer();
-        defaultAttribs = new float[MAX_VERTEX_ATTRIBS][4];
-        for (int i = 0; i < defaultAttribs.length; i++) {
-            defaultAttribs[i][0] = 0;
-            defaultAttribs[i][1] = 0;
-            defaultAttribs[i][2] = 0;
-            defaultAttribs[i][3] = 1;
-        }
-    }
-
-    /** deep copy */
-    @Override
-    public GLServerVertex clone() {
-        try {
-            GLServerVertex copy = (GLServerVertex) super.clone();
-
-            copy.buffers = new SparseArray<GLBuffer>(buffers.size());
-            for (int i = 0; i < buffers.size(); i++)
-                if (buffers.valueAt(i) != null)
-                    copy.buffers.append(buffers.keyAt(i), buffers.valueAt(i).clone());
-                else
-                    copy.buffers.append(buffers.keyAt(i), null);
-
-            if (attribBuffer != null)
-                copy.attribBuffer = copy.buffers.get(attribBuffer.name);
-            if (indexBuffer != null)
-                copy.indexBuffer = copy.buffers.get(indexBuffer.name);
-
-            copy.attribPointers = new GLAttribPointer[attribPointers.length];
-            for (int i = 0; i < attribPointers.length; i++)
-                copy.attribPointers[i] = attribPointers[i].clone(copy.buffers);
-
-            copy.defaultAttribs = defaultAttribs.clone();
-
-            return copy;
-        } catch (CloneNotSupportedException e) {
-            e.printStackTrace();
-            assert false;
-            return null;
-        }
-    }
-
-    /** returns true if processed */
-    public boolean process(final Message msg) {
-        switch (msg.getFunction()) {
-            case glBindBuffer:
-                glBindBuffer(msg);
-                return true;
-            case glBufferData:
-                glBufferData(msg);
-                return true;
-            case glBufferSubData:
-                glBufferSubData(msg);
-                return true;
-            case glDeleteBuffers:
-                glDeleteBuffers(msg);
-                return true;
-            case glDrawArrays:
-            case glDrawElements:
-                return true;
-            case glDisableVertexAttribArray:
-                glDisableVertexAttribArray(msg);
-                return true;
-            case glEnableVertexAttribArray:
-                glEnableVertexAttribArray(msg);
-                return true;
-            case glGenBuffers:
-                glGenBuffers(msg);
-                return true;
-            case glVertexAttribPointer:
-                glVertexAttribPointer(msg);
-                return true;
-            case glVertexAttrib1f:
-                glVertexAttrib1f(msg);
-                return true;
-            case glVertexAttrib1fv:
-                glVertexAttrib1fv(msg);
-                return true;
-            case glVertexAttrib2f:
-                glVertexAttrib2f(msg);
-                return true;
-            case glVertexAttrib2fv:
-                glVertexAttrib2fv(msg);
-                return true;
-            case glVertexAttrib3f:
-                glVertexAttrib3f(msg);
-                return true;
-            case glVertexAttrib3fv:
-                glVertexAttrib3fv(msg);
-                return true;
-            case glVertexAttrib4f:
-                glVertexAttrib4f(msg);
-                return true;
-            case glVertexAttrib4fv:
-                glVertexAttrib4fv(msg);
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    // void API_ENTRY(glBindBuffer)(GLenum target, GLuint buffer)
-    public void glBindBuffer(Message msg) {
-        if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_ARRAY_BUFFER) {
-            attribBuffer = buffers.get(msg.getArg1());
-            if (null != attribBuffer)
-                attribBuffer.target = GLEnum.GL_ARRAY_BUFFER;
-        } else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_ELEMENT_ARRAY_BUFFER) {
-            indexBuffer = buffers.get(msg.getArg1());
-            if (null != indexBuffer)
-                indexBuffer.target = GLEnum.GL_ELEMENT_ARRAY_BUFFER;
-        } else
-            assert false;
-    }
-
-    // void API_ENTRY(glBufferData)(GLenum target, GLsizeiptr size, const
-    // GLvoid:size:in data, GLenum usage)
-    public void glBufferData(Message msg) {
-        if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_ARRAY_BUFFER) {
-            attribBuffer.usage = GLEnum.valueOf(msg.getArg3());
-            attribBuffer.data = msg.getData().asReadOnlyByteBuffer();
-            attribBuffer.data.order(SampleView.targetByteOrder);
-        } else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_ELEMENT_ARRAY_BUFFER) {
-            indexBuffer.usage = GLEnum.valueOf(msg.getArg3());
-            indexBuffer.data = msg.getData().asReadOnlyByteBuffer();
-            indexBuffer.data.order(SampleView.targetByteOrder);
-        } else
-            assert false;
-    }
-
-    // void API_ENTRY(glBufferSubData)(GLenum target, GLintptr offset,
-    // GLsizeiptr size, const GLvoid:size:in data)
-    public void glBufferSubData(Message msg) {
-        if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_ARRAY_BUFFER) {
-            if (attribBuffer.data.isReadOnly()) {
-                ByteBuffer buffer = ByteBuffer.allocate(attribBuffer.data.capacity());
-                buffer.order(SampleView.targetByteOrder);
-                buffer.put(attribBuffer.data);
-                attribBuffer.data = buffer;
-            }
-            attribBuffer.data.position(msg.getArg1());
-            attribBuffer.data.put(msg.getData().asReadOnlyByteBuffer());
-        } else if (GLEnum.valueOf(msg.getArg0()) == GLEnum.GL_ELEMENT_ARRAY_BUFFER) {
-            if (indexBuffer.data.isReadOnly()) {
-                ByteBuffer buffer = ByteBuffer.allocate(indexBuffer.data.capacity());
-                buffer.order(SampleView.targetByteOrder);
-                buffer.put(indexBuffer.data);
-                indexBuffer.data = buffer;
-            }
-            indexBuffer.data.position(msg.getArg1());
-            indexBuffer.data.put(msg.getData().asReadOnlyByteBuffer());
-        } else
-            assert false;
-    }
-
-    // void glDeleteBuffers(GLsizei n, const GLuint* buffers)
-    public void glDeleteBuffers(Message msg) {
-        final int n = msg.getArg0();
-        final ByteBuffer names = msg.getData().asReadOnlyByteBuffer();
-        names.order(SampleView.targetByteOrder);
-        for (int i = 0; i < n; i++) {
-            final int name = names.getInt();
-            final GLBuffer buffer = buffers.get(name);
-            for (int j = 0; j < attribPointers.length; j++)
-                if (attribPointers[j].buffer == buffer) {
-                    attribPointers[j].buffer = null;
-                    attribPointers[j].enabled = false;
-                }
-            if (attribBuffer == buffer)
-                attribBuffer = null;
-            if (indexBuffer == buffer)
-                indexBuffer = null;
-            buffers.remove(name);
-        }
-    }
-
-    // void glDisableVertexAttribArray(GLuint index)
-    public void glDisableVertexAttribArray(Message msg) {
-        if (msg.getArg0() >= 0 && msg.getArg0() < attribPointers.length)
-            attribPointers[msg.getArg0()].enabled = false;
-    }
-
-    float fetchConvert(final ByteBuffer src, final GLEnum type, final boolean normalized) {
-        if (GLEnum.GL_FLOAT == type)
-            return Float.intBitsToFloat(src.getInt());
-        else if (GLEnum.GL_UNSIGNED_INT == type)
-            if (normalized)
-                return (src.getInt() & 0xffffffffL) / (2e32f - 1);
-            else
-                return src.getInt() & 0xffffffffL;
-        else if (GLEnum.GL_INT == type)
-            if (normalized)
-                return (src.getInt() * 2 + 1) / (2e32f - 1);
-            else
-                return src.getInt();
-        else if (GLEnum.GL_UNSIGNED_SHORT == type)
-            if (normalized)
-                return (src.getShort() & 0xffff) / (2e16f - 1);
-            else
-                return src.getShort() & 0xffff;
-        else if (GLEnum.GL_SHORT == type)
-            if (normalized)
-                return (src.getShort() * 2 + 1) / (2e16f - 1);
-            else
-                return src.getShort();
-        else if (GLEnum.GL_UNSIGNED_BYTE == type)
-            if (normalized)
-                return (src.get() & 0xff) / (2e8f - 1);
-            else
-                return src.get() & 0xff;
-        else if (GLEnum.GL_BYTE == type)
-            if (normalized)
-                return (src.get() * 2 + 1) / (2e8f - 1);
-            else
-                return src.get();
-        else if (GLEnum.GL_FIXED == type)
-            if (normalized)
-                return (src.getInt() * 2 + 1) / (2e32f - 1);
-            else
-                return src.getInt() / (2e16f);
-        else
-            assert false;
-        return 0;
-    }
-
-    static int typeSize(final GLEnum type) {
-        switch (type) {
-            case GL_FLOAT:
-            case GL_UNSIGNED_INT:
-            case GL_INT:
-            case GL_FIXED:
-                return 4;
-            case GL_UNSIGNED_SHORT:
-            case GL_SHORT:
-                return 2;
-            case GL_UNSIGNED_BYTE:
-            case GL_BYTE:
-                return 1;
-            default:
-                assert false;
-                return 0;
-        }
-    }
-
-    void fetch(final int maxAttrib, final int index, final int dstIdx, final ByteBuffer nonVBO,
-            final float[][] fetchedAttribs) {
-        for (int i = 0; i < maxAttrib; i++) {
-            final GLAttribPointer attrib = attribPointers[i];
-            int size = 0;
-            if (attrib.enabled) {
-                size = attrib.size;
-                if (null != attrib.buffer) {
-                    final ByteBuffer src = attrib.buffer.data;
-                    src.position(attrib.ptr + index * attrib.elemStride);
-                    for (int j = 0; j < size; j++)
-                        fetchedAttribs[i][dstIdx * 4 + j] = fetchConvert(src, attrib.type,
-                                attrib.normalized);
-                } else
-                    for (int j = 0; j < size; j++)
-                        fetchedAttribs[i][dstIdx * 4 + j] = fetchConvert(nonVBO, attrib.type,
-                                attrib.normalized);
-            }
-            if (size < 1)
-                fetchedAttribs[i][dstIdx * 4 + 0] = defaultAttribs[i][0];
-            if (size < 2)
-                fetchedAttribs[i][dstIdx * 4 + 1] = defaultAttribs[i][1];
-            if (size < 3)
-                fetchedAttribs[i][dstIdx * 4 + 2] = defaultAttribs[i][2];
-            if (size < 4)
-                fetchedAttribs[i][dstIdx * 4 + 3] = defaultAttribs[i][3];
-        }
-    }
-
-    /**
-     * fetches and converts vertex data from buffers, defaults and user pointers
-     * into MessageData; mainly for display use
-     */
-    public void glDrawArrays(MessageData msgData) {
-        final Message msg = msgData.msg;
-        if (!msg.hasArg7())
-            return;
-        final int maxAttrib = msg.getArg7();
-        final int first = msg.getArg1(), count = msg.getArg2();
-        msgData.attribs = new float[maxAttrib][count * 4];
-        ByteBuffer arrays = null;
-        if (msg.hasData()) // server sends user pointer attribs
-        {
-            arrays = msg.getData().asReadOnlyByteBuffer();
-            arrays.order(SampleView.targetByteOrder);
-        }
-        for (int i = 0; i < count; i++)
-            fetch(maxAttrib, first + i, i, arrays, msgData.attribs);
-        assert null == arrays || arrays.remaining() == 0;
-    }
-
-    // void glDrawElements(GLenum mode, GLsizei count, GLenum type, const
-    // GLvoid* indices)
-    /**
-     * fetches and converts vertex data from buffers, defaults and user pointers
-     * and indices from buffer/pointer into MessageData; mainly for display use
-     */
-    public void glDrawElements(MessageData msgData) {
-        final Message msg = msgData.msg;
-        if (!msg.hasArg7())
-            return;
-        final int maxAttrib = msg.getArg7();
-        final int count = msg.getArg1();
-        final GLEnum type = GLEnum.valueOf(msg.getArg2());
-        msgData.attribs = new float[maxAttrib][count * 4];
-        msgData.indices = new short[count];
-        ByteBuffer arrays = null, index = null;
-        if (msg.hasData()) // server sends user pointer attribs
-        {
-            arrays = msg.getData().asReadOnlyByteBuffer();
-            arrays.order(SampleView.targetByteOrder);
-        }
-        if (null == indexBuffer)
-            index = arrays; // server also interleaves user pointer indices
-        else {
-            index = indexBuffer.data;
-            index.position(msg.getArg3());
-        }
-        if (GLEnum.GL_UNSIGNED_SHORT == type) {
-            for (int i = 0; i < count; i++) {
-                msgData.indices[i] = index.getShort();
-                fetch(maxAttrib, msgData.indices[i] & 0xffff, i, arrays, msgData.attribs);
-            }
-        } else if (GLEnum.GL_UNSIGNED_BYTE == type) {
-            for (int i = 0; i < count; i++) {
-                msgData.indices[i] = (short) (index.get() & 0xff);
-                fetch(maxAttrib, msgData.indices[i], i, arrays, msgData.attribs);
-            }
-        } else
-            assert false;
-        assert null == arrays || arrays.remaining() == 0;
-    }
-
-    // void glEnableVertexAttribArray(GLuint index)
-    public void glEnableVertexAttribArray(Message msg) {
-        if (msg.getArg0() >= 0 && msg.getArg0() < attribPointers.length)
-            attribPointers[msg.getArg0()].enabled = true;
-    }
-
-    // void API_ENTRY(glGenBuffers)(GLsizei n, GLuint:n:out buffers)
-    public void glGenBuffers(Message msg) {
-        final int n = msg.getArg0();
-        final ByteBuffer buffer = msg.getData().asReadOnlyByteBuffer();
-        buffer.order(SampleView.targetByteOrder);
-        for (int i = 0; i < n; i++) {
-            final int name = buffer.getInt();
-            final int index = buffers.indexOfKey(name);
-            if (index < 0)
-                buffers.append(name, new GLBuffer(name));
-        }
-    }
-
-    // void glVertexAttribPointer(GLuint index, GLint size, GLenum type,
-    // GLboolean normalized, GLsizei stride, const GLvoid* ptr)
-    public void glVertexAttribPointer(Message msg) {
-        GLAttribPointer attrib = attribPointers[msg.getArg0()];
-        attrib.size = msg.getArg1();
-        attrib.type = GLEnum.valueOf(msg.getArg2());
-        attrib.normalized = msg.getArg3() != 0;
-        attrib.stride = msg.getArg4();
-        attrib.elemSize = attrib.size * typeSize(attrib.type);
-        if (attrib.stride == 0)
-            attrib.elemStride = attrib.elemSize;
-        else
-            attrib.elemStride = attrib.stride;
-        attrib.ptr = msg.getArg5();
-        attrib.buffer = attribBuffer;
-    }
-
-    // void glVertexAttrib1f(GLuint indx, GLfloat x)
-    public void glVertexAttrib1f(Message msg) {
-        glVertexAttrib4f(msg.getArg0(), Float.intBitsToFloat(msg.getArg1()),
-                0, 0, 1);
-    }
-
-    // void glVertexAttrib1fv(GLuint indx, const GLfloat* values)
-    public void glVertexAttrib1fv(Message msg) {
-        final ByteBuffer values = msg.getData().asReadOnlyByteBuffer();
-        values.order(SampleView.targetByteOrder);
-        glVertexAttrib4f(msg.getArg0(),
-                Float.intBitsToFloat(values.getInt()),
-                0, 0, 1);
-    }
-
-    // void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
-    public void glVertexAttrib2f(Message msg) {
-        glVertexAttrib4f(msg.getArg0(), Float.intBitsToFloat(msg.getArg1()),
-                Float.intBitsToFloat(msg.getArg2()), 0, 1);
-    }
-
-    // void glVertexAttrib2fv(GLuint indx, const GLfloat* values)
-    public void glVertexAttrib2fv(Message msg) {
-        final ByteBuffer values = msg.getData().asReadOnlyByteBuffer();
-        values.order(SampleView.targetByteOrder);
-        glVertexAttrib4f(msg.getArg0(),
-                Float.intBitsToFloat(values.getInt()),
-                Float.intBitsToFloat(values.getInt()), 0, 1);
-    }
-
-    // void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
-    public void glVertexAttrib3f(Message msg) {
-        glVertexAttrib4f(msg.getArg0(), Float.intBitsToFloat(msg.getArg1()),
-                Float.intBitsToFloat(msg.getArg2()),
-                Float.intBitsToFloat(msg.getArg3()), 1);
-    }
-
-    // void glVertexAttrib3fv(GLuint indx, const GLfloat* values)
-    public void glVertexAttrib3fv(Message msg) {
-        final ByteBuffer values = msg.getData().asReadOnlyByteBuffer();
-        values.order(SampleView.targetByteOrder);
-        glVertexAttrib4f(msg.getArg0(),
-                Float.intBitsToFloat(values.getInt()),
-                Float.intBitsToFloat(values.getInt()),
-                Float.intBitsToFloat(values.getInt()), 1);
-    }
-
-    public void glVertexAttrib4f(Message msg) {
-        glVertexAttrib4f(msg.getArg0(), Float.intBitsToFloat(msg.getArg1()),
-                Float.intBitsToFloat(msg.getArg2()),
-                Float.intBitsToFloat(msg.getArg3()),
-                Float.intBitsToFloat(msg.getArg4()));
-    }
-
-    void glVertexAttrib4f(int indx, float x, float y, float z, float w) {
-        if (indx < 0 || indx >= defaultAttribs.length)
-            return;
-        defaultAttribs[indx][0] = x;
-        defaultAttribs[indx][1] = y;
-        defaultAttribs[indx][2] = z;
-        defaultAttribs[indx][3] = w;
-    }
-
-    // void glVertexAttrib4fv(GLuint indx, const GLfloat* values)
-    public void glVertexAttrib4fv(Message msg) {
-        final ByteBuffer values = msg.getData().asReadOnlyByteBuffer();
-        values.order(SampleView.targetByteOrder);
-        glVertexAttrib4f(msg.getArg0(),
-                Float.intBitsToFloat(values.getInt()),
-                Float.intBitsToFloat(values.getInt()),
-                Float.intBitsToFloat(values.getInt()),
-                Float.intBitsToFloat(values.getInt()));
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageData.java b/tools/glesv2debugger/src/com/android/glesv2debugger/MessageData.java
deleted file mode 100644
index 321c538..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageData.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-
-import org.eclipse.swt.graphics.Device;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.widgets.Display;
-
-public class MessageData {
-    public final Message msg;
-    private Image image = null; // texture
-    public String shader = null; // shader source
-    public String text;
-    public String[] columns = new String[3];
-
-    float[][] attribs = null;
-    short[] indices;
-
-    public MessageData(final Device device, final Message msg, final Context context) {
-        this.msg = msg;
-        StringBuilder builder = new StringBuilder();
-        final Function function = msg.getFunction();
-        if (function != Message.Function.ACK && msg.getType() != Type.BeforeCall)
-            assert msg.hasTime();
-        builder.append(columns[0] = function.name());
-        while (builder.length() < 30)
-            builder.append(' ');
-        columns[1] = String.format("%.3f", msg.getTime());
-        if (msg.hasClock())
-            columns[1] += String.format(":%.3f", msg.getClock());
-        builder.append(columns[1]);
-
-        builder.append("  ");
-        builder.append(String.format("0x%08X", msg.getContextId()));
-        builder.append("  ");
-        columns[2] = "";
-        if (msg.getType() == Type.BeforeCall) // incomplete call, client SKIPPED
-            columns[2] = "[BeforeCall(AfterCall missing)] ";
-        else if (msg.getType() == Type.AfterGeneratedCall)
-            columns[2] = "[AfterGeneratedCall] ";
-        else
-            assert msg.getType() == Type.CompleteCall;
-        columns[2] += MessageFormatter.format(msg, false);
-        builder.append(columns[2]);
-        switch (function) {
-            case glDrawArrays:
-                if (!msg.hasArg7())
-                    break;
-                context.serverVertex.glDrawArrays(this);
-                break;
-            case glDrawElements:
-                if (!msg.hasArg7())
-                    break;
-                context.serverVertex.glDrawElements(this);
-                break;
-            case glShaderSource:
-                shader = msg.getData().toStringUtf8();
-                break;
-
-        }
-        text = builder.toString();
-    }
-
-    public Image getImage() {
-        if (image != null)
-            return image;
-        ImageData imageData = null;
-        switch (msg.getFunction()) {
-            case glTexImage2D:
-                if (!msg.hasData())
-                    return null;
-                imageData = MessageProcessor.receiveImage(msg.getArg3(), msg
-                        .getArg4(), msg.getArg6(), msg.getArg7(), msg.getData());
-                return image = new Image(Display.getCurrent(), imageData);
-            case glTexSubImage2D:
-                assert msg.hasData();
-                imageData = MessageProcessor.receiveImage(msg.getArg4(), msg
-                        .getArg5(), msg.getArg6(), msg.getArg7(), msg.getData());
-                return image = new Image(Display.getCurrent(), imageData);
-            case glCopyTexImage2D:
-                imageData = MessageProcessor.receiveImage(msg.getArg5(), msg.getArg6(),
-                        msg.getPixelFormat(), msg.getPixelType(), msg.getData());
-                imageData = imageData.scaledTo(imageData.width, -imageData.height);
-                return image = new Image(Display.getCurrent(), imageData);
-            case glCopyTexSubImage2D:
-                imageData = MessageProcessor.receiveImage(msg.getArg6(), msg.getArg7(),
-                        msg.getPixelFormat(), msg.getPixelType(), msg.getData());
-                imageData = imageData.scaledTo(imageData.width, -imageData.height);
-                return image = new Image(Display.getCurrent(), imageData);
-            case glReadPixels:
-                if (!msg.hasData())
-                    return null;
-                imageData = MessageProcessor.receiveImage(msg.getArg2(), msg.getArg3(),
-                        msg.getArg4(), msg.getArg5(), msg.getData());
-                imageData = imageData.scaledTo(imageData.width, -imageData.height);
-                return image = new Image(Display.getCurrent(), imageData);
-            case eglSwapBuffers:
-                if (!msg.hasData())
-                    return null;
-                imageData = MessageProcessor.receiveImage(msg.getImageWidth(),
-                        msg.getImageHeight(), msg.getPixelFormat(), msg.getPixelType(),
-                        msg.getData());
-                imageData = imageData.scaledTo(imageData.width, -imageData.height);
-                return image = new Image(Display.getCurrent(), imageData);
-            default:
-                return null;
-        }
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageFormatter.java b/tools/glesv2debugger/src/com/android/glesv2debugger/MessageFormatter.java
deleted file mode 100644
index b9fa681..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageFormatter.java
+++ /dev/null
@@ -1,1488 +0,0 @@
-/*
- ** Copyright 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.
- */
-
-// auto generated by generate_MessageFormatter_java.py"
-
-package com.android.glesv2debugger;
-
-import java.nio.ByteBuffer;
-
-public class MessageFormatter {
-
-    static String formatFloats(int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            ret += Float.intBitsToFloat(data.getInt());
-            if (i < count - 1)
-                ret += ", ";
-        }
-        return ret + "}";
-    }
-
-    static String formatInts(int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            ret += data.getInt();
-            if (i < count - 1)
-                ret += ", ";
-        }
-        return ret + "}";
-    }
-
-    static String formatUInts(int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            long bits = data.getInt() & 0xffffffff;
-            ret += bits;
-            if (i < count - 1)
-                ret += ", ";
-        }
-        return ret + "}";
-    }
-
-    static String formatMatrix(int columns, int count, final ByteBuffer data) {
-        if (data.remaining() == 0)
-            return "{}";
-        data.order(SampleView.targetByteOrder);
-        String ret = "{";
-        for (int i = 0; i < count; i++) {
-            ret += Float.intBitsToFloat(data.getInt());
-            if (i < count - 1)
-                ret += ", ";
-            if (i % columns == columns - 1)
-                ret += "\n                                             ";
-        }
-        return ret + "}";
-    }
-
-    public static String format(final DebuggerMessage.Message msg,
-                                final boolean code) {
-        String str;
-        switch (msg.getFunction()) {
-            case glActiveTexture:
-                str = String.format("%s(%s%s)",
-                    (code ? "glActiveTexture" : "void")
-                    , (code ? "/*texture*/ " : "texture=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glAttachShader:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glAttachShader" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg1());
-                break;
-            case glBindAttribLocation:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glBindAttribLocation" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg1()
-                    , (code ? "/*name*/ " : "name=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glBindBuffer:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glBindBuffer" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*buffer*/ " : "buffer=")
-                    , (code ? "buffer_" : "") + msg.getArg1());
-                break;
-            case glBindFramebuffer:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glBindFramebuffer" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*framebuffer*/ " : "framebuffer=")
-                    , (code ? "framebuffer_" : "") + msg.getArg1());
-                break;
-            case glBindRenderbuffer:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glBindRenderbuffer" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*renderbuffer*/ " : "renderbuffer=")
-                    , (code ? "renderbuffer_" : "") + msg.getArg1());
-                break;
-            case glBindTexture:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glBindTexture" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*texture*/ " : "texture=")
-                    , (code ? "texture_" : "") + msg.getArg1());
-                break;
-            case glBlendColor:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glBlendColor" : "void")
-                    , (code ? "/*red*/ " : "red=")
-                    , Float.intBitsToFloat(msg.getArg0())
-                    , (code ? "/*green*/ " : "green=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*blue*/ " : "blue=")
-                    , Float.intBitsToFloat(msg.getArg2())
-                    , (code ? "/*alpha*/ " : "alpha=")
-                    , Float.intBitsToFloat(msg.getArg3()));
-                break;
-            case glBlendEquation:
-                str = String.format("%s(%s%s)",
-                    (code ? "glBlendEquation" : "void")
-                    , (code ? "/*mode*/ " : "mode=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glBlendEquationSeparate:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glBlendEquationSeparate" : "void")
-                    , (code ? "/*modeRGB*/ " : "modeRGB=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*modeAlpha*/ " : "modeAlpha=")
-                    , GLEnum.valueOf(msg.getArg1()));
-                break;
-            case glBlendFunc:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glBlendFunc" : "void")
-                    , (code ? "/*sfactor*/ " : "sfactor=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*dfactor*/ " : "dfactor=")
-                    , GLEnum.valueOf(msg.getArg1()));
-                break;
-            case glBlendFuncSeparate:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glBlendFuncSeparate" : "void")
-                    , (code ? "/*srcRGB*/ " : "srcRGB=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*dstRGB*/ " : "dstRGB=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*srcAlpha*/ " : "srcAlpha=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*dstAlpha*/ " : "dstAlpha=")
-                    , GLEnum.valueOf(msg.getArg3()));
-                break;
-            case glBufferData:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glBufferData" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*size*/ " : "size=")
-                    , msg.getArg1()
-                    , (code ? "/*data*/ " : "data=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*usage*/ " : "usage=")
-                    , GLEnum.valueOf(msg.getArg3()));
-                break;
-            case glBufferSubData:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glBufferSubData" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*offset*/ " : "offset=")
-                    , msg.getArg1()
-                    , (code ? "/*size*/ " : "size=")
-                    , msg.getArg2()
-                    , (code ? "/*data*/ " : "data=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
-                break;
-            case glCheckFramebufferStatus:
-                str = String.format("%s(%s%s)",
-                    (code ? "glCheckFramebufferStatus" : GLEnum.valueOf(msg.getRet()))
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glClear:
-                str = String.format("%s(%s%s)",
-                    (code ? "glClear" : "void")
-                    , (code ? "/*mask*/ " : "mask=")
-                    , msg.getArg0());
-                break;
-            case glClearColor:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glClearColor" : "void")
-                    , (code ? "/*red*/ " : "red=")
-                    , Float.intBitsToFloat(msg.getArg0())
-                    , (code ? "/*green*/ " : "green=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*blue*/ " : "blue=")
-                    , Float.intBitsToFloat(msg.getArg2())
-                    , (code ? "/*alpha*/ " : "alpha=")
-                    , Float.intBitsToFloat(msg.getArg3()));
-                break;
-            case glClearDepthf:
-                str = String.format("%s(%s%s)",
-                    (code ? "glClearDepthf" : "void")
-                    , (code ? "/*depth*/ " : "depth=")
-                    , Float.intBitsToFloat(msg.getArg0()));
-                break;
-            case glClearStencil:
-                str = String.format("%s(%s%s)",
-                    (code ? "glClearStencil" : "void")
-                    , (code ? "/*s*/ " : "s=")
-                    , msg.getArg0());
-                break;
-            case glColorMask:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glColorMask" : "void")
-                    , (code ? "/*red*/ " : "red=")
-                    , msg.getArg0()
-                    , (code ? "/*green*/ " : "green=")
-                    , msg.getArg1()
-                    , (code ? "/*blue*/ " : "blue=")
-                    , msg.getArg2()
-                    , (code ? "/*alpha*/ " : "alpha=")
-                    , msg.getArg3());
-                break;
-            case glCompileShader:
-                str = String.format("%s(%s%s)",
-                    (code ? "glCompileShader" : "void")
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0());
-                break;
-            case glCompressedTexImage2D:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glCompressedTexImage2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg1()
-                    , (code ? "/*internalformat*/ " : "internalformat=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg3()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg4()
-                    , (code ? "/*border*/ " : "border=")
-                    , msg.getArg5()
-                    , (code ? "/*imageSize*/ " : "imageSize=")
-                    , msg.getArg6()
-                    , (code ? "/*data*/ " : "data=")
-                    , (code ? "arg7" : "0x" + Integer.toHexString(msg.getArg7())));
-                break;
-            case glCompressedTexSubImage2D:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glCompressedTexSubImage2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg1()
-                    , (code ? "/*xoffset*/ " : "xoffset=")
-                    , msg.getArg2()
-                    , (code ? "/*yoffset*/ " : "yoffset=")
-                    , msg.getArg3()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg4()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg5()
-                    , (code ? "/*format*/ " : "format=")
-                    , GLEnum.valueOf(msg.getArg6())
-                    , (code ? "/*imageSize*/ " : "imageSize=")
-                    , msg.getArg7()
-                    , (code ? "/*data*/ " : "data=")
-                    , (code ? "arg8" : "0x" + Integer.toHexString(msg.getArg8())));
-                break;
-            case glCopyTexImage2D:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glCopyTexImage2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg1()
-                    , (code ? "/*internalformat*/ " : "internalformat=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg3()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg4()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg5()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg6()
-                    , (code ? "/*border*/ " : "border=")
-                    , msg.getArg7());
-                break;
-            case glCopyTexSubImage2D:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glCopyTexSubImage2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg1()
-                    , (code ? "/*xoffset*/ " : "xoffset=")
-                    , msg.getArg2()
-                    , (code ? "/*yoffset*/ " : "yoffset=")
-                    , msg.getArg3()
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg4()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg5()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg6()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg7());
-                break;
-            case glCreateProgram:
-                str = String.format("%s()",
-                    (code ? "glCreateProgram" : msg.getRet())
-);
-                break;
-            case glCreateShader:
-                str = String.format("%s(%s%s)",
-                    (code ? "glCreateShader" : msg.getRet())
-                    , (code ? "/*type*/ " : "type=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glCullFace:
-                str = String.format("%s(%s%s)",
-                    (code ? "glCullFace" : "void")
-                    , (code ? "/*mode*/ " : "mode=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glDeleteBuffers:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glDeleteBuffers" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*buffers*/ " : "buffers=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glDeleteFramebuffers:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glDeleteFramebuffers" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*framebuffers*/ " : "framebuffers=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glDeleteProgram:
-                str = String.format("%s(%s%s)",
-                    (code ? "glDeleteProgram" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0());
-                break;
-            case glDeleteRenderbuffers:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glDeleteRenderbuffers" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*renderbuffers*/ " : "renderbuffers=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glDeleteShader:
-                str = String.format("%s(%s%s)",
-                    (code ? "glDeleteShader" : "void")
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0());
-                break;
-            case glDeleteTextures:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glDeleteTextures" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*textures*/ " : "textures=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glDepthFunc:
-                str = String.format("%s(%s%s)",
-                    (code ? "glDepthFunc" : "void")
-                    , (code ? "/*func*/ " : "func=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glDepthMask:
-                str = String.format("%s(%s%s)",
-                    (code ? "glDepthMask" : "void")
-                    , (code ? "/*flag*/ " : "flag=")
-                    , msg.getArg0());
-                break;
-            case glDepthRangef:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glDepthRangef" : "void")
-                    , (code ? "/*zNear*/ " : "zNear=")
-                    , Float.intBitsToFloat(msg.getArg0())
-                    , (code ? "/*zFar*/ " : "zFar=")
-                    , Float.intBitsToFloat(msg.getArg1()));
-                break;
-            case glDetachShader:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glDetachShader" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg1());
-                break;
-            case glDisable:
-                str = String.format("%s(%s%s)",
-                    (code ? "glDisable" : "void")
-                    , (code ? "/*cap*/ " : "cap=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glDisableVertexAttribArray:
-                str = String.format("%s(%s%s)",
-                    (code ? "glDisableVertexAttribArray" : "void")
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg0());
-                break;
-            case glDrawArrays:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glDrawArrays" : "void")
-                    , (code ? "/*mode*/ " : "mode=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*first*/ " : "first=")
-                    , msg.getArg1()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg2());
-                break;
-            case glDrawElements:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glDrawElements" : "void")
-                    , (code ? "/*mode*/ " : "mode=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*type*/ " : "type=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*indices*/ " : "indices=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
-                break;
-            case glEnable:
-                str = String.format("%s(%s%s)",
-                    (code ? "glEnable" : "void")
-                    , (code ? "/*cap*/ " : "cap=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glEnableVertexAttribArray:
-                str = String.format("%s(%s%s)",
-                    (code ? "glEnableVertexAttribArray" : "void")
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg0());
-                break;
-            case glFinish:
-                str = String.format("%s()",
-                    (code ? "glFinish" : "void")
-);
-                break;
-            case glFlush:
-                str = String.format("%s()",
-                    (code ? "glFlush" : "void")
-);
-                break;
-            case glFramebufferRenderbuffer:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glFramebufferRenderbuffer" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*attachment*/ " : "attachment=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*renderbuffertarget*/ " : "renderbuffertarget=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*renderbuffer*/ " : "renderbuffer=")
-                    , (code ? "renderbuffer_" : "") + msg.getArg3());
-                break;
-            case glFramebufferTexture2D:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glFramebufferTexture2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*attachment*/ " : "attachment=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*textarget*/ " : "textarget=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*texture*/ " : "texture=")
-                    , (code ? "texture_" : "") + msg.getArg3()
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg4());
-                break;
-            case glFrontFace:
-                str = String.format("%s(%s%s)",
-                    (code ? "glFrontFace" : "void")
-                    , (code ? "/*mode*/ " : "mode=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glGenBuffers:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGenBuffers" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*buffers*/ " : "buffers=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glGenerateMipmap:
-                str = String.format("%s(%s%s)",
-                    (code ? "glGenerateMipmap" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glGenFramebuffers:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGenFramebuffers" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*framebuffers*/ " : "framebuffers=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glGenRenderbuffers:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGenRenderbuffers" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*renderbuffers*/ " : "renderbuffers=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glGenTextures:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGenTextures" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*textures*/ " : "textures=")
-                    , (code ? "(GLuint [])" : "") +  formatUInts(1 * msg.getArg0(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glGetActiveAttrib:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetActiveAttrib" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg1()
-                    , (code ? "/*bufsize*/ " : "bufsize=")
-                    , msg.getArg2()
-                    , (code ? "/*length*/ " : "length=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3()))
-                    , (code ? "/*size*/ " : "size=")
-                    , (code ? "arg4" : "0x" + Integer.toHexString(msg.getArg4()))
-                    , (code ? "/*type*/ " : "type=")
-                    , (code ? "arg5" : "0x" + Integer.toHexString(msg.getArg5()))
-                    , (code ? "/*name*/ " : "name=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetActiveUniform:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetActiveUniform" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg1()
-                    , (code ? "/*bufsize*/ " : "bufsize=")
-                    , msg.getArg2()
-                    , (code ? "/*length*/ " : "length=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3()))
-                    , (code ? "/*size*/ " : "size=")
-                    , (code ? "arg4" : "0x" + Integer.toHexString(msg.getArg4()))
-                    , (code ? "/*type*/ " : "type=")
-                    , (code ? "arg5" : "0x" + Integer.toHexString(msg.getArg5()))
-                    , (code ? "/*name*/ " : "name=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetAttachedShaders:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetAttachedShaders" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*maxcount*/ " : "maxcount=")
-                    , msg.getArg1()
-                    , (code ? "/*count*/ " : "count=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*shaders*/ " : "shaders=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
-                break;
-            case glGetAttribLocation:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGetAttribLocation" : msg.getRet())
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*name*/ " : "name=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetBooleanv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGetBooleanv" : "void")
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1())));
-                break;
-            case glGetBufferParameteriv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetBufferParameteriv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetError:
-                str = String.format("%s()",
-                    (code ? "glGetError" : GLEnum.valueOf(msg.getRet()))
-);
-                break;
-            case glGetFloatv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGetFloatv" : "void")
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1())));
-                break;
-            case glGetFramebufferAttachmentParameteriv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetFramebufferAttachmentParameteriv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*attachment*/ " : "attachment=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
-                break;
-            case glGetIntegerv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGetIntegerv" : "void")
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1())));
-                break;
-            case glGetProgramiv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetProgramiv" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glGetProgramInfoLog:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetProgramInfoLog" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*bufsize*/ " : "bufsize=")
-                    , msg.getArg1()
-                    , (code ? "/*length*/ " : "length=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*infolog*/ " : "infolog=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetRenderbufferParameteriv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetRenderbufferParameteriv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetShaderiv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetShaderiv" : "void")
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0()
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "(GLint [])" : "") + formatInts(1, msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glGetShaderInfoLog:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetShaderInfoLog" : "void")
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0()
-                    , (code ? "/*bufsize*/ " : "bufsize=")
-                    , msg.getArg1()
-                    , (code ? "/*length*/ " : "length=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*infolog*/ " : "infolog=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetShaderPrecisionFormat:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetShaderPrecisionFormat" : "void")
-                    , (code ? "/*shadertype*/ " : "shadertype=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*precisiontype*/ " : "precisiontype=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*range*/ " : "range=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*precision*/ " : "precision=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
-                break;
-            case glGetShaderSource:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glGetShaderSource" : "void")
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0()
-                    , (code ? "/*bufsize*/ " : "bufsize=")
-                    , msg.getArg1()
-                    , (code ? "/*length*/ " : "length=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*source*/ " : "source=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetString:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s)",
-                    (code ? "glGetString" : "0x" + Integer.toHexString(msg.getRet()))
-                    , (code ? "/*name*/ " : "name=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glGetTexParameterfv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetTexParameterfv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetTexParameteriv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetTexParameteriv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetUniformfv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetUniformfv" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg1()
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetUniformiv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetUniformiv" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg1()
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetUniformLocation:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glGetUniformLocation" : msg.getRet())
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0()
-                    , (code ? "/*name*/ " : "name=")
-                    , (code ? "\"" : "") + msg.getData().toStringUtf8() + (code ? "\"" : ""));
-                break;
-            case glGetVertexAttribfv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetVertexAttribfv" : "void")
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg0()
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetVertexAttribiv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetVertexAttribiv" : "void")
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg0()
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glGetVertexAttribPointerv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glGetVertexAttribPointerv" : "void")
-                    , (code ? "/*index*/ " : "index=")
-                    , msg.getArg0()
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*pointer*/ " : "pointer=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glHint:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glHint" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*mode*/ " : "mode=")
-                    , GLEnum.valueOf(msg.getArg1()));
-                break;
-            case glIsBuffer:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsBuffer" : msg.getRet())
-                    , (code ? "/*buffer*/ " : "buffer=")
-                    , (code ? "buffer_" : "") + msg.getArg0());
-                break;
-            case glIsEnabled:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsEnabled" : msg.getRet())
-                    , (code ? "/*cap*/ " : "cap=")
-                    , GLEnum.valueOf(msg.getArg0()));
-                break;
-            case glIsFramebuffer:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsFramebuffer" : msg.getRet())
-                    , (code ? "/*framebuffer*/ " : "framebuffer=")
-                    , (code ? "framebuffer_" : "") + msg.getArg0());
-                break;
-            case glIsProgram:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsProgram" : msg.getRet())
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0());
-                break;
-            case glIsRenderbuffer:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsRenderbuffer" : msg.getRet())
-                    , (code ? "/*renderbuffer*/ " : "renderbuffer=")
-                    , (code ? "renderbuffer_" : "") + msg.getArg0());
-                break;
-            case glIsShader:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsShader" : msg.getRet())
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0());
-                break;
-            case glIsTexture:
-                str = String.format("%s(%s%s)",
-                    (code ? "glIsTexture" : msg.getRet())
-                    , (code ? "/*texture*/ " : "texture=")
-                    , (code ? "texture_" : "") + msg.getArg0());
-                break;
-            case glLineWidth:
-                str = String.format("%s(%s%s)",
-                    (code ? "glLineWidth" : "void")
-                    , (code ? "/*width*/ " : "width=")
-                    , Float.intBitsToFloat(msg.getArg0()));
-                break;
-            case glLinkProgram:
-                str = String.format("%s(%s%s)",
-                    (code ? "glLinkProgram" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0());
-                break;
-            case glPixelStorei:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glPixelStorei" : "void")
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*param*/ " : "param=")
-                    , msg.getArg1());
-                break;
-            case glPolygonOffset:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glPolygonOffset" : "void")
-                    , (code ? "/*factor*/ " : "factor=")
-                    , Float.intBitsToFloat(msg.getArg0())
-                    , (code ? "/*units*/ " : "units=")
-                    , Float.intBitsToFloat(msg.getArg1()));
-                break;
-            case glReadPixels:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glReadPixels" : "void")
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg0()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg1()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg2()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg3()
-                    , (code ? "/*format*/ " : "format=")
-                    , GLEnum.valueOf(msg.getArg4())
-                    , (code ? "/*type*/ " : "type=")
-                    , GLEnum.valueOf(msg.getArg5())
-                    , (code ? "/*pixels*/ " : "pixels=")
-                    , (code ? "arg6" : "0x" + Integer.toHexString(msg.getArg6())));
-                break;
-            case glReleaseShaderCompiler:
-                str = String.format("%s()",
-                    (code ? "glReleaseShaderCompiler" : "void")
-);
-                break;
-            case glRenderbufferStorage:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glRenderbufferStorage" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*internalformat*/ " : "internalformat=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg2()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg3());
-                break;
-            case glSampleCoverage:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glSampleCoverage" : "void")
-                    , (code ? "/*value*/ " : "value=")
-                    , Float.intBitsToFloat(msg.getArg0())
-                    , (code ? "/*invert*/ " : "invert=")
-                    , msg.getArg1());
-                break;
-            case glScissor:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glScissor" : "void")
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg0()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg1()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg2()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg3());
-                break;
-            case glShaderBinary:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glShaderBinary" : "void")
-                    , (code ? "/*n*/ " : "n=")
-                    , msg.getArg0()
-                    , (code ? "/*shaders*/ " : "shaders=")
-                    , (code ? "arg1" : "0x" + Integer.toHexString(msg.getArg1()))
-                    , (code ? "/*binaryformat*/ " : "binaryformat=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*binary*/ " : "binary=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3()))
-                    , (code ? "/*length*/ " : "length=")
-                    , msg.getArg4());
-                break;
-            case glShaderSource:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glShaderSource" : "void")
-                    , (code ? "/*shader*/ " : "shader=")
-                    , (code ? "shader_" : "") + msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*string*/ " : "string=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2()))
-                    , (code ? "/*length*/ " : "length=")
-                    , (code ? "arg3" : "0x" + Integer.toHexString(msg.getArg3())));
-                break;
-            case glStencilFunc:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glStencilFunc" : "void")
-                    , (code ? "/*func*/ " : "func=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*ref*/ " : "ref=")
-                    , msg.getArg1()
-                    , (code ? "/*mask*/ " : "mask=")
-                    , msg.getArg2());
-                break;
-            case glStencilFuncSeparate:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glStencilFuncSeparate" : "void")
-                    , (code ? "/*face*/ " : "face=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*func*/ " : "func=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*ref*/ " : "ref=")
-                    , msg.getArg2()
-                    , (code ? "/*mask*/ " : "mask=")
-                    , msg.getArg3());
-                break;
-            case glStencilMask:
-                str = String.format("%s(%s%s)",
-                    (code ? "glStencilMask" : "void")
-                    , (code ? "/*mask*/ " : "mask=")
-                    , msg.getArg0());
-                break;
-            case glStencilMaskSeparate:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glStencilMaskSeparate" : "void")
-                    , (code ? "/*face*/ " : "face=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*mask*/ " : "mask=")
-                    , msg.getArg1());
-                break;
-            case glStencilOp:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glStencilOp" : "void")
-                    , (code ? "/*fail*/ " : "fail=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*zfail*/ " : "zfail=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*zpass*/ " : "zpass=")
-                    , GLEnum.valueOf(msg.getArg2()));
-                break;
-            case glStencilOpSeparate:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glStencilOpSeparate" : "void")
-                    , (code ? "/*face*/ " : "face=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*fail*/ " : "fail=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*zfail*/ " : "zfail=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*zpass*/ " : "zpass=")
-                    , GLEnum.valueOf(msg.getArg3()));
-                break;
-            case glTexImage2D:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glTexImage2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg1()
-                    , (code ? "/*internalformat*/ " : "internalformat=")
-                    , msg.getArg2()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg3()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg4()
-                    , (code ? "/*border*/ " : "border=")
-                    , msg.getArg5()
-                    , (code ? "/*format*/ " : "format=")
-                    , GLEnum.valueOf(msg.getArg6())
-                    , (code ? "/*type*/ " : "type=")
-                    , GLEnum.valueOf(msg.getArg7())
-                    , (code ? "/*pixels*/ " : "pixels=")
-                    , (code ? "arg8" : "0x" + Integer.toHexString(msg.getArg8())));
-                break;
-            case glTexParameterf:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glTexParameterf" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*param*/ " : "param=")
-                    , Float.intBitsToFloat(msg.getArg2()));
-                break;
-            case glTexParameterfv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glTexParameterfv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glTexParameteri:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glTexParameteri" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*param*/ " : "param=")
-                    , msg.getArg2());
-                break;
-            case glTexParameteriv:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glTexParameteriv" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*pname*/ " : "pname=")
-                    , GLEnum.valueOf(msg.getArg1())
-                    , (code ? "/*params*/ " : "params=")
-                    , (code ? "arg2" : "0x" + Integer.toHexString(msg.getArg2())));
-                break;
-            case glTexSubImage2D:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glTexSubImage2D" : "void")
-                    , (code ? "/*target*/ " : "target=")
-                    , GLEnum.valueOf(msg.getArg0())
-                    , (code ? "/*level*/ " : "level=")
-                    , msg.getArg1()
-                    , (code ? "/*xoffset*/ " : "xoffset=")
-                    , msg.getArg2()
-                    , (code ? "/*yoffset*/ " : "yoffset=")
-                    , msg.getArg3()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg4()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg5()
-                    , (code ? "/*format*/ " : "format=")
-                    , GLEnum.valueOf(msg.getArg6())
-                    , (code ? "/*type*/ " : "type=")
-                    , GLEnum.valueOf(msg.getArg7())
-                    , (code ? "/*pixels*/ " : "pixels=")
-                    , (code ? "arg8" : "0x" + Integer.toHexString(msg.getArg8())));
-                break;
-            case glUniform1f:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glUniform1f" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1()));
-                break;
-            case glUniform1fv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform1fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLfloat [])" : "") +  formatFloats(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform1i:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glUniform1i" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg1());
-                break;
-            case glUniform1iv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform1iv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLint [])" : "") +  formatInts(1 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform2f:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform2f" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*y*/ " : "y=")
-                    , Float.intBitsToFloat(msg.getArg2()));
-                break;
-            case glUniform2fv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform2fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLfloat [])" : "") +  formatFloats(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform2i:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform2i" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg1()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg2());
-                break;
-            case glUniform2iv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform2iv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLint [])" : "") +  formatInts(2 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform3f:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniform3f" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*y*/ " : "y=")
-                    , Float.intBitsToFloat(msg.getArg2())
-                    , (code ? "/*z*/ " : "z=")
-                    , Float.intBitsToFloat(msg.getArg3()));
-                break;
-            case glUniform3fv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform3fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLfloat [])" : "") +  formatFloats(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform3i:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniform3i" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg1()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg2()
-                    , (code ? "/*z*/ " : "z=")
-                    , msg.getArg3());
-                break;
-            case glUniform3iv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform3iv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLint [])" : "") +  formatInts(3 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform4f:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniform4f" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*y*/ " : "y=")
-                    , Float.intBitsToFloat(msg.getArg2())
-                    , (code ? "/*z*/ " : "z=")
-                    , Float.intBitsToFloat(msg.getArg3())
-                    , (code ? "/*w*/ " : "w=")
-                    , Float.intBitsToFloat(msg.getArg4()));
-                break;
-            case glUniform4fv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform4fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLfloat [])" : "") +  formatFloats(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniform4i:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniform4i" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg1()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg2()
-                    , (code ? "/*z*/ " : "z=")
-                    , msg.getArg3()
-                    , (code ? "/*w*/ " : "w=")
-                    , msg.getArg4());
-                break;
-            case glUniform4iv:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glUniform4iv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*v*/ " : "v=")
-                    , (code ? "(GLint [])" : "") +  formatInts(4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniformMatrix2fv:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniformMatrix2fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*transpose*/ " : "transpose=")
-                    , msg.getArg2()
-                    , (code ? "/*value*/ " : "value=")
-                    , (code ? "(GLfloat [])" : "") + formatMatrix(2, 4 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniformMatrix3fv:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniformMatrix3fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*transpose*/ " : "transpose=")
-                    , msg.getArg2()
-                    , (code ? "/*value*/ " : "value=")
-                    , (code ? "(GLfloat [])" : "") + formatMatrix(3, 9 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUniformMatrix4fv:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glUniformMatrix4fv" : "void")
-                    , (code ? "/*location*/ " : "location=")
-                    , msg.getArg0()
-                    , (code ? "/*count*/ " : "count=")
-                    , msg.getArg1()
-                    , (code ? "/*transpose*/ " : "transpose=")
-                    , msg.getArg2()
-                    , (code ? "/*value*/ " : "value=")
-                    , (code ? "(GLfloat [])" : "") + formatMatrix(4, 16 * msg.getArg1(), msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glUseProgram:
-                str = String.format("%s(%s%s)",
-                    (code ? "glUseProgram" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0());
-                break;
-            case glValidateProgram:
-                str = String.format("%s(%s%s)",
-                    (code ? "glValidateProgram" : "void")
-                    , (code ? "/*program*/ " : "program=")
-                    , (code ? "program_" : "") + msg.getArg0());
-                break;
-            case glVertexAttrib1f:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glVertexAttrib1f" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1()));
-                break;
-            case glVertexAttrib1fv:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glVertexAttrib1fv" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*values*/ " : "values=")
-                    , (code ? "(GLfloat [])" : "") + formatFloats(1, msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glVertexAttrib2f:
-                str = String.format("%s(%s%s, %s%s, %s%s)",
-                    (code ? "glVertexAttrib2f" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*y*/ " : "y=")
-                    , Float.intBitsToFloat(msg.getArg2()));
-                break;
-            case glVertexAttrib2fv:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glVertexAttrib2fv" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*values*/ " : "values=")
-                    , (code ? "(GLfloat [])" : "") + formatFloats(2, msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glVertexAttrib3f:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glVertexAttrib3f" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*y*/ " : "y=")
-                    , Float.intBitsToFloat(msg.getArg2())
-                    , (code ? "/*z*/ " : "z=")
-                    , Float.intBitsToFloat(msg.getArg3()));
-                break;
-            case glVertexAttrib3fv:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glVertexAttrib3fv" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*values*/ " : "values=")
-                    , (code ? "(GLfloat [])" : "") + formatFloats(3, msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glVertexAttrib4f:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glVertexAttrib4f" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*x*/ " : "x=")
-                    , Float.intBitsToFloat(msg.getArg1())
-                    , (code ? "/*y*/ " : "y=")
-                    , Float.intBitsToFloat(msg.getArg2())
-                    , (code ? "/*z*/ " : "z=")
-                    , Float.intBitsToFloat(msg.getArg3())
-                    , (code ? "/*w*/ " : "w=")
-                    , Float.intBitsToFloat(msg.getArg4()));
-                break;
-            case glVertexAttrib4fv:
-                str = String.format("%s(%s%s, %s%s)",
-                    (code ? "glVertexAttrib4fv" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*values*/ " : "values=")
-                    , (code ? "(GLfloat [])" : "") + formatFloats(4, msg.getData().asReadOnlyByteBuffer()));
-                break;
-            case glVertexAttribPointer:
-                // FIXME: this function uses pointers, debugger may send data in msg.data
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glVertexAttribPointer" : "void")
-                    , (code ? "/*indx*/ " : "indx=")
-                    , msg.getArg0()
-                    , (code ? "/*size*/ " : "size=")
-                    , msg.getArg1()
-                    , (code ? "/*type*/ " : "type=")
-                    , GLEnum.valueOf(msg.getArg2())
-                    , (code ? "/*normalized*/ " : "normalized=")
-                    , msg.getArg3()
-                    , (code ? "/*stride*/ " : "stride=")
-                    , msg.getArg4()
-                    , (code ? "/*ptr*/ " : "ptr=")
-                    , (code ? "arg5" : "0x" + Integer.toHexString(msg.getArg5())));
-                break;
-            case glViewport:
-                str = String.format("%s(%s%s, %s%s, %s%s, %s%s)",
-                    (code ? "glViewport" : "void")
-                    , (code ? "/*x*/ " : "x=")
-                    , msg.getArg0()
-                    , (code ? "/*y*/ " : "y=")
-                    , msg.getArg1()
-                    , (code ? "/*width*/ " : "width=")
-                    , msg.getArg2()
-                    , (code ? "/*height*/ " : "height=")
-                    , msg.getArg3());
-                break;
-            default:
-                str = msg.toString();
-        }
-        return str;
-    }
-}
\ No newline at end of file
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageParser.java b/tools/glesv2debugger/src/com/android/glesv2debugger/MessageParser.java
deleted file mode 100644
index 8536728..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageParser.java
+++ /dev/null
@@ -1,747 +0,0 @@
-/*
- ** Copyright 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.
- */
-
-// auto generated by generate_MessageParser_java.py,
-//  which also prints skeleton code for MessageParserEx.java
-
-package com.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.google.protobuf.ByteString;
-
-import java.nio.ByteBuffer;
-
-public abstract class MessageParser {
-
-    String args;
-
-    String[] getList()
-    {
-        String arg = args;
-        args = args.substring(args.lastIndexOf('}') + 1);
-        final int comma = args.indexOf(',');
-        if (comma >= 0)
-            args = args.substring(comma + 1).trim();
-        else
-            args = null;
-
-        final int comment = arg.indexOf('=');
-        if (comment >= 0)
-            arg = arg.substring(comment + 1);
-        arg = arg.trim();
-        assert arg.charAt(0) == '{';
-        arg = arg.substring(1, arg.lastIndexOf('}')).trim();
-        return arg.split("\\s*,\\s*");
-    }
-
-    ByteString parseFloats(int count) {
-        ByteBuffer buffer = ByteBuffer.allocate(count * 4);
-        buffer.order(SampleView.targetByteOrder);
-        String [] arg = getList();
-        for (int i = 0; i < count; i++)
-            buffer.putFloat(Float.parseFloat(arg[i].trim()));
-        buffer.rewind();
-        return ByteString.copyFrom(buffer);
-    }
-
-    ByteString parseInts(int count) {
-        ByteBuffer buffer = ByteBuffer.allocate(count * 4);
-        buffer.order(SampleView.targetByteOrder);
-        String [] arg = getList();
-        for (int i = 0; i < count; i++)
-            buffer.putInt(Integer.parseInt(arg[i].trim()));
-        buffer.rewind();
-        return ByteString.copyFrom(buffer);
-    }
-
-    ByteString parseUInts(int count) {
-        ByteBuffer buffer = ByteBuffer.allocate(count * 4);
-        buffer.order(SampleView.targetByteOrder);
-        String [] arg = getList();
-        for (int i = 0; i < count; i++)
-            buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff));
-        buffer.rewind();
-        return ByteString.copyFrom(buffer);
-    }
-
-    ByteString parseMatrix(int columns, int count) {
-        return parseFloats(columns * columns * count);
-    }
-
-    ByteString parseString() {
-        // TODO: escape sequence and proper string literal
-        String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"'));
-        args = args.substring(args.lastIndexOf('"'));
-        int comma = args.indexOf(',');
-        if (comma >= 0)
-            args = args.substring(comma + 1).trim();
-        else
-            args = null;
-        return ByteString.copyFromUtf8(arg);
-    }
-
-    String getArgument()
-    {
-        final int comma = args.indexOf(',');
-        String arg = null;
-        if (comma >= 0)
-        {
-            arg = args.substring(0, comma);
-            args = args.substring(comma + 1);
-        }
-        else
-        {
-            arg = args;
-            args = null;
-        }
-        final int comment = arg.indexOf('=');
-        if (comment >= 0)
-            arg = arg.substring(comment + 1);
-        return arg.trim();
-    }
-
-    int parseArgument()
-    {
-        String arg = getArgument();
-        if (arg.startsWith("GL_"))
-            return GLEnum.valueOf(arg).value;
-        else if (arg.toLowerCase().startsWith("0x"))
-            return Integer.parseInt(arg.substring(2), 16);
-        else
-            return Integer.parseInt(arg);
-    }
-
-    int parseFloat()
-    {
-        String arg = getArgument();
-        return Float.floatToRawIntBits(Float.parseFloat(arg));
-    }
-
-    public void parse(final Message.Builder builder, String string) {
-        int lparen = string.indexOf("("), rparen = string.lastIndexOf(")");
-        String s = string.substring(0, lparen).trim();
-        args = string.substring(lparen + 1, rparen);
-        String[] t = s.split(" ");
-        Function function = Function.valueOf(t[t.length - 1]);
-        builder.setFunction(function);
-        switch (function) {
-            case glActiveTexture:
-                builder.setArg0(parseArgument()); // GLenum texture
-                break;
-            case glAttachShader:
-                builder.setArg0(parseArgument()); // GLuint program
-                builder.setArg1(parseArgument()); // GLuint shader
-                break;
-            case glBindAttribLocation:
-                builder.setArg0(parseArgument()); // GLuint program
-                builder.setArg1(parseArgument()); // GLuint index
-                builder.setData(parseString()); // GLchar name
-                break;
-            case glBindBuffer:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLuint buffer
-                break;
-            case glBindFramebuffer:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLuint framebuffer
-                break;
-            case glBindRenderbuffer:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLuint renderbuffer
-                break;
-            case glBindTexture:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLuint texture
-                break;
-            case glBlendColor:
-                builder.setArg0(parseFloat()); // GLclampf red
-                builder.setArg1(parseFloat()); // GLclampf green
-                builder.setArg2(parseFloat()); // GLclampf blue
-                builder.setArg3(parseFloat()); // GLclampf alpha
-                break;
-            case glBlendEquation:
-                builder.setArg0(parseArgument()); // GLenum mode
-                break;
-            case glBlendEquationSeparate:
-                builder.setArg0(parseArgument()); // GLenum modeRGB
-                builder.setArg1(parseArgument()); // GLenum modeAlpha
-                break;
-            case glBlendFunc:
-                builder.setArg0(parseArgument()); // GLenum sfactor
-                builder.setArg1(parseArgument()); // GLenum dfactor
-                break;
-            case glBlendFuncSeparate:
-                builder.setArg0(parseArgument()); // GLenum srcRGB
-                builder.setArg1(parseArgument()); // GLenum dstRGB
-                builder.setArg2(parseArgument()); // GLenum srcAlpha
-                builder.setArg3(parseArgument()); // GLenum dstAlpha
-                break;
-            case glBufferData:
-                parse_glBufferData(builder);
-                break;
-            case glBufferSubData:
-                parse_glBufferSubData(builder);
-                break;
-            case glCheckFramebufferStatus:
-                builder.setArg0(parseArgument()); // GLenum target
-                break;
-            case glClear:
-                builder.setArg0(parseArgument()); // GLbitfield mask
-                break;
-            case glClearColor:
-                builder.setArg0(parseFloat()); // GLclampf red
-                builder.setArg1(parseFloat()); // GLclampf green
-                builder.setArg2(parseFloat()); // GLclampf blue
-                builder.setArg3(parseFloat()); // GLclampf alpha
-                break;
-            case glClearDepthf:
-                builder.setArg0(parseFloat()); // GLclampf depth
-                break;
-            case glClearStencil:
-                builder.setArg0(parseArgument()); // GLint s
-                break;
-            case glColorMask:
-                builder.setArg0(parseArgument()); // GLboolean red
-                builder.setArg1(parseArgument()); // GLboolean green
-                builder.setArg2(parseArgument()); // GLboolean blue
-                builder.setArg3(parseArgument()); // GLboolean alpha
-                break;
-            case glCompileShader:
-                builder.setArg0(parseArgument()); // GLuint shader
-                break;
-            case glCompressedTexImage2D:
-                parse_glCompressedTexImage2D(builder);
-                break;
-            case glCompressedTexSubImage2D:
-                parse_glCompressedTexSubImage2D(builder);
-                break;
-            case glCopyTexImage2D:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLint level
-                builder.setArg2(parseArgument()); // GLenum internalformat
-                builder.setArg3(parseArgument()); // GLint x
-                builder.setArg4(parseArgument()); // GLint y
-                builder.setArg5(parseArgument()); // GLsizei width
-                builder.setArg6(parseArgument()); // GLsizei height
-                builder.setArg7(parseArgument()); // GLint border
-                break;
-            case glCopyTexSubImage2D:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLint level
-                builder.setArg2(parseArgument()); // GLint xoffset
-                builder.setArg3(parseArgument()); // GLint yoffset
-                builder.setArg4(parseArgument()); // GLint x
-                builder.setArg5(parseArgument()); // GLint y
-                builder.setArg6(parseArgument()); // GLsizei width
-                builder.setArg7(parseArgument()); // GLsizei height
-                break;
-            case glCreateProgram:
-                break;
-            case glCreateShader:
-                builder.setArg0(parseArgument()); // GLenum type
-                break;
-            case glCullFace:
-                builder.setArg0(parseArgument()); // GLenum mode
-                break;
-            case glDeleteBuffers:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint buffers
-                break;
-            case glDeleteFramebuffers:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint framebuffers
-                break;
-            case glDeleteProgram:
-                builder.setArg0(parseArgument()); // GLuint program
-                break;
-            case glDeleteRenderbuffers:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint renderbuffers
-                break;
-            case glDeleteShader:
-                builder.setArg0(parseArgument()); // GLuint shader
-                break;
-            case glDeleteTextures:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint textures
-                break;
-            case glDepthFunc:
-                builder.setArg0(parseArgument()); // GLenum func
-                break;
-            case glDepthMask:
-                builder.setArg0(parseArgument()); // GLboolean flag
-                break;
-            case glDepthRangef:
-                builder.setArg0(parseFloat()); // GLclampf zNear
-                builder.setArg1(parseFloat()); // GLclampf zFar
-                break;
-            case glDetachShader:
-                builder.setArg0(parseArgument()); // GLuint program
-                builder.setArg1(parseArgument()); // GLuint shader
-                break;
-            case glDisable:
-                builder.setArg0(parseArgument()); // GLenum cap
-                break;
-            case glDisableVertexAttribArray:
-                builder.setArg0(parseArgument()); // GLuint index
-                break;
-            case glDrawArrays:
-                builder.setArg0(parseArgument()); // GLenum mode
-                builder.setArg1(parseArgument()); // GLint first
-                builder.setArg2(parseArgument()); // GLsizei count
-                break;
-            case glDrawElements:
-                parse_glDrawElements(builder);
-                break;
-            case glEnable:
-                builder.setArg0(parseArgument()); // GLenum cap
-                break;
-            case glEnableVertexAttribArray:
-                builder.setArg0(parseArgument()); // GLuint index
-                break;
-            case glFinish:
-                break;
-            case glFlush:
-                break;
-            case glFramebufferRenderbuffer:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLenum attachment
-                builder.setArg2(parseArgument()); // GLenum renderbuffertarget
-                builder.setArg3(parseArgument()); // GLuint renderbuffer
-                break;
-            case glFramebufferTexture2D:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLenum attachment
-                builder.setArg2(parseArgument()); // GLenum textarget
-                builder.setArg3(parseArgument()); // GLuint texture
-                builder.setArg4(parseArgument()); // GLint level
-                break;
-            case glFrontFace:
-                builder.setArg0(parseArgument()); // GLenum mode
-                break;
-            case glGenBuffers:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint buffers
-                break;
-            case glGenerateMipmap:
-                builder.setArg0(parseArgument()); // GLenum target
-                break;
-            case glGenFramebuffers:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint framebuffers
-                break;
-            case glGenRenderbuffers:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint renderbuffers
-                break;
-            case glGenTextures:
-                builder.setArg0(parseArgument()); // GLsizei n
-                builder.setData(parseUInts(1 * builder.getArg0())); // GLuint textures
-                break;
-            case glGetActiveAttrib:
-                parse_glGetActiveAttrib(builder);
-                break;
-            case glGetActiveUniform:
-                parse_glGetActiveUniform(builder);
-                break;
-            case glGetAttachedShaders:
-                parse_glGetAttachedShaders(builder);
-                break;
-            case glGetAttribLocation:
-                builder.setArg0(parseArgument()); // GLuint program
-                builder.setData(parseString()); // GLchar name
-                break;
-            case glGetBooleanv:
-                parse_glGetBooleanv(builder);
-                break;
-            case glGetBufferParameteriv:
-                parse_glGetBufferParameteriv(builder);
-                break;
-            case glGetError:
-                break;
-            case glGetFloatv:
-                parse_glGetFloatv(builder);
-                break;
-            case glGetFramebufferAttachmentParameteriv:
-                parse_glGetFramebufferAttachmentParameteriv(builder);
-                break;
-            case glGetIntegerv:
-                parse_glGetIntegerv(builder);
-                break;
-            case glGetProgramiv:
-                builder.setArg0(parseArgument()); // GLuint program
-                builder.setArg1(parseArgument()); // GLenum pname
-                builder.setData(parseInts(1)); // GLint params
-                break;
-            case glGetProgramInfoLog:
-                parse_glGetProgramInfoLog(builder);
-                break;
-            case glGetRenderbufferParameteriv:
-                parse_glGetRenderbufferParameteriv(builder);
-                break;
-            case glGetShaderiv:
-                builder.setArg0(parseArgument()); // GLuint shader
-                builder.setArg1(parseArgument()); // GLenum pname
-                builder.setData(parseInts(1)); // GLint params
-                break;
-            case glGetShaderInfoLog:
-                parse_glGetShaderInfoLog(builder);
-                break;
-            case glGetShaderPrecisionFormat:
-                parse_glGetShaderPrecisionFormat(builder);
-                break;
-            case glGetShaderSource:
-                parse_glGetShaderSource(builder);
-                break;
-            case glGetString:
-                builder.setArg0(parseArgument()); // GLenum name
-                break;
-            case glGetTexParameterfv:
-                parse_glGetTexParameterfv(builder);
-                break;
-            case glGetTexParameteriv:
-                parse_glGetTexParameteriv(builder);
-                break;
-            case glGetUniformfv:
-                parse_glGetUniformfv(builder);
-                break;
-            case glGetUniformiv:
-                parse_glGetUniformiv(builder);
-                break;
-            case glGetUniformLocation:
-                builder.setArg0(parseArgument()); // GLuint program
-                builder.setData(parseString()); // GLchar name
-                break;
-            case glGetVertexAttribfv:
-                parse_glGetVertexAttribfv(builder);
-                break;
-            case glGetVertexAttribiv:
-                parse_glGetVertexAttribiv(builder);
-                break;
-            case glGetVertexAttribPointerv:
-                parse_glGetVertexAttribPointerv(builder);
-                break;
-            case glHint:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLenum mode
-                break;
-            case glIsBuffer:
-                builder.setArg0(parseArgument()); // GLuint buffer
-                break;
-            case glIsEnabled:
-                builder.setArg0(parseArgument()); // GLenum cap
-                break;
-            case glIsFramebuffer:
-                builder.setArg0(parseArgument()); // GLuint framebuffer
-                break;
-            case glIsProgram:
-                builder.setArg0(parseArgument()); // GLuint program
-                break;
-            case glIsRenderbuffer:
-                builder.setArg0(parseArgument()); // GLuint renderbuffer
-                break;
-            case glIsShader:
-                builder.setArg0(parseArgument()); // GLuint shader
-                break;
-            case glIsTexture:
-                builder.setArg0(parseArgument()); // GLuint texture
-                break;
-            case glLineWidth:
-                builder.setArg0(parseFloat()); // GLfloat width
-                break;
-            case glLinkProgram:
-                builder.setArg0(parseArgument()); // GLuint program
-                break;
-            case glPixelStorei:
-                builder.setArg0(parseArgument()); // GLenum pname
-                builder.setArg1(parseArgument()); // GLint param
-                break;
-            case glPolygonOffset:
-                builder.setArg0(parseFloat()); // GLfloat factor
-                builder.setArg1(parseFloat()); // GLfloat units
-                break;
-            case glReadPixels:
-                parse_glReadPixels(builder);
-                break;
-            case glReleaseShaderCompiler:
-                break;
-            case glRenderbufferStorage:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLenum internalformat
-                builder.setArg2(parseArgument()); // GLsizei width
-                builder.setArg3(parseArgument()); // GLsizei height
-                break;
-            case glSampleCoverage:
-                builder.setArg0(parseFloat()); // GLclampf value
-                builder.setArg1(parseArgument()); // GLboolean invert
-                break;
-            case glScissor:
-                builder.setArg0(parseArgument()); // GLint x
-                builder.setArg1(parseArgument()); // GLint y
-                builder.setArg2(parseArgument()); // GLsizei width
-                builder.setArg3(parseArgument()); // GLsizei height
-                break;
-            case glShaderBinary:
-                parse_glShaderBinary(builder);
-                break;
-            case glShaderSource:
-                parse_glShaderSource(builder);
-                break;
-            case glStencilFunc:
-                builder.setArg0(parseArgument()); // GLenum func
-                builder.setArg1(parseArgument()); // GLint ref
-                builder.setArg2(parseArgument()); // GLuint mask
-                break;
-            case glStencilFuncSeparate:
-                builder.setArg0(parseArgument()); // GLenum face
-                builder.setArg1(parseArgument()); // GLenum func
-                builder.setArg2(parseArgument()); // GLint ref
-                builder.setArg3(parseArgument()); // GLuint mask
-                break;
-            case glStencilMask:
-                builder.setArg0(parseArgument()); // GLuint mask
-                break;
-            case glStencilMaskSeparate:
-                builder.setArg0(parseArgument()); // GLenum face
-                builder.setArg1(parseArgument()); // GLuint mask
-                break;
-            case glStencilOp:
-                builder.setArg0(parseArgument()); // GLenum fail
-                builder.setArg1(parseArgument()); // GLenum zfail
-                builder.setArg2(parseArgument()); // GLenum zpass
-                break;
-            case glStencilOpSeparate:
-                builder.setArg0(parseArgument()); // GLenum face
-                builder.setArg1(parseArgument()); // GLenum fail
-                builder.setArg2(parseArgument()); // GLenum zfail
-                builder.setArg3(parseArgument()); // GLenum zpass
-                break;
-            case glTexImage2D:
-                parse_glTexImage2D(builder);
-                break;
-            case glTexParameterf:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLenum pname
-                builder.setArg2(parseFloat()); // GLfloat param
-                break;
-            case glTexParameterfv:
-                parse_glTexParameterfv(builder);
-                break;
-            case glTexParameteri:
-                builder.setArg0(parseArgument()); // GLenum target
-                builder.setArg1(parseArgument()); // GLenum pname
-                builder.setArg2(parseArgument()); // GLint param
-                break;
-            case glTexParameteriv:
-                parse_glTexParameteriv(builder);
-                break;
-            case glTexSubImage2D:
-                parse_glTexSubImage2D(builder);
-                break;
-            case glUniform1f:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseFloat()); // GLfloat x
-                break;
-            case glUniform1fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseFloats(1 * builder.getArg1())); // GLfloat v
-                break;
-            case glUniform1i:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLint x
-                break;
-            case glUniform1iv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseInts(1 * builder.getArg1())); // GLint v
-                break;
-            case glUniform2f:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseFloat()); // GLfloat x
-                builder.setArg2(parseFloat()); // GLfloat y
-                break;
-            case glUniform2fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseFloats(2 * builder.getArg1())); // GLfloat v
-                break;
-            case glUniform2i:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLint x
-                builder.setArg2(parseArgument()); // GLint y
-                break;
-            case glUniform2iv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseInts(2 * builder.getArg1())); // GLint v
-                break;
-            case glUniform3f:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseFloat()); // GLfloat x
-                builder.setArg2(parseFloat()); // GLfloat y
-                builder.setArg3(parseFloat()); // GLfloat z
-                break;
-            case glUniform3fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseFloats(3 * builder.getArg1())); // GLfloat v
-                break;
-            case glUniform3i:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLint x
-                builder.setArg2(parseArgument()); // GLint y
-                builder.setArg3(parseArgument()); // GLint z
-                break;
-            case glUniform3iv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseInts(3 * builder.getArg1())); // GLint v
-                break;
-            case glUniform4f:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseFloat()); // GLfloat x
-                builder.setArg2(parseFloat()); // GLfloat y
-                builder.setArg3(parseFloat()); // GLfloat z
-                builder.setArg4(parseFloat()); // GLfloat w
-                break;
-            case glUniform4fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseFloats(4 * builder.getArg1())); // GLfloat v
-                break;
-            case glUniform4i:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLint x
-                builder.setArg2(parseArgument()); // GLint y
-                builder.setArg3(parseArgument()); // GLint z
-                builder.setArg4(parseArgument()); // GLint w
-                break;
-            case glUniform4iv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setData(parseInts(4 * builder.getArg1())); // GLint v
-                break;
-            case glUniformMatrix2fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setArg2(parseArgument()); // GLboolean transpose
-                builder.setData(parseMatrix(2, builder.getArg1())); // GLfloat value
-                break;
-            case glUniformMatrix3fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setArg2(parseArgument()); // GLboolean transpose
-                builder.setData(parseMatrix(3, builder.getArg1())); // GLfloat value
-                break;
-            case glUniformMatrix4fv:
-                builder.setArg0(parseArgument()); // GLint location
-                builder.setArg1(parseArgument()); // GLsizei count
-                builder.setArg2(parseArgument()); // GLboolean transpose
-                builder.setData(parseMatrix(4, builder.getArg1())); // GLfloat value
-                break;
-            case glUseProgram:
-                builder.setArg0(parseArgument()); // GLuint program
-                break;
-            case glValidateProgram:
-                builder.setArg0(parseArgument()); // GLuint program
-                break;
-            case glVertexAttrib1f:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setArg1(parseFloat()); // GLfloat x
-                break;
-            case glVertexAttrib1fv:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setData(parseFloats(1)); // GLfloat values
-                break;
-            case glVertexAttrib2f:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setArg1(parseFloat()); // GLfloat x
-                builder.setArg2(parseFloat()); // GLfloat y
-                break;
-            case glVertexAttrib2fv:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setData(parseFloats(2)); // GLfloat values
-                break;
-            case glVertexAttrib3f:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setArg1(parseFloat()); // GLfloat x
-                builder.setArg2(parseFloat()); // GLfloat y
-                builder.setArg3(parseFloat()); // GLfloat z
-                break;
-            case glVertexAttrib3fv:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setData(parseFloats(3)); // GLfloat values
-                break;
-            case glVertexAttrib4f:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setArg1(parseFloat()); // GLfloat x
-                builder.setArg2(parseFloat()); // GLfloat y
-                builder.setArg3(parseFloat()); // GLfloat z
-                builder.setArg4(parseFloat()); // GLfloat w
-                break;
-            case glVertexAttrib4fv:
-                builder.setArg0(parseArgument()); // GLuint indx
-                builder.setData(parseFloats(4)); // GLfloat values
-                break;
-            case glVertexAttribPointer:
-                parse_glVertexAttribPointer(builder);
-                break;
-            case glViewport:
-                builder.setArg0(parseArgument()); // GLint x
-                builder.setArg1(parseArgument()); // GLint y
-                builder.setArg2(parseArgument()); // GLsizei width
-                builder.setArg3(parseArgument()); // GLsizei height
-                break;
-            default:
-                assert false;
-        }
-    }
-    abstract void parse_glBufferData(Message.Builder builder);
-    abstract void parse_glBufferSubData(Message.Builder builder);
-    abstract void parse_glCompressedTexImage2D(Message.Builder builder);
-    abstract void parse_glCompressedTexSubImage2D(Message.Builder builder);
-    abstract void parse_glDrawElements(Message.Builder builder);
-    abstract void parse_glGetActiveAttrib(Message.Builder builder);
-    abstract void parse_glGetActiveUniform(Message.Builder builder);
-    abstract void parse_glGetAttachedShaders(Message.Builder builder);
-    abstract void parse_glGetBooleanv(Message.Builder builder);
-    abstract void parse_glGetBufferParameteriv(Message.Builder builder);
-    abstract void parse_glGetFloatv(Message.Builder builder);
-    abstract void parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder);
-    abstract void parse_glGetIntegerv(Message.Builder builder);
-    abstract void parse_glGetProgramInfoLog(Message.Builder builder);
-    abstract void parse_glGetRenderbufferParameteriv(Message.Builder builder);
-    abstract void parse_glGetShaderInfoLog(Message.Builder builder);
-    abstract void parse_glGetShaderPrecisionFormat(Message.Builder builder);
-    abstract void parse_glGetShaderSource(Message.Builder builder);
-    abstract void parse_glGetTexParameterfv(Message.Builder builder);
-    abstract void parse_glGetTexParameteriv(Message.Builder builder);
-    abstract void parse_glGetUniformfv(Message.Builder builder);
-    abstract void parse_glGetUniformiv(Message.Builder builder);
-    abstract void parse_glGetVertexAttribfv(Message.Builder builder);
-    abstract void parse_glGetVertexAttribiv(Message.Builder builder);
-    abstract void parse_glGetVertexAttribPointerv(Message.Builder builder);
-    abstract void parse_glReadPixels(Message.Builder builder);
-    abstract void parse_glShaderBinary(Message.Builder builder);
-    abstract void parse_glShaderSource(Message.Builder builder);
-    abstract void parse_glTexImage2D(Message.Builder builder);
-    abstract void parse_glTexParameterfv(Message.Builder builder);
-    abstract void parse_glTexParameteriv(Message.Builder builder);
-    abstract void parse_glTexSubImage2D(Message.Builder builder);
-    abstract void parse_glVertexAttribPointer(Message.Builder builder);
-}
\ No newline at end of file
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageParserEx.java b/tools/glesv2debugger/src/com/android/glesv2debugger/MessageParserEx.java
deleted file mode 100644
index 5099146..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageParserEx.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- ** Copyright 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.
- */
-
-// skeleton from stdout of generate_MessageParser_java.py
-
-package com.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-
-public class MessageParserEx extends MessageParser {
-
-    @Override
-    void parse_glBufferData(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLsizeiptr size
-        // TODO // GLvoid data
-        builder.setArg3(parseArgument()); // GLenum usage
-    }
-
-    @Override
-    void parse_glBufferSubData(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLintptr offset
-        builder.setArg2(parseArgument()); // GLsizeiptr size
-        // TODO // GLvoid data
-    }
-
-    @Override
-    void parse_glCompressedTexImage2D(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLint level
-        builder.setArg2(parseArgument()); // GLenum internalformat
-        builder.setArg3(parseArgument()); // GLsizei width
-        builder.setArg4(parseArgument()); // GLsizei height
-        builder.setArg5(parseArgument()); // GLint border
-        builder.setArg6(parseArgument()); // GLsizei imageSize
-        // TODO: GLvoid* data
-    }
-
-    @Override
-    void parse_glCompressedTexSubImage2D(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLint level
-        builder.setArg2(parseArgument()); // GLint xoffset
-        builder.setArg3(parseArgument()); // GLint yoffset
-        builder.setArg4(parseArgument()); // GLsizei width
-        builder.setArg5(parseArgument()); // GLsizei height
-        builder.setArg6(parseArgument()); // GLenum format
-        builder.setArg7(parseArgument()); // GLsizei imageSize
-        // TODO: GLvoid* data
-    }
-
-    @Override
-    void parse_glDrawElements(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum mode
-        builder.setArg1(parseArgument()); // GLsizei count
-        builder.setArg2(parseArgument()); // GLenum type
-        // TODO: GLvoid* indices
-    }
-
-    @Override
-    void parse_glGetActiveAttrib(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint program
-        builder.setArg1(parseArgument()); // GLuint index
-        builder.setArg2(parseArgument()); // GLsizei bufsize
-        // TODO: GLsizei* length
-        // TODO: GLint* size
-        // TODO: GLenum* type
-        builder.setData(parseString()); // GLchar name
-    }
-
-    @Override
-    void parse_glGetActiveUniform(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint program
-        builder.setArg1(parseArgument()); // GLuint index
-        builder.setArg2(parseArgument()); // GLsizei bufsize
-        // TODO: GLsizei* length
-        // TODO: GLint* size
-        // TODO: GLenum* type
-        builder.setData(parseString()); // GLchar name
-    }
-
-    @Override
-    void parse_glGetAttachedShaders(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint program
-        builder.setArg1(parseArgument()); // GLsizei maxcount
-        // TODO: GLsizei* count
-        // TODO: GLuint* shaders
-    }
-
-    @Override
-    void parse_glGetBooleanv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum pname
-        // TODO: GLboolean* params
-    }
-
-    @Override
-    void parse_glGetBufferParameteriv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetFloatv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum pname
-        // TODO: GLfloat* params
-    }
-
-    @Override
-    void parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum attachment
-        builder.setArg2(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetIntegerv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetProgramInfoLog(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint program
-        builder.setArg1(parseArgument()); // GLsizei bufsize
-        // TODO: GLsizei* length
-        builder.setData(parseString()); // GLchar infolog
-    }
-
-    @Override
-    void parse_glGetRenderbufferParameteriv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetShaderInfoLog(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint shader
-        builder.setArg1(parseArgument()); // GLsizei bufsize
-        // TODO: GLsizei* length
-        builder.setData(parseString()); // GLchar infolog
-    }
-
-    @Override
-    void parse_glGetShaderPrecisionFormat(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum shadertype
-        builder.setArg1(parseArgument()); // GLenum precisiontype
-        // TODO: GLint* range
-        // TODO: GLint* precision
-    }
-
-    @Override
-    void parse_glGetShaderSource(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint shader
-        builder.setArg1(parseArgument()); // GLsizei bufsize
-        // TODO: GLsizei* length
-        builder.setData(parseString()); // GLchar source
-    }
-
-    @Override
-    void parse_glGetTexParameterfv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLfloat* params
-    }
-
-    @Override
-    void parse_glGetTexParameteriv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetUniformfv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint program
-        builder.setArg1(parseArgument()); // GLint location
-        // TODO: GLfloat* params
-    }
-
-    @Override
-    void parse_glGetUniformiv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint program
-        builder.setArg1(parseArgument()); // GLint location
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetVertexAttribfv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint index
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLfloat* params
-    }
-
-    @Override
-    void parse_glGetVertexAttribiv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint index
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glGetVertexAttribPointerv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint index
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLvoid** pointer
-    }
-
-    @Override
-    void parse_glReadPixels(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLint x
-        builder.setArg1(parseArgument()); // GLint y
-        builder.setArg2(parseArgument()); // GLsizei width
-        builder.setArg3(parseArgument()); // GLsizei height
-        builder.setArg4(parseArgument()); // GLenum format
-        builder.setArg5(parseArgument()); // GLenum type
-        // TODO: GLvoid* pixels
-    }
-
-    @Override
-    void parse_glShaderBinary(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLsizei n
-        // TODO: GLuint* shaders
-        builder.setArg2(parseArgument()); // GLenum binaryformat
-        // TODO: GLvoid* binary
-        builder.setArg4(parseArgument()); // GLsizei length
-    }
-
-    @Override
-    void parse_glShaderSource(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint shader
-        builder.setArg1(parseArgument()); // GLsizei count
-        assert 1 == builder.getArg1();
-        builder.setData(parseString()); // GLchar** string
-        builder.setArg3(parseArgument());// not used, always 1 null terminated
-                                         // string; GLint* length
-    }
-
-    @Override
-    void parse_glTexImage2D(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLint level
-        builder.setArg2(parseArgument()); // GLint internalformat
-        builder.setArg3(parseArgument()); // GLsizei width
-        builder.setArg4(parseArgument()); // GLsizei height
-        builder.setArg5(parseArgument()); // GLint border
-        builder.setArg6(parseArgument()); // GLenum format
-        builder.setArg7(parseArgument()); // GLenum type
-        // TODO: GLvoid* pixels
-    }
-
-    @Override
-    void parse_glTexParameterfv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLfloat* params
-    }
-
-    @Override
-    void parse_glTexParameteriv(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLenum pname
-        // TODO: GLint* params
-    }
-
-    @Override
-    void parse_glTexSubImage2D(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLenum target
-        builder.setArg1(parseArgument()); // GLint level
-        builder.setArg2(parseArgument()); // GLint xoffset
-        builder.setArg3(parseArgument()); // GLint yoffset
-        builder.setArg4(parseArgument()); // GLsizei width
-        builder.setArg5(parseArgument()); // GLsizei height
-        builder.setArg6(parseArgument()); // GLenum format
-        builder.setArg7(parseArgument()); // GLenum type
-        // TODO: GLvoid* pixels
-    }
-
-    @Override
-    void parse_glVertexAttribPointer(Message.Builder builder) {
-        builder.setArg0(parseArgument()); // GLuint indx
-        builder.setArg1(parseArgument()); // GLint size
-        builder.setArg2(parseArgument()); // GLenum type
-        builder.setArg3(parseArgument()); // GLboolean normalized
-        builder.setArg4(parseArgument()); // GLsizei stride
-        // TODO: GLvoid* ptr
-    }
-
-    public final static MessageParserEx instance = new MessageParserEx();
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageProcessor.java b/tools/glesv2debugger/src/com/android/glesv2debugger/MessageProcessor.java
deleted file mode 100644
index bdd53d1..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageProcessor.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.google.protobuf.ByteString;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.PaletteData;
-
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-public class MessageProcessor {
-    static void showError(final String message) {
-        // need to call SWT from UI thread
-        MessageDialog.openError(null, "MessageProcessor", message);
-    }
-
-    /**
-     * data layout: uint32 total decompressed length, (chunks: uint32 chunk
-     * decompressed size, uint32 chunk compressed size, chunk data)+. 0 chunk
-     * compressed size means chunk is not compressed
-     */
-    public static byte[] lzfDecompressChunks(final ByteString data) {
-        ByteBuffer in = data.asReadOnlyByteBuffer();
-        in.order(SampleView.targetByteOrder);
-        ByteBuffer out = ByteBuffer.allocate(in.getInt());
-        byte[] inChunk = new byte[0];
-        byte[] outChunk = new byte[0];
-        while (in.remaining() > 0) {
-            int decompressed = in.getInt();
-            int compressed = in.getInt();
-            if (decompressed > outChunk.length)
-                outChunk = new byte[decompressed];
-            if (compressed == 0) {
-                in.get(outChunk, 0, decompressed);
-                out.put(outChunk, 0, decompressed);
-            } else {
-                if (compressed > inChunk.length)
-                    inChunk = new byte[compressed];
-                in.get(inChunk, 0, compressed);
-                int size = org.liblzf.CLZF
-                        .lzf_decompress(inChunk, compressed, outChunk, outChunk.length);
-                assert size == decompressed;
-                out.put(outChunk, 0, size);
-            }
-        }
-        assert !out.hasRemaining();
-        return out.array();
-    }
-
-    /** same data layout as LZFDecompressChunks */
-    public static byte[] lzfCompressChunks(final byte[] in, final int inSize) {
-        byte[] chunk = new byte[256 * 1024]; // chunk size is arbitrary
-        final ByteBuffer out = ByteBuffer.allocate(4 + (inSize + chunk.length - 1)
-                / chunk.length * (chunk.length + 4 * 2));
-        out.order(SampleView.targetByteOrder);
-        out.putInt(inSize);
-        for (int i = 0; i < inSize; i += chunk.length) {
-            int chunkIn = chunk.length;
-            if (i + chunkIn > inSize)
-                chunkIn = inSize - i;
-            final byte[] inChunk = java.util.Arrays.copyOfRange(in, i, i + chunkIn);
-            final int chunkOut = org.liblzf.CLZF
-                    .lzf_compress(inChunk, chunkIn, chunk, chunk.length);
-            out.putInt(chunkIn);
-            out.putInt(chunkOut);
-            if (chunkOut == 0) // compressed bigger than chunk (uncompressed)
-                out.put(inChunk);
-            else
-                out.put(chunk, 0, chunkOut);
-        }
-        return Arrays.copyOf(out.array(), out.position());
-    }
-
-    /**
-     * returns new ref, which is also the decoded image; ref could be bigger
-     * than pixels, in which case the first pixels.length bytes form the image
-     */
-    public static byte[] decodeReferencedImage(byte[] ref, byte[] pixels) {
-        if (ref.length < pixels.length)
-            ref = new byte[pixels.length];
-        for (int i = 0; i < pixels.length; i++)
-            ref[i] ^= pixels[i];
-        for (int i = pixels.length; i < ref.length; i++)
-            ref[i] = 0; // clear unused ref to maintain consistency
-        return ref;
-    }
-
-    public static ImageData receiveImage(int width, int height, int format,
-            int type, final ByteString data) {
-        assert width > 0 && height > 0;
-        int bpp = 0;
-        int redMask = 0, blueMask = 0, greenMask = 0;
-        switch (GLEnum.valueOf(type)) {
-            case GL_UNSIGNED_SHORT_5_6_5:
-            case GL_UNSIGNED_SHORT_4_4_4_4:
-            case GL_UNSIGNED_SHORT_5_5_5_1:
-                format = type;
-                break;
-            case GL_UNSIGNED_BYTE:
-                break;
-            default:
-                showError("unsupported texture type " + type);
-                return null;
-        }
-
-        switch (GLEnum.valueOf(format)) {
-            case GL_ALPHA:
-            case GL_LUMINANCE:
-                redMask = blueMask = greenMask = 0xff;
-                bpp = 8;
-                break;
-            case GL_LUMINANCE_ALPHA:
-                blueMask = 0xff;
-                redMask = 0xff00;
-                bpp = 16;
-                break;
-            case GL_RGB:
-                blueMask = 0xff;
-                greenMask = 0xff00;
-                redMask = 0xff0000;
-                bpp = 24;
-                break;
-            case GL_RGBA:
-                blueMask = 0xff00;
-                greenMask = 0xff0000;
-                redMask = 0xff000000;
-                bpp = 32;
-                break;
-            case GL_UNSIGNED_SHORT_5_6_5:
-                blueMask = ((1 << 5) - 1) << 0;
-                greenMask = ((1 << 6) - 1) << 5;
-                redMask = ((1 << 5) - 1) << 11;
-                bpp = 16;
-                break;
-            case GL_UNSIGNED_SHORT_4_4_4_4:
-                blueMask = ((1 << 4) - 1) << 4;
-                greenMask = ((1 << 4) - 1) << 8;
-                redMask = ((1 << 4) - 1) << 12;
-                bpp = 16;
-                break;
-            case GL_UNSIGNED_SHORT_5_5_5_1:
-                blueMask = ((1 << 5) - 1) << 1;
-                greenMask = ((1 << 5) - 1) << 6;
-                redMask = ((1 << 5) - 1) << 11;
-                bpp = 16;
-                break;
-            default:
-                showError("unsupported texture format: " + format);
-                return null;
-        }
-        byte[] pixels = lzfDecompressChunks(data);
-        assert pixels.length == width * height * (bpp / 8);
-        PaletteData palette = new PaletteData(redMask, greenMask, blueMask);
-        return new ImageData(width, height, bpp, palette, 1, pixels);
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageQueue.java b/tools/glesv2debugger/src/com/android/glesv2debugger/MessageQueue.java
deleted file mode 100644
index c633d06..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/MessageQueue.java
+++ /dev/null
@@ -1,322 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-import com.android.sdklib.util.SparseArray;
-
-import java.io.DataInputStream;
-import java.io.DataOutputStream;
-import java.io.EOFException;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.Socket;
-import java.nio.ByteOrder;
-import java.util.ArrayList;
-
-abstract interface ProcessMessage {
-    abstract boolean processMessage(final MessageQueue queue, final Message msg)
-            throws IOException;
-}
-
-public class MessageQueue implements Runnable {
-
-    private boolean running = false;
-    private ByteOrder byteOrder;
-    private FileInputStream file; // if null, create and use socket
-    Thread thread = null;
-    private final ProcessMessage[] processes;
-    private ArrayList<Message> complete = new ArrayList<Message>(); // synchronized
-    private ArrayList<Message> commands = new ArrayList<Message>(); // synchronized
-    private SampleView sampleView;
-
-    public MessageQueue(SampleView sampleView, final ProcessMessage[] processes) {
-        this.sampleView = sampleView;
-        this.processes = processes;
-    }
-
-    public void start(final ByteOrder byteOrder, final FileInputStream file) {
-        if (running)
-            return;
-        running = true;
-        this.byteOrder = byteOrder;
-        this.file = file;
-        thread = new Thread(this);
-        thread.start();
-    }
-
-    public void stop() {
-        if (!running)
-            return;
-        running = false;
-    }
-
-    public boolean isRunning() {
-        return running;
-    }
-
-    private void sendCommands(final int contextId) throws IOException {
-        synchronized (commands) {
-            for (int i = 0; i < commands.size(); i++) {
-                Message command = commands.get(i);
-                if (command.getContextId() == contextId || command.getContextId() == 0) {
-                    sendMessage(commands.remove(i));
-                    i--;
-                }
-            }
-        }
-    }
-
-    public void addCommand(Message command) {
-        synchronized (commands) {
-            commands.add(command);
-        }
-    }
-
-    // these should only be accessed from the network thread;
-    // access call chain starts with run()
-    private DataInputStream dis = null;
-    private DataOutputStream dos = null;
-    private SparseArray<ArrayList<Message>> incoming = new SparseArray<ArrayList<Message>>();
-
-    @Override
-    public void run() {
-        Socket socket = null;
-        if (file == null)
-            try {
-                socket = new Socket();
-                socket.connect(new java.net.InetSocketAddress("127.0.0.1", Integer
-                        .parseInt(sampleView.actionPort.getText())));
-                dis = new DataInputStream(socket.getInputStream());
-                dos = new DataOutputStream(socket.getOutputStream());
-            } catch (Exception e) {
-                running = false;
-                Error(e);
-            }
-        else
-            dis = new DataInputStream(file);
-
-        while (running) {
-            try {
-                if (file != null && file.available() == 0) {
-                    running = false;
-                    break;
-                }
-            } catch (IOException e1) {
-                e1.printStackTrace();
-                assert false;
-            }
-
-            Message msg = null;
-            if (incoming.size() > 0) { // find queued incoming
-                for (int i = 0; i < incoming.size(); i++) {
-                    final ArrayList<Message> messages = incoming.valueAt(i);
-                    if (messages.size() > 0) {
-                        msg = messages.remove(0);
-                        break;
-                    }
-                }
-            }
-            try {
-                if (null == msg) // get incoming from network
-                    msg = receiveMessage(dis);
-                processMessage(dos, msg);
-            } catch (IOException e) {
-                Error(e);
-                running = false;
-                break;
-            }
-        }
-
-        try {
-            if (socket != null)
-                socket.close();
-            else
-                file.close();
-        } catch (IOException e) {
-            Error(e);
-            running = false;
-        }
-
-    }
-
-    private void putMessage(final Message msg) {
-        ArrayList<Message> existing = incoming.get(msg.getContextId());
-        if (existing == null)
-            incoming.put(msg.getContextId(), existing = new ArrayList<Message>());
-        existing.add(msg);
-    }
-
-    Message receiveMessage(final int contextId) throws IOException {
-        Message msg = receiveMessage(dis);
-        while (msg.getContextId() != contextId) {
-            putMessage(msg);
-            msg = receiveMessage(dis);
-        }
-        return msg;
-    }
-
-    void sendMessage(final Message msg) throws IOException {
-        sendMessage(dos, msg);
-    }
-
-    // should only be used by DefaultProcessMessage
-    private SparseArray<Message> partials = new SparseArray<Message>();
-
-    Message getPartialMessage(final int contextId) {
-        return partials.get(contextId);
-    }
-
-    // used to add BeforeCall to complete if it was skipped
-    void completePartialMessage(final int contextId) {
-        final Message msg = partials.get(contextId);
-        partials.remove(contextId);
-        assert msg != null;
-        assert msg.getType() == Type.BeforeCall;
-        if (msg != null)
-            synchronized (complete) {
-                complete.add(msg);
-            }
-    }
-
-    // can be used by other message processor as default processor
-    void defaultProcessMessage(final Message msg, boolean expectResponse,
-            boolean sendResponse) throws IOException {
-        final int contextId = msg.getContextId();
-        if (msg.getType() == Type.BeforeCall) {
-            if (sendResponse) {
-                final Message.Builder builder = Message.newBuilder();
-                builder.setContextId(contextId);
-                builder.setType(Type.Response);
-                builder.setExpectResponse(expectResponse);
-                builder.setFunction(Function.CONTINUE);
-                sendMessage(dos, builder.build());
-            }
-            assert partials.indexOfKey(contextId) < 0;
-            partials.put(contextId, msg);
-        } else if (msg.getType() == Type.AfterCall) {
-            if (sendResponse) {
-                final Message.Builder builder = Message.newBuilder();
-                builder.setContextId(contextId);
-                builder.setType(Type.Response);
-                builder.setExpectResponse(expectResponse);
-                builder.setFunction(Function.SKIP);
-                sendMessage(dos, builder.build());
-            }
-            assert partials.indexOfKey(contextId) >= 0;
-            final Message before = partials.get(contextId);
-            partials.remove(contextId);
-            assert before.getFunction() == msg.getFunction();
-            final Message completed = before.toBuilder().mergeFrom(msg)
-                    .setType(Type.CompleteCall).build();
-            synchronized (complete) {
-                complete.add(completed);
-            }
-        } else if (msg.getType() == Type.CompleteCall) {
-            // this type should only be encountered on client after processing
-            assert file != null;
-            assert !msg.getExpectResponse();
-            assert !sendResponse;
-            assert partials.indexOfKey(contextId) < 0;
-            synchronized (complete) {
-                complete.add(msg);
-            }
-        } else if (msg.getType() == Type.Response && msg.getFunction() == Function.SETPROP) {
-            synchronized (complete) {
-                complete.add(msg);
-            }
-        } else
-            assert false;
-    }
-
-    public Message removeCompleteMessage(int contextId) {
-        synchronized (complete) {
-            if (complete.size() == 0)
-                return null;
-            if (0 == contextId) // get a message for any context
-                return complete.remove(0);
-            for (int i = 0; i < complete.size(); i++) {
-                Message msg = complete.get(i);
-                if (msg.getContextId() == contextId) {
-                    complete.remove(i);
-                    return msg;
-                }
-            }
-        }
-        return null;
-    }
-
-    private Message receiveMessage(final DataInputStream dis)
-            throws IOException {
-        int len = 0;
-        try {
-            len = dis.readInt();
-            if (byteOrder == ByteOrder.LITTLE_ENDIAN)
-                len = Integer.reverseBytes(len); // readInt reads BIT_ENDIAN
-        } catch (EOFException e) {
-            Error(new Exception("EOF"));
-        }
-        byte[] buffer = new byte[len];
-        int readLen = 0;
-        while (readLen < len) {
-            int read = -1;
-            try {
-                read = dis.read(buffer, readLen, len - readLen);
-            } catch (EOFException e) {
-                Error(new Exception("EOF"));
-            }
-            if (read < 0) {
-                Error(new Exception("read length = " + read));
-                return null;
-            } else
-                readLen += read;
-        }
-        Message msg = Message.parseFrom(buffer);
-        sendCommands(msg.getContextId());
-        return msg;
-    }
-
-    private void sendMessage(final DataOutputStream dos, final Message message)
-            throws IOException {
-        if (dos == null)
-            return;
-        assert message.getFunction() != Function.NEG;
-        final byte[] data = message.toByteArray();
-        if (byteOrder == ByteOrder.BIG_ENDIAN)
-            dos.writeInt(data.length);
-        else
-            dos.writeInt(Integer.reverseBytes(data.length));
-        dos.write(data);
-    }
-
-    private void processMessage(final DataOutputStream dos, final Message msg) throws IOException {
-        if (msg.getExpectResponse()) {
-            assert dos != null; // readonly source cannot expectResponse
-            for (ProcessMessage process : processes)
-                if (process.processMessage(this, msg))
-                    return;
-            defaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
-        } else
-            defaultProcessMessage(msg, msg.getExpectResponse(), msg.getExpectResponse());
-    }
-
-    void Error(Exception e) {
-        sampleView.showError(e);
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/SampleView.java b/tools/glesv2debugger/src/com/android/glesv2debugger/SampleView.java
deleted file mode 100644
index 4a8cdc9..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/SampleView.java
+++ /dev/null
@@ -1,835 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Prop;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-import com.android.sdklib.util.SparseArray;
-
-import org.eclipse.jface.action.Action;
-import org.eclipse.jface.action.IMenuListener;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.action.IToolBarManager;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.jface.dialogs.InputDialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.ListViewer;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.viewers.ViewerSorter;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Slider;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.nio.ByteOrder;
-
-/**
- * This sample class demonstrates how to plug-in a new workbench view. The view
- * shows data obtained from the model. The sample creates a dummy model on the
- * fly, but a real implementation would connect to the model available either in
- * this or another plug-in (e.g. the workspace). The view is connected to the
- * model using a content provider.
- * <p>
- * The view uses a label provider to define how model objects should be
- * presented in the view. Each view can present the same model objects using
- * different labels and icons, if needed. Alternatively, a single label provider
- * can be shared between views in order to ensure that objects of the same type
- * are presented in the same way everywhere.
- * <p>
- */
-
-public class SampleView extends ViewPart implements Runnable, SelectionListener {
-    public static final ByteOrder targetByteOrder = ByteOrder.LITTLE_ENDIAN;
-
-    boolean running = false;
-    Thread thread;
-    MessageQueue messageQueue;
-    SparseArray<DebugContext> debugContexts = new SparseArray<DebugContext>();
-
-    /** The ID of the view as specified by the extension. */
-    public static final String ID = "glesv2debuggerclient.views.SampleView";
-
-    TabFolder tabFolder;
-    TabItem tabItemText, tabItemImage, tabItemBreakpointOption;
-    TabItem tabItemShaderEditor, tabContextViewer;
-    ListViewer viewer; // ListViewer / TableViewer
-    Slider frameNum; // scale max cannot overlap min, so max is array size
-    TreeViewer contextViewer;
-    BreakpointOption breakpointOption;
-    ShaderEditor shaderEditor;
-    Canvas canvas;
-    Text text;
-    Action actionConnect; // connect / disconnect
-
-    Action actionAutoScroll;
-    Action actionFilter;
-    Action actionPort;
-
-    Action actContext; // for toggling contexts
-    DebugContext current = null;
-
-    Point origin = new Point(0, 0); // for smooth scrolling canvas
-    String[] filters = null;
-
-    class ViewContentProvider extends LabelProvider implements IStructuredContentProvider,
-            ITableLabelProvider {
-        Frame frame = null;
-
-        @Override
-        public void inputChanged(Viewer v, Object oldInput, Object newInput) {
-            frame = (Frame) newInput;
-        }
-
-        @Override
-        public void dispose() {
-        }
-
-        @Override
-        public Object[] getElements(Object parent) {
-            return frame.get().toArray();
-        }
-
-        @Override
-        public String getText(Object obj) {
-            MessageData msgData = (MessageData) obj;
-            return msgData.text;
-        }
-
-        @Override
-        public Image getImage(Object obj) {
-            MessageData msgData = (MessageData) obj;
-            return msgData.getImage();
-        }
-
-        @Override
-        public String getColumnText(Object obj, int index) {
-            MessageData msgData = (MessageData) obj;
-            if (index >= msgData.columns.length)
-                return null;
-            return msgData.columns[index];
-        }
-
-        @Override
-        public Image getColumnImage(Object obj, int index) {
-            if (index > -1)
-                return null;
-            MessageData msgData = (MessageData) obj;
-            return msgData.getImage();
-        }
-    }
-
-    class NameSorter extends ViewerSorter {
-        @Override
-        public int compare(Viewer viewer, Object e1, Object e2) {
-            MessageData m1 = (MessageData) e1;
-            MessageData m2 = (MessageData) e2;
-            return (int) ((m1.msg.getTime() - m2.msg.getTime()) * 100);
-        }
-    }
-
-    class Filter extends ViewerFilter {
-        @Override
-        public boolean select(Viewer viewer, Object parentElement,
-                Object element) {
-            MessageData msgData = (MessageData) element;
-            if (null == filters)
-                return true;
-            for (int i = 0; i < filters.length; i++)
-                if (msgData.text.contains(filters[i]))
-                    return true;
-            return false;
-        }
-    }
-
-    public SampleView() {
-
-    }
-
-    public void createLeftPane(Composite parent) {
-        Composite composite = new Composite(parent, 0);
-
-        GridLayout gridLayout = new GridLayout();
-        gridLayout.numColumns = 1;
-        composite.setLayout(gridLayout);
-
-        frameNum = new Slider(composite, SWT.BORDER | SWT.HORIZONTAL);
-        frameNum.setMinimum(0);
-        frameNum.setMaximum(1);
-        frameNum.setSelection(0);
-        frameNum.addSelectionListener(this);
-
-        GridData gridData = new GridData();
-        gridData.horizontalAlignment = SWT.FILL;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.verticalAlignment = SWT.FILL;
-        frameNum.setLayoutData(gridData);
-
-        // Table table = new Table(composite, SWT.H_SCROLL | SWT.V_SCROLL |
-        // SWT.MULTI
-        // | SWT.FULL_SELECTION);
-        // TableLayout layout = new TableLayout();
-        // table.setLayout(layout);
-        // table.setLinesVisible(true);
-        // table.setHeaderVisible(true);
-        // String[] headings = {
-        // "Name", "Elapsed (ms)", "Detail"
-        // };
-        // int[] weights = {
-        // 50, 16, 60
-        // };
-        // int[] widths = {
-        // 180, 90, 200
-        // };
-        // for (int i = 0; i < headings.length; i++) {
-        // layout.addColumnData(new ColumnWeightData(weights[i], widths[i],
-        // true));
-        // TableColumn nameCol = new TableColumn(table, SWT.NONE, i);
-        // nameCol.setText(headings[i]);
-        // }
-
-        // viewer = new TableViewer(table);
-        viewer = new ListViewer(composite, SWT.DEFAULT);
-        viewer.getList().setFont(new Font(viewer.getList().getDisplay(),
-                "Courier", 10, SWT.BOLD));
-        ViewContentProvider contentProvider = new ViewContentProvider();
-        viewer.setContentProvider(contentProvider);
-        viewer.setLabelProvider(contentProvider);
-        // viewer.setSorter(new NameSorter());
-        viewer.setFilters(new ViewerFilter[] {
-                new Filter()
-        });
-
-        gridData = new GridData();
-        gridData.horizontalAlignment = SWT.FILL;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.verticalAlignment = SWT.FILL;
-        gridData.grabExcessVerticalSpace = true;
-        viewer.getControl().setLayoutData(gridData);
-    }
-
-    /**
-     * This is a callback that will allow us to create the viewer and initialize
-     * it.
-     */
-    @Override
-    public void createPartControl(Composite parent) {
-        createLeftPane(parent);
-
-        // Create the help context id for the viewer's control
-        PlatformUI.getWorkbench().getHelpSystem()
-                .setHelp(viewer.getControl(), "GLESv2DebuggerClient.viewer");
-
-        tabFolder = new TabFolder(parent, SWT.BORDER);
-
-        text = new Text(tabFolder, SWT.NO_BACKGROUND | SWT.READ_ONLY
-                | SWT.V_SCROLL | SWT.H_SCROLL);
-
-        tabItemText = new TabItem(tabFolder, SWT.NONE);
-        tabItemText.setText("Text");
-        tabItemText.setControl(text);
-
-        canvas = new Canvas(tabFolder, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE
-                | SWT.V_SCROLL | SWT.H_SCROLL);
-        tabItemImage = new TabItem(tabFolder, SWT.NONE);
-        tabItemImage.setText("Image");
-        tabItemImage.setControl(canvas);
-
-        breakpointOption = new BreakpointOption(this, tabFolder);
-        tabItemBreakpointOption = new TabItem(tabFolder, SWT.NONE);
-        tabItemBreakpointOption.setText("Breakpoint Option");
-        tabItemBreakpointOption.setControl(breakpointOption);
-
-        shaderEditor = new ShaderEditor(this, tabFolder);
-        tabItemShaderEditor = new TabItem(tabFolder, SWT.NONE);
-        tabItemShaderEditor.setText("Shader Editor");
-        tabItemShaderEditor.setControl(shaderEditor);
-
-        contextViewer = new TreeViewer(tabFolder);
-        ContextViewProvider contextViewProvider = new ContextViewProvider(this);
-        contextViewer.addSelectionChangedListener(contextViewProvider);
-        contextViewer.setContentProvider(contextViewProvider);
-        contextViewer.setLabelProvider(contextViewProvider);
-        tabContextViewer = new TabItem(tabFolder, SWT.NONE);
-        tabContextViewer.setText("Context Viewer");
-        tabContextViewer.setControl(contextViewer.getTree());
-
-        final ScrollBar hBar = canvas.getHorizontalBar();
-        hBar.addListener(SWT.Selection, new Listener() {
-            @Override
-            public void handleEvent(Event e) {
-                if (null == canvas.getBackgroundImage())
-                    return;
-                Image image = canvas.getBackgroundImage();
-                int hSelection = hBar.getSelection();
-                int destX = -hSelection - origin.x;
-                Rectangle rect = image.getBounds();
-                canvas.scroll(destX, 0, 0, 0, rect.width, rect.height, false);
-                origin.x = -hSelection;
-            }
-        });
-        final ScrollBar vBar = canvas.getVerticalBar();
-        vBar.addListener(SWT.Selection, new Listener() {
-            @Override
-            public void handleEvent(Event e) {
-                if (null == canvas.getBackgroundImage())
-                    return;
-                Image image = canvas.getBackgroundImage();
-                int vSelection = vBar.getSelection();
-                int destY = -vSelection - origin.y;
-                Rectangle rect = image.getBounds();
-                canvas.scroll(0, destY, 0, 0, rect.width, rect.height, false);
-                origin.y = -vSelection;
-            }
-        });
-        canvas.addListener(SWT.Resize, new Listener() {
-            @Override
-            public void handleEvent(Event e) {
-                if (null == canvas.getBackgroundImage())
-                    return;
-                Image image = canvas.getBackgroundImage();
-                Rectangle rect = image.getBounds();
-                Rectangle client = canvas.getClientArea();
-                hBar.setMaximum(rect.width);
-                vBar.setMaximum(rect.height);
-                hBar.setThumb(Math.min(rect.width, client.width));
-                vBar.setThumb(Math.min(rect.height, client.height));
-                int hPage = rect.width - client.width;
-                int vPage = rect.height - client.height;
-                int hSelection = hBar.getSelection();
-                int vSelection = vBar.getSelection();
-                if (hSelection >= hPage) {
-                    if (hPage <= 0)
-                        hSelection = 0;
-                    origin.x = -hSelection;
-                }
-                if (vSelection >= vPage) {
-                    if (vPage <= 0)
-                        vSelection = 0;
-                    origin.y = -vSelection;
-                }
-                canvas.redraw();
-            }
-        });
-        canvas.addListener(SWT.Paint, new Listener() {
-            @Override
-            public void handleEvent(Event e) {
-                if (null == canvas.getBackgroundImage())
-                    return;
-                Image image = canvas.getBackgroundImage();
-                GC gc = e.gc;
-                gc.drawImage(image, origin.x, origin.y);
-                Rectangle rect = image.getBounds();
-                Rectangle client = canvas.getClientArea();
-                int marginWidth = client.width - rect.width;
-                if (marginWidth > 0) {
-                    gc.fillRectangle(rect.width, 0, marginWidth, client.height);
-                }
-                int marginHeight = client.height - rect.height;
-                if (marginHeight > 0) {
-                    gc.fillRectangle(0, rect.height, client.width, marginHeight);
-                }
-            }
-        });
-
-        hookContextMenu();
-        hookSelectionChanged();
-        contributeToActionBars();
-
-        messageQueue = new MessageQueue(this, new ProcessMessage[] {
-                breakpointOption, shaderEditor
-        });
-    }
-
-    private void hookContextMenu() {
-        MenuManager menuMgr = new MenuManager("#PopupMenu");
-        menuMgr.setRemoveAllWhenShown(true);
-        menuMgr.addMenuListener(new IMenuListener() {
-            @Override
-            public void menuAboutToShow(IMenuManager manager) {
-                SampleView.this.fillContextMenu(manager);
-            }
-        });
-        Menu menu = menuMgr.createContextMenu(viewer.getControl());
-        viewer.getControl().setMenu(menu);
-        getSite().registerContextMenu(menuMgr, viewer);
-    }
-
-    private void contributeToActionBars() {
-        IActionBars bars = getViewSite().getActionBars();
-        fillLocalPullDown(bars.getMenuManager());
-        fillLocalToolBar(bars.getToolBarManager());
-    }
-
-    private void fillLocalPullDown(IMenuManager manager) {
-        // manager.add(actionConnect);
-        // manager.add(new Separator());
-        // manager.add(actionDisconnect);
-    }
-
-    private void fillContextMenu(IMenuManager manager) {
-        // manager.add(actionConnect);
-        // manager.add(actionDisconnect);
-        // Other plug-ins can contribute there actions here
-        manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
-    }
-
-    private void fillLocalToolBar(final IToolBarManager manager) {
-        actionConnect = new Action("Connect", Action.AS_PUSH_BUTTON) {
-            @Override
-            public void run() {
-                if (!running)
-                    changeContext(null); // viewer will switch to newest context
-                connectDisconnect();
-            }
-        };
-        manager.add(actionConnect);
-
-        manager.add(new Action("Open File", Action.AS_PUSH_BUTTON)
-        {
-            @Override
-            public void run()
-            {
-                if (!running)
-                {
-                    changeContext(null); // viewer will switch to newest context
-                    openFile();
-                }
-            }
-        });
-
-        final Shell shell = this.getViewSite().getShell();
-        actionAutoScroll = new Action("Auto Scroll", Action.AS_CHECK_BOX) {
-            @Override
-            public void run() {
-            }
-        };
-        actionAutoScroll.setChecked(true);
-        manager.add(actionAutoScroll);
-
-        actionFilter = new Action("*", Action.AS_DROP_DOWN_MENU) {
-            @Override
-            public void run() {
-                org.eclipse.jface.dialogs.InputDialog dialog = new org.eclipse.jface.dialogs.InputDialog(
-                        shell, "Contains Filter",
-                        "case sensitive substring or *",
-                        actionFilter.getText(), null);
-                if (Window.OK == dialog.open()) {
-                    actionFilter.setText(dialog.getValue());
-                    manager.update(true);
-                    filters = dialog.getValue().split("\\|");
-                    if (filters.length == 1 && filters[0].equals("*"))
-                        filters = null;
-                    viewer.refresh();
-                }
-
-            }
-        };
-        manager.add(actionFilter);
-
-        manager.add(new Action("CaptureDraw", Action.AS_DROP_DOWN_MENU)
-        {
-            @Override
-            public void run()
-            {
-                int contextId = 0;
-                if (current != null)
-                    contextId = current.contextId;
-                InputDialog inputDialog = new InputDialog(shell,
-                        "Capture glDrawArrays/Elements",
-                        "Enter number of glDrawArrays/Elements to glReadPixels for "
-                                + "context 0x" + Integer.toHexString(contextId) +
-                                "\n(0x0 is any context)", "9001", null);
-                if (inputDialog.open() != Window.OK)
-                    return;
-                Message.Builder builder = Message.newBuilder();
-                builder.setContextId(contextId);
-                builder.setType(Type.Response);
-                builder.setExpectResponse(false);
-                builder.setFunction(Function.SETPROP);
-                builder.setProp(Prop.CaptureDraw);
-                builder.setArg0(Integer.parseInt(inputDialog.getValue()));
-                messageQueue.addCommand(builder.build());
-            }
-        });
-
-        manager.add(new Action("CaptureSwap", Action.AS_DROP_DOWN_MENU)
-        {
-            @Override
-            public void run()
-            {
-                int contextId = 0;
-                if (current != null)
-                    contextId = current.contextId;
-                InputDialog inputDialog = new InputDialog(shell,
-                        "Capture eglSwapBuffers",
-                        "Enter number of eglSwapBuffers to glReadPixels for "
-                                + "context 0x" + Integer.toHexString(contextId) +
-                                "\n(0x0 is any context)", "9001", null);
-                if (inputDialog.open() != Window.OK)
-                    return;
-                Message.Builder builder = Message.newBuilder();
-                builder.setContextId(contextId);
-                builder.setType(Type.Response);
-                builder.setExpectResponse(false);
-                builder.setFunction(Function.SETPROP);
-                builder.setProp(Prop.CaptureSwap);
-                builder.setArg0(Integer.parseInt(inputDialog.getValue()));
-                messageQueue.addCommand(builder.build());
-            }
-        });
-
-        manager.add(new Action("SYSTEM_TIME_THREAD", Action.AS_DROP_DOWN_MENU)
-        {
-            @Override
-            public void run()
-            {
-                final String[] timeModes = {
-                        "SYSTEM_TIME_REALTIME", "SYSTEM_TIME_MONOTONIC", "SYSTEM_TIME_PROCESS",
-                        "SYSTEM_TIME_THREAD"
-                };
-                int i = java.util.Arrays.asList(timeModes).indexOf(this.getText());
-                i = (i + 1) % timeModes.length;
-                Message.Builder builder = Message.newBuilder();
-                builder.setContextId(0); // FIXME: proper context id
-                builder.setType(Type.Response);
-                builder.setExpectResponse(false);
-                builder.setFunction(Message.Function.SETPROP);
-                builder.setProp(Prop.TimeMode);
-                builder.setArg0(i);
-                messageQueue.addCommand(builder.build());
-                this.setText(timeModes[i]);
-                manager.update(true);
-            }
-        });
-
-        actContext = new Action("Context: 0x", Action.AS_DROP_DOWN_MENU) {
-            @Override
-            public void run() {
-                if (debugContexts.size() < 2)
-                    return;
-                final String idStr = this.getText().substring(
-                                          "Context: 0x".length());
-                if (idStr.length() == 0)
-                    return;
-                final int contextId = Integer.parseInt(idStr, 16);
-                int index = debugContexts.indexOfKey(contextId);
-                index = (index + 1) % debugContexts.size();
-                changeContext(debugContexts.valueAt(index));
-            }
-        };
-        manager.add(actContext);
-
-        actionPort = new Action("5039", Action.AS_DROP_DOWN_MENU)
-        {
-            @Override
-            public void run() {
-                InputDialog dialog = new InputDialog(shell, "Port", "Debugger port",
-                        actionPort.getText(), null);
-                if (Window.OK == dialog.open()) {
-                    actionPort.setText(dialog.getValue());
-                    manager.update(true);
-                }
-            }
-        };
-        manager.add(actionPort);
-
-        manager.add(new Action("CodeGen Frame", Action.AS_PUSH_BUTTON)
-        {
-            @Override
-            public void run()
-            {
-                if (current != null)
-                {
-                    new CodeGen().codeGenFrame((Frame) viewer.getInput());
-                    // need to reload current frame
-                    viewer.setInput(current.getFrame(frameNum.getSelection()));
-                }
-            }
-        });
-
-        manager.add(new Action("CodeGen Frames", Action.AS_PUSH_BUTTON)
-        {
-            @Override
-            public void run()
-            {
-                if (current != null)
-                {
-                    new CodeGen().codeGenFrames(current, frameNum.getSelection() + 1,
-                            getSite().getShell());
-                    // need to reload current frame
-                    viewer.setInput(current.getFrame(frameNum.getSelection()));
-                }
-            }
-        });
-    }
-
-    private void openFile() {
-        FileDialog dialog = new FileDialog(getSite().getShell(), SWT.OPEN);
-        dialog.setText("Open");
-        dialog.setFilterExtensions(new String[] {
-                "*.gles2dbg"
-        });
-        String filePath = dialog.open();
-        if (filePath == null)
-            return;
-        FileInputStream file = null;
-        try {
-            file = new FileInputStream(filePath);
-        } catch (FileNotFoundException e) {
-            e.printStackTrace();
-            return;
-        }
-        running = true;
-        messageQueue.start(targetByteOrder, file);
-        thread = new Thread(this);
-        thread.start();
-        actionConnect.setText("Disconnect");
-        getViewSite().getActionBars().getToolBarManager().update(true);
-    }
-
-    private void connectDisconnect() {
-        if (!running) {
-            running = true;
-            messageQueue.start(targetByteOrder, null);
-            thread = new Thread(this);
-            thread.start();
-            actionConnect.setText("Disconnect");
-        } else {
-            running = false;
-            messageQueue.stop();
-            actionConnect.setText("Connect");
-        }
-        this.getSite().getShell().getDisplay().syncExec(new Runnable() {
-            @Override
-            public void run() {
-                getViewSite().getActionBars().getToolBarManager().update(true);
-            }
-        });
-    }
-
-    void messageDataSelected(final MessageData msgData) {
-        if (null == msgData)
-            return;
-        if (frameNum.getSelection() == frameNum.getMaximum())
-            return; // scale max cannot overlap min, so max is array size
-        final Frame frame = current.getFrame(frameNum.getSelection());
-        final Context context = frame.computeContext(msgData);
-        contextViewer.setInput(context);
-        if (msgData.getImage() != null) {
-            canvas.setBackgroundImage(msgData.getImage());
-            tabFolder.setSelection(tabItemImage);
-            canvas.redraw();
-        } else if (null != msgData.shader) {
-            text.setText(msgData.shader);
-            tabFolder.setSelection(tabItemText);
-        } else if (null != msgData.attribs) {
-            StringBuilder builder = new StringBuilder();
-            final int maxAttrib = msgData.msg.getArg7();
-            for (int i = 0; i < msgData.attribs[0].length / 4; i++) {
-                if (msgData.indices != null) {
-                    builder.append(msgData.indices[i] & 0xffff);
-                    builder.append(": ");
-                }
-                for (int j = 0; j < maxAttrib; j++) {
-                    for (int k = 0; k < 4; k++)
-                        builder.append(String.format("%.3g ", msgData.attribs[j][i * 4 + k]));
-                    if (j < maxAttrib - 1)
-                        builder.append("|| ");
-                }
-                builder.append('\n');
-            }
-            text.setText(builder.toString());
-            tabFolder.setSelection(tabItemText);
-        }
-    }
-
-    private void hookSelectionChanged() {
-        viewer.addSelectionChangedListener(new ISelectionChangedListener() {
-            @Override
-            public void selectionChanged(SelectionChangedEvent event) {
-                StructuredSelection selection = (StructuredSelection) event
-                        .getSelection();
-                if (null == selection)
-                    return;
-                MessageData msgData = (MessageData) selection.getFirstElement();
-                messageDataSelected(msgData);
-            }
-        });
-    }
-
-    public void showError(final Exception e) {
-        viewer.getControl().getDisplay().syncExec(new Runnable() {
-            @Override
-            public void run() {
-                MessageDialog.openError(viewer.getControl().getShell(),
-                        "GL ES 2.0 Debugger Client", e.getMessage());
-            }
-        });
-    }
-
-    /**
-     * Passing the focus request to the viewer's control.
-     */
-    @Override
-    public void setFocus() {
-        viewer.getControl().setFocus();
-    }
-
-    @Override
-    public void run() {
-        int newMessages = 0;
-
-        boolean shaderEditorUpdate = false;
-        while (running) {
-            final Message oriMsg = messageQueue.removeCompleteMessage(0);
-            if (oriMsg == null && !messageQueue.isRunning())
-                break;
-            if (newMessages > 60 || (newMessages > 0 && null == oriMsg)) {
-                newMessages = 0;
-                if (current != null && current.uiUpdate)
-                    getSite().getShell().getDisplay().syncExec(new Runnable() {
-                        @Override
-                        public void run() {
-                            if (frameNum.getSelection() == current.frameCount() - 1 ||
-                                    frameNum.getSelection() == current.frameCount() - 2)
-                            {
-                                viewer.refresh(false);
-                                if (actionAutoScroll.isChecked())
-                                    viewer.getList().setSelection(
-                                            viewer.getList().getItemCount() - 1);
-                            }
-                            frameNum.setMaximum(current.frameCount());
-                        }
-                    });
-                current.uiUpdate = false;
-
-                if (shaderEditorUpdate)
-                    this.getSite().getShell().getDisplay().syncExec(new Runnable() {
-                        @Override
-                        public void run() {
-                            shaderEditor.updateUI();
-                        }
-                    });
-                shaderEditorUpdate = false;
-            }
-            if (null == oriMsg) {
-                try {
-                    Thread.sleep(1);
-                    continue;
-                } catch (InterruptedException e) {
-                    showError(e);
-                }
-            }
-            DebugContext debugContext = debugContexts.get(oriMsg.getContextId());
-            if (debugContext == null) {
-                debugContext = new DebugContext(oriMsg.getContextId());
-                debugContexts.put(oriMsg.getContextId(), debugContext);
-            }
-            debugContext.processMessage(oriMsg);
-            shaderEditorUpdate |= debugContext.currentContext.serverShader.uiUpdate;
-            debugContext.currentContext.serverShader.uiUpdate = false;
-            if (current == null && debugContext.frameCount() > 0)
-                changeContext(debugContext);
-            newMessages++;
-        }
-        if (running)
-            connectDisconnect(); // error occurred, disconnect
-    }
-
-    /** can be called from non-UI thread */
-    void changeContext(final DebugContext newContext) {
-        getSite().getShell().getDisplay().syncExec(new Runnable() {
-            @Override
-            public void run() {
-                current = newContext;
-                if (current != null)
-                {
-                    frameNum.setMaximum(current.frameCount());
-                    if (frameNum.getSelection() >= current.frameCount())
-                        if (current.frameCount() > 0)
-                            frameNum.setSelection(current.frameCount() - 1);
-                        else
-                            frameNum.setSelection(0);
-                    viewer.setInput(current.getFrame(frameNum.getSelection()));
-                    actContext.setText("Context: 0x" + Integer.toHexString(current.contextId));
-                }
-                else
-                {
-                    frameNum.setMaximum(1); // cannot overlap min
-                    frameNum.setSelection(0);
-                    viewer.setInput(null);
-                    actContext.setText("Context: 0x");
-                }
-                shaderEditor.updateUI();
-                getViewSite().getActionBars().getToolBarManager().update(true);
-            }
-        });
-    }
-
-    @Override
-    public void widgetSelected(SelectionEvent e) {
-        if (e.widget != frameNum)
-            assert false;
-        if (current == null)
-            return;
-        if (frameNum.getSelection() == current.frameCount())
-            return; // scale maximum cannot overlap minimum
-        Frame frame = current.getFrame(frameNum.getSelection());
-        viewer.setInput(frame);
-    }
-
-    @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-        widgetSelected(e);
-    }
-}
diff --git a/tools/glesv2debugger/src/com/android/glesv2debugger/ShaderEditor.java b/tools/glesv2debugger/src/com/android/glesv2debugger/ShaderEditor.java
deleted file mode 100644
index c125143..0000000
--- a/tools/glesv2debugger/src/com/android/glesv2debugger/ShaderEditor.java
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ExtendedModifyEvent;
-import org.eclipse.swt.custom.ExtendedModifyListener;
-import org.eclipse.swt.custom.StyleRange;
-import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.List;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-
-public class ShaderEditor extends Composite implements SelectionListener, ExtendedModifyListener,
-        ProcessMessage {
-    SampleView sampleView;
-
-    ToolBar toolbar;
-    ToolItem uploadShader, restoreShader, currentPrograms;
-    List list;
-    StyledText styledText;
-
-    GLShader current;
-
-    ArrayList<GLShader> shadersToUpload = new ArrayList<GLShader>();
-
-    ShaderEditor(SampleView sampleView, Composite parent) {
-        super(parent, 0);
-        this.sampleView = sampleView;
-
-        GridLayout gridLayout = new GridLayout();
-        gridLayout.numColumns = 1;
-        this.setLayout(gridLayout);
-
-        toolbar = new ToolBar(this, SWT.BORDER);
-
-        uploadShader = new ToolItem(toolbar, SWT.PUSH);
-        uploadShader.setText("Upload Shader");
-        uploadShader.addSelectionListener(this);
-
-        restoreShader = new ToolItem(toolbar, SWT.PUSH);
-        restoreShader.setText("Original Shader");
-        restoreShader.addSelectionListener(this);
-
-        currentPrograms = new ToolItem(toolbar, SWT.PUSH);
-        currentPrograms.setText("Current Programs: ");
-
-        list = new List(this, SWT.V_SCROLL);
-        list.setFont(new Font(parent.getDisplay(), "Courier", 10, 0));
-        list.addSelectionListener(this);
-        GridData gridData = new GridData();
-        gridData.horizontalAlignment = SWT.FILL;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.verticalAlignment = SWT.FILL;
-        gridData.grabExcessVerticalSpace = true;
-        list.setLayoutData(gridData);
-
-        styledText = new StyledText(this, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI);
-        gridData = new GridData();
-        gridData.horizontalAlignment = SWT.FILL;
-        gridData.grabExcessHorizontalSpace = true;
-        gridData.verticalAlignment = SWT.FILL;
-        gridData.grabExcessVerticalSpace = true;
-        gridData.verticalSpan = 2;
-        styledText.setLayoutData(gridData);
-        styledText.addExtendedModifyListener(this);
-    }
-
-    public void updateUI() {
-        list.removeAll();
-        String progs = "Current Programs: ";
-        for (int j = 0; j < sampleView.debugContexts.size(); j++) {
-            final Context context = sampleView.debugContexts.valueAt(j).currentContext;
-
-            if (context.serverShader.current != null) {
-                progs += context.serverShader.current.name + "(0x";
-                progs += Integer.toHexString(context.contextId) + ") ";
-            }
-            for (int i = 0; i < context.serverShader.shaders.size(); i++) {
-                GLShader shader = context.serverShader.shaders.valueAt(i);
-                StringBuilder builder = new StringBuilder();
-                builder.append(String.format("%08X", context.contextId));
-                builder.append(' ');
-                builder.append(shader.type);
-                while (builder.length() < 30)
-                    builder.append(" ");
-                builder.append(shader.name);
-                while (builder.length() < 40)
-                    builder.append(" ");
-                builder.append(" : ");
-                for (Context ctx : context.shares) {
-                    builder.append(String.format("%08X", ctx.contextId));
-                    builder.append(' ');
-                }
-                builder.append(": ");
-                for (int program : shader.programs) {
-                    builder.append(program);
-                    builder.append(" ");
-                }
-                list.add(builder.toString());
-            }
-
-        }
-
-        currentPrograms.setText(progs);
-        toolbar.redraw();
-        toolbar.pack(true);
-        toolbar.update();
-    }
-
-    void uploadShader() {
-        current.source = styledText.getText();
-
-        // optional syntax check by glsl_compiler, built from external/mesa3d
-        if (new File("./glsl_compiler").exists())
-            try {
-                File file = File.createTempFile("shader",
-                        current.type == GLEnum.GL_VERTEX_SHADER ? ".vert" : ".frag");
-                FileWriter fileWriter = new FileWriter(file, false);
-                fileWriter.write(current.source);
-                fileWriter.close();
-
-                ProcessBuilder processBuilder = new ProcessBuilder(
-                        "./glsl_compiler", "--glsl-es", file.getAbsolutePath());
-                final Process process = processBuilder.start();
-                InputStream is = process.getInputStream();
-                InputStreamReader isr = new InputStreamReader(is);
-                BufferedReader br = new BufferedReader(isr);
-                String line;
-                String infolog = "";
-
-                styledText.setLineBackground(0, styledText.getLineCount(), null);
-
-                while ((line = br.readLine()) != null) {
-                    infolog += line;
-                    if (!line.startsWith("0:"))
-                        continue;
-                    String[] details = line.split(":|\\(|\\)");
-                    final int ln = Integer.parseInt(details[1]);
-                    if (ln > 0) // usually line 0 means errors other than syntax
-                        styledText.setLineBackground(ln - 1, 1,
-                                new Color(Display.getCurrent(), 255, 230, 230));
-                }
-                file.delete();
-                if (infolog.length() > 0) {
-                    if (!MessageDialog.openConfirm(getShell(),
-                            "Shader Syntax Error, Continue?", infolog))
-                        return;
-                }
-            } catch (IOException e) {
-                sampleView.showError(e);
-            }
-
-        // add the initial command, which when read by server will set
-        // expectResponse for the message loop and go into message exchange
-        synchronized (shadersToUpload) {
-            for (GLShader shader : shadersToUpload) {
-                if (shader.context.context.contextId != current.context.context.contextId)
-                    continue;
-                MessageDialog.openWarning(this.getShell(), "Context 0x" +
-                        Integer.toHexString(current.context.context.contextId),
-                        "Previous shader upload not complete, try again");
-                return;
-            }
-            shadersToUpload.add(current);
-            final int contextId = current.context.context.contextId;
-            Message.Builder builder = getBuilder(contextId);
-            MessageParserEx.instance.parse(builder,
-                    String.format("glShaderSource(%d,1,\"%s\",0)", current.name, current.source));
-            sampleView.messageQueue.addCommand(builder.build());
-        }
-    }
-
-    Message.Builder getBuilder(int contextId) {
-        Message.Builder builder = Message.newBuilder();
-        builder.setContextId(contextId);
-        builder.setType(Type.Response);
-        builder.setExpectResponse(true);
-        return builder;
-    }
-
-    Message exchangeMessage(final int contextId, final MessageQueue queue,
-            String format, Object... args) throws IOException {
-        Message.Builder builder = getBuilder(contextId);
-        MessageParserEx.instance.parse(builder, String.format(format, args));
-        final Function function = builder.getFunction();
-        queue.sendMessage(builder.build());
-        final Message msg = queue.receiveMessage(contextId);
-        assert msg.getContextId() == contextId;
-        assert msg.getType() == Type.AfterGeneratedCall;
-        assert msg.getFunction() == function;
-        return msg;
-    }
-
-    // this is called from network thread
-    public boolean processMessage(final MessageQueue queue, final Message msg)
-            throws IOException {
-        GLShader shader = null;
-        final int contextId = msg.getContextId();
-        synchronized (shadersToUpload) {
-            if (shadersToUpload.size() == 0)
-                return false;
-            boolean matchingContext = false;
-            for (int i = 0; i < shadersToUpload.size(); i++) {
-                shader = shadersToUpload.get(i);
-                for (Context ctx : shader.context.context.shares)
-                    if (ctx.contextId == contextId) {
-                        matchingContext = true;
-                        break;
-                    }
-                if (matchingContext) {
-                    shadersToUpload.remove(i);
-                    break;
-                }
-            }
-            if (!matchingContext)
-                return false;
-        }
-
-        // glShaderSource was already sent to trigger set expectResponse
-        assert msg.getType() == Type.AfterGeneratedCall;
-        assert msg.getFunction() == Function.glShaderSource;
-
-        exchangeMessage(contextId, queue, "glCompileShader(%d)", shader.name);
-
-        // the 0, "" and {0} are dummies for the parser
-        Message rcv = exchangeMessage(contextId, queue,
-                "glGetShaderiv(%d, GL_COMPILE_STATUS, {0})", shader.name);
-        assert rcv.hasData();
-        if (rcv.getData().asReadOnlyByteBuffer().getInt() == 0) {
-            // compile failed
-            rcv = exchangeMessage(contextId, queue,
-                    "glGetShaderInfoLog(%d, 0, 0, \"\")", shader.name);
-            final String title = String.format("Shader %d in 0x%s failed to compile",
-                    shader.name, Integer.toHexString(shader.context.context.contextId));
-            final String message = rcv.getData().toStringUtf8();
-            sampleView.getSite().getShell().getDisplay().syncExec(new Runnable() {
-                @Override
-                public void run()
-                {
-                    MessageDialog.openWarning(getShell(), title, message);
-                }
-            });
-        } else
-            for (int programName : shader.programs) {
-                GLProgram program = shader.context.getProgram(programName);
-                exchangeMessage(contextId, queue, "glLinkProgram(%d)", program.name);
-                rcv = exchangeMessage(contextId, queue,
-                        "glGetProgramiv(%d, GL_LINK_STATUS, {0})", program.name);
-                assert rcv.hasData();
-                if (rcv.getData().asReadOnlyByteBuffer().getInt() != 0)
-                    continue;
-                // link failed
-                rcv = exchangeMessage(contextId, queue,
-                            "glGetProgramInfoLog(%d, 0, 0, \"\")", program.name);
-                final String title = String.format("Program %d in 0x%s failed to link",
-                        program.name, Integer.toHexString(program.context.context.contextId));
-                final String message = rcv.getData().toStringUtf8();
-                sampleView.getSite().getShell().getDisplay().syncExec(new Runnable() {
-                    @Override
-                    public void run()
-                    {
-                        MessageDialog.openWarning(getShell(), title, message);
-                    }
-                });
-                // break;
-            }
-
-        // TODO: add to upload results if failed
-
-        Message.Builder builder = getBuilder(contextId);
-        builder.setExpectResponse(false);
-        if (queue.getPartialMessage(contextId) != null)
-            // the glShaderSource interrupted a BeforeCall, so continue
-            builder.setFunction(Function.CONTINUE);
-        else
-            builder.setFunction(Function.SKIP);
-        queue.sendMessage(builder.build());
-
-        return true;
-    }
-
-    @Override
-    public void widgetSelected(SelectionEvent e) {
-        if (e.getSource() == uploadShader && null != current) {
-            uploadShader();
-            return;
-        } else if (e.getSource() == restoreShader && null != current) {
-            current.source = styledText.getText();
-            styledText.setText(current.originalSource);
-            return;
-        }
-
-        if (list.getSelectionCount() < 1)
-            return;
-        if (null != current && !current.source.equals(styledText.getText())) {
-            String[] btns = {
-                    "&Upload", "&Save", "&Discard"
-            };
-            MessageDialog dialog = new MessageDialog(this.getShell(), "Shader Edited",
-                    null, "Shader source has been edited", MessageDialog.QUESTION, btns, 0);
-            int rc = dialog.open();
-            if (rc == SWT.DEFAULT || rc == 0)
-                uploadShader();
-            else if (rc == 1)
-                current.source = styledText.getText();
-            // else if (rc == 2) do nothing; selection is changing
-        }
-        String[] details = list.getSelection()[0].split("\\s+");
-        final int contextId = Integer.parseInt(details[0], 16);
-        int name = Integer.parseInt(details[2]);
-        current = sampleView.debugContexts.get(contextId).currentContext.serverShader.shaders
-                .get(name);
-        styledText.setText(current.source);
-    }
-
-    @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-        widgetSelected(e);
-    }
-
-    @Override
-    public void modifyText(ExtendedModifyEvent event) {
-        final String[] keywords = {
-                "gl_Position", "gl_FragColor"
-        };
-        // FIXME: proper scanner for syntax highlighting
-        String text = styledText.getText();
-        int start = event.start;
-        int end = event.start + event.length;
-        start -= 20; // deleting chars from keyword causes rescan
-        end += 20;
-        if (start < 0)
-            start = 0;
-        if (end > text.length())
-            end = text.length();
-        if (null != styledText.getStyleRangeAtOffset(event.start)) {
-            StyleRange clearStyleRange = new StyleRange();
-            clearStyleRange.start = start;
-            clearStyleRange.length = end - start;
-            clearStyleRange.foreground = event.display.getSystemColor(SWT.COLOR_BLACK);
-            styledText.setStyleRange(clearStyleRange);
-        }
-
-        while (start < end) {
-            for (final String keyword : keywords) {
-                if (!text.substring(start).startsWith(keyword))
-                    continue;
-                if (start > 0) {
-                    final char before = text.charAt(start - 1);
-                    if (Character.isLetterOrDigit(before))
-                        continue;
-                    else if (before == '_')
-                        continue;
-                }
-                if (start + keyword.length() < text.length()) {
-                    final char after = text.charAt(start + keyword.length());
-                    if (Character.isLetterOrDigit(after))
-                        continue;
-                    else if (after == '_')
-                        continue;
-                }
-                StyleRange style1 = new StyleRange();
-                style1.start = start;
-                style1.length = keyword.length();
-                style1.foreground = event.display.getSystemColor(SWT.COLOR_BLUE);
-                styledText.setStyleRange(style1);
-            }
-            start++;
-        }
-    }
-}
diff --git a/tools/glesv2debugger/test/com/android/glesv2debugger/MessageParserExTest.java b/tools/glesv2debugger/test/com/android/glesv2debugger/MessageParserExTest.java
deleted file mode 100644
index d2a9a7e..0000000
--- a/tools/glesv2debugger/test/com/android/glesv2debugger/MessageParserExTest.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-import com.google.protobuf.ByteString;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.nio.ByteBuffer;
-
-public class MessageParserExTest {
-    /**
-     * @throws java.lang.Exception
-     */
-    @Before
-    public void setUp() throws Exception {
-    }
-
-    @Test
-    public void testParseFloats() {
-        final MessageParserEx parser = new MessageParserEx();
-        final String args = "{0, 1    ,2,3  }";
-        parser.args = args;
-        final ByteBuffer data = parser.parseFloats(4).asReadOnlyByteBuffer();
-        data.order(SampleView.targetByteOrder);
-        for (int i = 0; i < 4; i++)
-            assertEquals(i, data.getFloat(), 0);
-    }
-
-    @Test
-    public void testParseArgument() {
-        final MessageParserEx parser = new MessageParserEx();
-        final String args = "sdfa   =  GL_VERTEX_SHADER , -5421 ,0x443=0x54f";
-        parser.args = args;
-        assertEquals(GLEnum.GL_VERTEX_SHADER.value, parser.parseArgument());
-        assertEquals(-5421, parser.parseArgument());
-        assertEquals(0x54f, parser.parseArgument());
-    }
-
-    /**
-     * Test method for
-     * {@link com.android.glesv2debugger.MessageParserEx#parse_glShaderSource(com.android.glesv2debugger.DebuggerMessage.Message.Builder)}
-     * .
-     */
-    @Test
-    public void testParse_glShaderSource() {
-        final Message.Builder builder = Message.newBuilder();
-        final MessageParserEx messageParserEx = new MessageParserEx();
-        final String source = "dks \n jafhskjaho { urehg ; } hskjg";
-        messageParserEx.parse(builder, "void glShaderSource ( shader=4, count= 1, "
-                                + "string =\"" + source + "\"  , 0x0)");
-        assertEquals(Function.glShaderSource, builder.getFunction());
-        assertEquals(4, builder.getArg0());
-        assertEquals(1, builder.getArg1());
-        assertEquals(source, builder.getData().toStringUtf8());
-        assertEquals(0, builder.getArg3());
-    }
-
-    @Test
-    public void testParse_glBlendEquation() {
-        assertNotNull(MessageParserEx.instance);
-        final Message.Builder builder = Message.newBuilder();
-        MessageParserEx.instance.parse(builder, "void glBlendEquation ( mode= GL_ADD ) ; ");
-        assertEquals(Function.glBlendEquation, builder.getFunction());
-        assertEquals(GLEnum.GL_ADD.value, builder.getArg0());
-    }
-
-    /** loopback testing of typical generated MessageFormatter and MessageParser */
-    @Test
-    public void testParseFormatterMessage() {
-        final ByteBuffer srcData = ByteBuffer.allocate(4 * 2 * 4);
-        srcData.order(SampleView.targetByteOrder);
-        for (int i = 0; i < 4 * 2; i++)
-            srcData.putFloat(i);
-        srcData.rewind();
-        Message.Builder builder = Message.newBuilder();
-        builder.setContextId(3752).setExpectResponse(false).setType(Type.CompleteCall);
-        builder.setFunction(Function.glUniformMatrix2fv);
-        builder.setArg0(54).setArg1(2).setArg2(0).setData(ByteString.copyFrom(srcData));
-        Message msg = builder.build();
-        builder = msg.toBuilder();
-        String formatted = MessageFormatter.format(msg, false);
-        formatted = formatted.substring(0, formatted.indexOf('(')) + ' ' + builder.getFunction() +
-                formatted.substring(formatted.indexOf('('));
-        Message.Builder parsed = Message.newBuilder();
-        MessageParserEx.instance.parse(parsed, formatted);
-        assertEquals(builder.getFunction(), parsed.getFunction());
-        assertEquals(builder.getArg0(), parsed.getArg0());
-        assertEquals(builder.getArg1(), parsed.getArg1());
-        assertEquals(builder.getArg2(), parsed.getArg2());
-        assertEquals(builder.getData().toStringUtf8(), parsed.getData().toStringUtf8());
-    }
-
-}
diff --git a/tools/glesv2debugger/test/com/android/glesv2debugger/MessageQueueTest.java b/tools/glesv2debugger/test/com/android/glesv2debugger/MessageQueueTest.java
deleted file mode 100644
index 5f8e93d..0000000
--- a/tools/glesv2debugger/test/com/android/glesv2debugger/MessageQueueTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- ** Copyright 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.android.glesv2debugger;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import com.android.glesv2debugger.DebuggerMessage.Message;
-import com.android.glesv2debugger.DebuggerMessage.Message.Function;
-import com.android.glesv2debugger.DebuggerMessage.Message.Type;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.ByteOrder;
-
-public class MessageQueueTest {
-    private MessageQueue queue;
-
-    /**
-     * @throws java.lang.Exception
-     */
-    @Before
-    public void setUp() throws Exception {
-        queue = new MessageQueue(null, new ProcessMessage[0]);
-    }
-
-    /**
-     * Test method for
-     * {@link com.android.glesv2debugger.MessageQueue#defaultProcessMessage(com.android.glesv2debugger.DebuggerMessage.Message, boolean, boolean)}
-     * .
-     * 
-     * @throws IOException
-     */
-    @Test
-    public void testDefaultProcessMessage() throws IOException {
-        final int contextId = 8784;
-        assertNull(queue.getPartialMessage(contextId));
-        Message.Builder builder = Message.newBuilder();
-        builder.setContextId(contextId);
-        builder.setExpectResponse(false);
-        builder.setFunction(Function.glFinish);
-        builder.setType(Type.BeforeCall);
-        Message msg = builder.build();
-        queue.defaultProcessMessage(msg, false, false);
-        assertNotNull(queue.getPartialMessage(contextId));
-
-        builder = msg.toBuilder();
-        builder.setType(Type.AfterCall);
-        builder.setTime(5);
-        msg = builder.build();
-        queue.defaultProcessMessage(msg, false, false);
-        assertNull(queue.getPartialMessage(contextId));
-        Message complete = queue.removeCompleteMessage(contextId);
-        assertNotNull(complete);
-        assertEquals(contextId, complete.getContextId());
-        assertEquals(msg.getFunction(), complete.getFunction());
-        assertEquals(msg.getTime(), complete.getTime(), 0);
-        assertEquals(Type.CompleteCall, complete.getType());
-
-        // an already complete message should just be added to complete queue
-        queue.defaultProcessMessage(complete, false, false);
-        assertNull(queue.getPartialMessage(contextId));
-        complete = queue.removeCompleteMessage(contextId);
-        assertNotNull(complete);
-        assertEquals(contextId, complete.getContextId());
-        assertEquals(msg.getFunction(), complete.getFunction());
-        assertEquals(msg.getTime(), complete.getTime(), 0);
-        assertEquals(Type.CompleteCall, complete.getType());
-    }
-
-    @Test
-    public void testCompletePartialMessage() throws IOException {
-        final int contextId = 8784;
-        assertNull(queue.getPartialMessage(contextId));
-        Message.Builder builder = Message.newBuilder();
-        builder.setContextId(contextId);
-        builder.setExpectResponse(false);
-        builder.setFunction(Function.glFinish);
-        builder.setType(Type.BeforeCall);
-        Message msg = builder.build();
-        queue.defaultProcessMessage(msg, false, false);
-        assertNotNull(queue.getPartialMessage(contextId));
-        queue.completePartialMessage(contextId);
-
-        final Message complete = queue.removeCompleteMessage(contextId);
-        assertNotNull(complete);
-        assertEquals(contextId, complete.getContextId());
-        assertEquals(msg.getFunction(), complete.getFunction());
-        assertEquals(msg.getTime(), complete.getTime(), 0);
-        assertEquals(Type.BeforeCall, complete.getType());
-    }
-
-    /** Write two messages from two contexts to file and test handling them */
-    @Test
-    public void testRunWithFile() throws FileNotFoundException, IOException, InterruptedException {
-        final File filePath = File.createTempFile("test", ".gles2dbg");
-        DataOutputStream file = new DataOutputStream(new FileOutputStream(filePath));
-        Message.Builder builder = Message.newBuilder();
-        final int contextId0 = 521643, contextId1 = 87634;
-        assertNull(queue.removeCompleteMessage(contextId0));
-        assertNull(queue.removeCompleteMessage(contextId1));
-
-        builder.setContextId(contextId0).setExpectResponse(false).setType(Type.BeforeCall);
-        builder.setFunction(Function.glClear).setArg0(contextId0);
-        Message msg0 = builder.build();
-        byte[] data = msg0.toByteArray();
-        file.writeInt(data.length);
-        file.write(data);
-
-        builder = Message.newBuilder();
-        builder.setContextId(contextId1).setExpectResponse(false).setType(Type.BeforeCall);
-        builder.setFunction(Function.glDisable).setArg0(contextId1);
-        Message msg1 = builder.build();
-        data = msg1.toByteArray();
-        file.writeInt(data.length);
-        file.write(data);
-
-        builder = Message.newBuilder();
-        msg0 = builder.setContextId(msg0.getContextId()).setExpectResponse(false)
-                .setType(Type.AfterCall).setFunction(msg0.getFunction()).setTime(2).build();
-        data = msg0.toByteArray();
-        file.writeInt(data.length);
-        file.write(data);
-
-        builder = Message.newBuilder();
-        msg1 = builder.setContextId(msg1.getContextId()).setExpectResponse(false)
-                .setType(Type.AfterCall).setFunction(msg1.getFunction()).setTime(465).build();
-        data = msg1.toByteArray();
-        file.writeInt(data.length);
-        file.write(data);
-
-        file.close();
-
-        FileInputStream fis = new FileInputStream(filePath);
-        // Java VM uses big endian, so the file was written in big endian
-        queue.start(ByteOrder.BIG_ENDIAN, fis);
-        queue.thread.join();
-
-        Message complete0 = queue.removeCompleteMessage(msg0.getContextId());
-        assertNotNull(complete0);
-        assertNull(queue.removeCompleteMessage(contextId0));
-        assertEquals(contextId0, complete0.getContextId());
-        assertEquals(false, complete0.getExpectResponse());
-        assertEquals(Type.CompleteCall, complete0.getType());
-        assertEquals(msg0.getFunction(), complete0.getFunction());
-        assertEquals(contextId0, complete0.getArg0());
-        assertEquals(msg0.getTime(), complete0.getTime(), 0);
-
-        Message complete1 = queue.removeCompleteMessage(msg1.getContextId());
-        assertNotNull(complete1);
-        assertNull(queue.removeCompleteMessage(contextId1));
-        assertEquals(contextId1, complete1.getContextId());
-        assertEquals(false, complete1.getExpectResponse());
-        assertEquals(Type.CompleteCall, complete1.getType());
-        assertEquals(msg1.getFunction(), complete1.getFunction());
-        assertEquals(contextId1, complete1.getArg0());
-        assertEquals(msg1.getTime(), complete1.getTime(), 0);
-
-        filePath.delete();
-    }
-}
diff --git a/tools/mkstubs/.classpath b/tools/mkstubs/.classpath
index 49a6d6c..1b7d34b 100644
--- a/tools/mkstubs/.classpath
+++ b/tools/mkstubs/.classpath
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="src" path="tests"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>

-	<classpathentry kind="var" path="ANDROID_SRC/prebuilt/common/asm/asm-3.1.jar"/>

-	<classpathentry kind="output" path="bin"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="tests"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="var" path="ANDROID_SRC/prebuilt/common/asm/asm-4.0.jar"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/tools/mkstubs/Android.mk b/tools/mkstubs/Android.mk
index a12bf18..3e46a1d 100644
--- a/tools/mkstubs/Android.mk
+++ b/tools/mkstubs/Android.mk
@@ -20,7 +20,7 @@
 
 LOCAL_JAR_MANIFEST := manifest.txt
 LOCAL_STATIC_JAVA_LIBRARIES := \
-	asm-3.1
+	asm-4.0
 
 LOCAL_MODULE := mkstubs
 
diff --git a/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java b/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java
index 6f570c7..e875f10 100644
--- a/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java
+++ b/tools/mkstubs/src/com/android/mkstubs/FilterClassAdapter.java
@@ -20,7 +20,6 @@
 
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
-import org.objectweb.asm.ClassAdapter;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.FieldVisitor;
 import org.objectweb.asm.MethodVisitor;
@@ -30,14 +29,14 @@
  * A class visitor that filters out all members (fields, methods and inner classes) that are
  * either private, default-access or rejected by the {@link Filter}.
  */
-class FilterClassAdapter extends ClassAdapter {
+class FilterClassAdapter extends ClassVisitor {
 
     private final Logger mLog;
     private final Filter mFilter;
     private String mClassName;
 
     public FilterClassAdapter(ClassVisitor writer, Filter filter, Logger log) {
-        super(writer);
+        super(Opcodes.ASM4, writer);
         mFilter = filter;
         mLog = log;
     }
diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java
index d2843a8..ea3ca67 100644
--- a/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java
+++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/AnnotationSourcer.java
@@ -17,11 +17,12 @@
 package com.android.mkstubs.sourcer;
 
 import org.objectweb.asm.AnnotationVisitor;
+import org.objectweb.asm.Opcodes;
 
 /**
  * An annotation visitor that generates Java source for an annotation.
  */
-class AnnotationSourcer implements AnnotationVisitor {
+class AnnotationSourcer extends AnnotationVisitor {
 
     private final String mOpenChar;
     private final String mCloseChar;
@@ -33,11 +34,13 @@
     }
 
     public AnnotationSourcer(Output output, boolean isArray) {
+        super(Opcodes.ASM4);
         mOutput = output;
         mOpenChar = isArray ? "[" : "(";
         mCloseChar = isArray ? "]" : ")";
     }
 
+    @Override
     public void visit(String name, Object value) {
         startOpen();
 
@@ -56,6 +59,7 @@
         }
     }
 
+    @Override
     public void visitEnd() {
         if (mNeedClose) {
             mOutput.write(mCloseChar);
@@ -63,18 +67,21 @@
         mOutput.write("\n");
     }
 
+    @Override
     public AnnotationVisitor visitAnnotation(String name, String desc) {
         startOpen();
-        
+
         mOutput.write("@%s", name);
         return this;
     }
 
+    @Override
     public AnnotationVisitor visitArray(String name) {
         startOpen();
         return new AnnotationSourcer(mOutput, true /*isArray*/);
     }
 
+    @Override
     public void visitEnum(String name, String desc, String value) {
         mOutput.write("/* annotation enum not supported: %s */\n", name);
     }
diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java
index 3d95039..c005b0c 100644
--- a/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java
+++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/ClassSourcer.java
@@ -27,23 +27,25 @@
 /**
  * A class visitor that writes a java source.
  */
-public class ClassSourcer implements ClassVisitor {
+public class ClassSourcer extends ClassVisitor {
 
     private final Output mOutput;
     private final AccessSourcer mAccessSourcer;
     private String mClassName;
 
     public ClassSourcer(Output output) {
+        super(Opcodes.ASM4);
         mOutput = output;
         mAccessSourcer = new AccessSourcer(mOutput);
     }
-    
+
     /* Examples:
      * name = com/foo/MyClass
      * signature = null (if not generic)
      * superName = java/lang/Object
      * interfaces = [ java/lang/Runnable ... ]
      */
+    @Override
     public void visit(int version, int access, String name, String signature,
             String superName, String[] interfaces) {
 
@@ -63,13 +65,13 @@
             SignatureReader sigReader = new SignatureReader(signature);
             SignatureSourcer sigSourcer = new SignatureSourcer();
             sigReader.accept(sigSourcer);
-            
+
             if (sigSourcer.hasFormalsContent()) {
                 mOutput.write(sigSourcer.formalsToString());
             }
 
             mOutput.write(" extends %s", sigSourcer.getSuperClass().toString());
-            
+
         } else {
             // write non-generic super type
             mOutput.write(" extends %s", superName.replace('/', '.'));
@@ -87,35 +89,40 @@
                 need_sep = true;
             }
         }
-        
+
         // open class body
         mOutput.write(" {\n");
     }
 
+    @Override
     public void visitEnd() {
         mOutput.write("}\n");
     }
 
+    @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         mOutput.write("@%s", desc);
         return new AnnotationSourcer(mOutput);
     }
 
+    @Override
     public void visitAttribute(Attribute attr) {
         mOutput.write("%s /* non-standard class attribute */ ", attr.type);
     }
 
 
+    @Override
     public FieldVisitor visitField(int access, String name, String desc, String signature,
             Object value) {
         // skip synthetic fields
         if ((access & Opcodes.ACC_SYNTHETIC) != 0) {
             return null;
         }
-        
+
         return new FieldSourcer(mOutput, access, name, desc, signature);
     }
 
+    @Override
     public MethodVisitor visitMethod(int access, String name, String desc, String signature,
             String[] exceptions) {
 
@@ -123,15 +130,18 @@
         return new MethodSourcer(mOutput, mClassName, access, name, desc, signature, exceptions);
     }
 
+    @Override
     public void visitInnerClass(String name, String outerName, String innerName, int access) {
         // Skip inner classes. This just indicates there's an inner class definition but
         // they are visited at the top level as separate classes.
     }
 
+    @Override
     public void visitOuterClass(String owner, String name, String desc) {
         // Skip outer classes.
     }
 
+    @Override
     public void visitSource(String source, String debug) {
         // Skip source information.
     }
diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java
index 7f30a24..68eae71 100644
--- a/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java
+++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/FieldSourcer.java
@@ -19,13 +19,14 @@
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
 import org.objectweb.asm.FieldVisitor;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 import org.objectweb.asm.signature.SignatureReader;
 
 /**
- * A field visitor that generates Java source defining a field. 
+ * A field visitor that generates Java source defining a field.
  */
-class FieldSourcer implements FieldVisitor {
+class FieldSourcer extends FieldVisitor {
 
     private final Output mOutput;
     private final int mAccess;
@@ -34,6 +35,7 @@
     private final String mSignature;
 
     public FieldSourcer(Output output, int access, String name, String desc, String signature) {
+        super(Opcodes.ASM4);
         mOutput = output;
         mAccess = access;
         mName = name;
@@ -41,21 +43,24 @@
         mSignature = signature;
     }
 
+    @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         mOutput.write("@%s", desc);
         return new AnnotationSourcer(mOutput);
     }
 
+    @Override
     public void visitAttribute(Attribute attr) {
         mOutput.write("%s /* non-standard attribute */ ", attr.type);
     }
 
+    @Override
     public void visitEnd() {
         // Need to write type and field name after the annotations and attributes.
 
         AccessSourcer as = new AccessSourcer(mOutput);
         as.write(mAccess, AccessSourcer.IS_FIELD);
-        
+
         if (mSignature == null) {
             mOutput.write(" %s", Type.getType(mDesc).getClassName());
         } else {
diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java
index f58de32..26e8870 100644
--- a/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java
+++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/MethodSourcer.java
@@ -20,15 +20,16 @@
 import org.objectweb.asm.Attribute;
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 import org.objectweb.asm.signature.SignatureReader;
 
 import java.util.ArrayList;
 
 /**
- * A method visitor that generates the Java source for a whole method. 
+ * A method visitor that generates the Java source for a whole method.
  */
-class MethodSourcer implements MethodVisitor {
+class MethodSourcer extends MethodVisitor {
 
     private final Output mOutput;
     private final int mAccess;
@@ -42,6 +43,7 @@
 
     public MethodSourcer(Output output, String className, int access, String name,
             String desc, String signature, String[] exceptions) {
+        super(Opcodes.ASM4);
         mOutput = output;
         mClassName = className;
         mAccess = access;
@@ -49,16 +51,16 @@
         mDesc = desc;
         mSignature = signature;
         mExceptions = exceptions;
-        
+
         mNeedDeclaration = true;
         mIsConstructor = "<init>".equals(name);
     }
-    
-    private void writeHeader() {        
+
+    private void writeHeader() {
         if (!mNeedDeclaration) {
             return;
         }
-        
+
         AccessSourcer as = new AccessSourcer(mOutput);
         as.write(mAccess, AccessSourcer.IS_METHOD);
 
@@ -68,19 +70,19 @@
             SignatureReader sigReader = new SignatureReader(mSignature);
             sigSourcer = new SignatureSourcer();
             sigReader.accept(sigSourcer);
-            
+
             if (sigSourcer.hasFormalsContent()) {
                 // dump formal template parameter definitions
                 mOutput.write(" %s", sigSourcer.formalsToString());
             }
         }
-        
+
         // output return type (constructor have no return type)
         if (!mIsConstructor) {
             // The signature overrides desc, if present
             if (sigSourcer == null || sigSourcer.getReturnType() == null) {
                 mOutput.write(" %s", Type.getReturnType(mDesc).getClassName());
-                
+
             } else {
                 mOutput.write(" %s", sigSourcer.getReturnType().toString());
             }
@@ -88,11 +90,11 @@
 
         // output name
         mOutput.write(" %s(", mIsConstructor ? mClassName : mName);
-            
+
         // output arguments. The signature overrides desc, if present
         if (mSignature == null) {
             Type[] types = Type.getArgumentTypes(mDesc);
-            
+
             for(int i = 0; i < types.length; i++) {
                 if (i > 0) {
                     mOutput.write(", ");
@@ -101,7 +103,7 @@
             }
         } else {
             ArrayList<SignatureSourcer> params = sigSourcer.getParameters();
-            
+
             for(int i = 0; i < params.size(); i++) {
                 if (i > 0) {
                     mOutput.write(", ");
@@ -114,7 +116,7 @@
         // output throwable exceptions
         if (mExceptions != null && mExceptions.length > 0) {
             mOutput.write(" throws ");
-            
+
             for (int i = 0; i < mExceptions.length; i++) {
                 if (i > 0) {
                     mOutput.write(", ");
@@ -128,106 +130,130 @@
         mNeedDeclaration = false;
     }
 
+    @Override
     public void visitCode() {
         writeHeader();
-        
+
         // write the stub itself
         mOutput.write("throw new RuntimeException(\"Stub\");");
     }
 
+    @Override
     public void visitEnd() {
         writeHeader();
         mOutput.write("\n}\n");
     }
 
+    @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         mOutput.write("@%s", desc);
         return new AnnotationSourcer(mOutput);
     }
 
+    @Override
     public AnnotationVisitor visitAnnotationDefault() {
         // pass
         return null;
     }
 
+    @Override
     public void visitAttribute(Attribute attr) {
         mOutput.write("%s /* non-standard method attribute */ ", attr.type);
     }
 
+    @Override
     public void visitFieldInsn(int opcode, String owner, String name, String desc) {
         // pass
     }
 
+    @Override
     public void visitFrame(int type, int local, Object[] local2, int stack, Object[] stack2) {
         // pass
     }
 
+    @Override
     public void visitIincInsn(int var, int increment) {
         // pass
     }
 
+    @Override
     public void visitInsn(int opcode) {
         // pass
     }
 
+    @Override
     public void visitIntInsn(int opcode, int operand) {
         // pass
     }
 
+    @Override
     public void visitJumpInsn(int opcode, Label label) {
         // pass
     }
 
+    @Override
     public void visitLabel(Label label) {
         // pass
     }
 
+    @Override
     public void visitLdcInsn(Object cst) {
         // pass
     }
 
+    @Override
     public void visitLineNumber(int line, Label start) {
         // pass
     }
 
+    @Override
     public void visitLocalVariable(String name, String desc, String signature,
             Label start, Label end, int index) {
         // pass
     }
 
+    @Override
     public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) {
         // pass
     }
 
+    @Override
     public void visitMaxs(int maxStack, int maxLocals) {
         // pass
     }
 
+    @Override
     public void visitMethodInsn(int opcode, String owner, String name, String desc) {
         // pass
     }
 
+    @Override
     public void visitMultiANewArrayInsn(String desc, int dims) {
         // pass
     }
 
+    @Override
     public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) {
         // pass
         return null;
     }
 
+    @Override
     public void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels) {
         // pass
     }
 
+    @Override
     public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
         // pass
     }
 
+    @Override
     public void visitTypeInsn(int opcode, String type) {
         // pass
     }
 
+    @Override
     public void visitVarInsn(int opcode, int var) {
         // pass
     }
diff --git a/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java b/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java
index 7805d7d..ab90945 100644
--- a/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java
+++ b/tools/mkstubs/src/com/android/mkstubs/sourcer/SignatureSourcer.java
@@ -16,6 +16,7 @@
 
 package com.android.mkstubs.sourcer;
 
+import org.objectweb.asm.Opcodes;
 import org.objectweb.asm.Type;
 import org.objectweb.asm.signature.SignatureReader;
 import org.objectweb.asm.signature.SignatureVisitor;
@@ -36,12 +37,12 @@
  * <p/>
  * Note: When processing a method's signature, the signature order is the reverse of the source
  * order, e.g. the signature is written as "(parameters)return-type" where we want to generate
- * "return-type method-name (parameters)". To hanlde this case, the return-type and parameters
+ * "return-type method-name (parameters)". To handle this case, the return-type and parameters
  * are <em>not</em> output directly but are instead accumulated in internal variables that you can
  * get later using {@link #getReturnType()}, {@link #getParameters()}, {@link #getSuperClass()}
  * and {@link #formalsToString()}.
  */
-class SignatureSourcer implements SignatureVisitor {
+class SignatureSourcer extends SignatureVisitor {
 
     /**
      * Buffer used to construct the signature.
@@ -85,13 +86,14 @@
     private ArrayList<SignatureSourcer> mParameters = new ArrayList<SignatureSourcer>();
 
 
-    
+
     /**
      * Constructs a new {@link SignatureWriter} object.
      */
     public SignatureSourcer() {
+        super(Opcodes.ASM4);
     }
-    
+
     private StringBuilder getBuf() {
         if (mWritingFormals) {
             return mFormalsBuf;
@@ -117,7 +119,7 @@
     public SignatureSourcer getReturnType() {
         return mReturnType;
     }
-    
+
     /**
      * Will be non-empty if a parameters were processed
      * by {@link SignatureReader#accept(SignatureVisitor)}
@@ -125,19 +127,19 @@
     public ArrayList<SignatureSourcer> getParameters() {
         return mParameters;
     }
-    
+
     /**
-     * True if the signature contains formal type parameters, which are available 
+     * True if the signature contains formal type parameters, which are available
      * via {@link #formalsToString()} after calling {@link SignatureReader#accept(SignatureVisitor)}
      */
     public boolean hasFormalsContent() {
         return mFormalsBuf.length() > 0;
     }
-    
+
     public String formalsToString() {
         return mFormalsBuf.toString();
     }
-    
+
     /**
      * Will be non-null if a super class was processed
      * by {@link SignatureReader#accept(SignatureVisitor)}
@@ -150,6 +152,7 @@
     // Implementation of the SignatureVisitor interface
     // ------------------------------------------------------------------------
 
+    @Override
     public void visitFormalTypeParameter(final String name) {
         if (!mWritingFormals) {
             mWritingFormals = true;
@@ -161,16 +164,19 @@
         getBuf().append(" extends ");
     }
 
+    @Override
     public SignatureVisitor visitClassBound() {
-        // we don't differentiate between visiting a sub class or interface type 
+        // we don't differentiate between visiting a sub class or interface type
         return this;
     }
 
+    @Override
     public SignatureVisitor visitInterfaceBound() {
-        // we don't differentiate between visiting a sub class or interface type 
+        // we don't differentiate between visiting a sub class or interface type
         return this;
     }
 
+    @Override
     public SignatureVisitor visitSuperclass() {
         endFormals();
         SignatureSourcer sourcer = new SignatureSourcer();
@@ -179,10 +185,12 @@
         return sourcer;
     }
 
+    @Override
     public SignatureVisitor visitInterface() {
         return this;
     }
 
+    @Override
     public SignatureVisitor visitParameterType() {
         endFormals();
         SignatureSourcer sourcer = new SignatureSourcer();
@@ -190,6 +198,7 @@
         return sourcer;
     }
 
+    @Override
     public SignatureVisitor visitReturnType() {
         endFormals();
         SignatureSourcer sourcer = new SignatureSourcer();
@@ -198,29 +207,35 @@
         return sourcer;
     }
 
+    @Override
     public SignatureVisitor visitExceptionType() {
         getBuf().append('^');
         return this;
     }
 
+    @Override
     public void visitBaseType(final char descriptor) {
         getBuf().append(Type.getType(Character.toString(descriptor)).getClassName());
     }
 
+    @Override
     public void visitTypeVariable(final String name) {
         getBuf().append(name.replace('/', '.'));
     }
 
+    @Override
     public SignatureVisitor visitArrayType() {
         getBuf().append('[');
         return this;
     }
 
+    @Override
     public void visitClassType(final String name) {
         getBuf().append(name.replace('/', '.'));
         mArgumentStack *= 2;
     }
 
+    @Override
     public void visitInnerClassType(final String name) {
         endArguments();
         getBuf().append('.');
@@ -228,6 +243,7 @@
         mArgumentStack *= 2;
     }
 
+    @Override
     public void visitTypeArgument() {
         if (mArgumentStack % 2 == 0) {
             ++mArgumentStack;
@@ -238,6 +254,7 @@
         getBuf().append('*');
     }
 
+    @Override
     public SignatureVisitor visitTypeArgument(final char wildcard) {
         if (mArgumentStack % 2 == 0) {
             ++mArgumentStack;
@@ -258,6 +275,7 @@
         return this;
     }
 
+    @Override
     public void visitEnd() {
         endArguments();
     }
diff --git a/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java b/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java
index 8f9ae11..f66c7a7 100644
--- a/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java
+++ b/tools/mkstubs/src/com/android/mkstubs/stubber/ClassStubber.java
@@ -18,19 +18,19 @@
 
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
-import org.objectweb.asm.ClassAdapter;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.FieldVisitor;
 import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
 
 /**
  * A class visitor that generates stubs for all methods of the visited class.
  * Everything else is passed as-is.
  */
-public class ClassStubber extends ClassAdapter {
+public class ClassStubber extends ClassVisitor {
 
     public ClassStubber(ClassVisitor cv) {
-        super(cv);
+        super(Opcodes.ASM4, cv);
     }
 
     @Override
@@ -41,45 +41,45 @@
             String[] interfaces) {
         super.visit(version, access, name, signature, superName, interfaces);
     }
-    
+
     @Override
     public void visitEnd() {
         super.visitEnd();
     }
-    
+
     @Override
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         return super.visitAnnotation(desc, visible);
     }
-    
+
     @Override
     public void visitAttribute(Attribute attr) {
         super.visitAttribute(attr);
     }
-    
+
     @Override
     public MethodVisitor visitMethod(int access, String name, String desc, String signature,
             String[] exceptions) {
         MethodVisitor mw = super.visitMethod(access, name, desc, signature, exceptions);
         return new MethodStubber(mw, access, name, desc, signature, exceptions);
     }
-    
+
     @Override
     public FieldVisitor visitField(int access, String name, String desc, String signature,
             Object value) {
         return super.visitField(access, name, desc, signature, value);
     }
-    
+
     @Override
     public void visitInnerClass(String name, String outerName, String innerName, int access) {
         super.visitInnerClass(name, outerName, innerName, access);
     }
-    
+
     @Override
     public void visitOuterClass(String owner, String name, String desc) {
         super.visitOuterClass(owner, name, desc);
     }
-    
+
     @Override
     public void visitSource(String source, String debug) {
         super.visitSource(source, debug);
diff --git a/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java b/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java
index 1617809..89aa221 100644
--- a/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java
+++ b/tools/mkstubs/src/com/android/mkstubs/stubber/MethodStubber.java
@@ -19,7 +19,6 @@
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
 import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodAdapter;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
 
@@ -32,13 +31,13 @@
  * Note that constructors rewritten this way will probably fail with the runtime bytecode
  * verifier since no call to <code>super</code> is generated.
  */
-public class MethodStubber extends MethodAdapter {
+public class MethodStubber extends MethodVisitor {
 
     public MethodStubber(MethodVisitor mw,
             int access, String name, String desc, String signature, String[] exceptions) {
-        super(mw);
+        super(Opcodes.ASM4, mw);
     }
-    
+
     @Override
     public void visitCode() {
         Label l0 = new Label();
@@ -64,7 +63,7 @@
                 0);                                             // index
         mv.visitMaxs(3, 1); // maxStack, maxLocals
     }
-    
+
     @Override
     public void visitEnd() {
         super.visitEnd();
@@ -74,110 +73,110 @@
     public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
         return super.visitAnnotation(desc, visible);
     }
-    
+
     @Override
     public AnnotationVisitor visitAnnotationDefault() {
         return super.visitAnnotationDefault();
     }
- 
+
     @Override
     public void visitAttribute(Attribute attr) {
         super.visitAttribute(attr);
     }
-    
+
     @Override
     public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) {
         return super.visitParameterAnnotation(parameter, desc, visible);
     }
 
     // -- stuff that gets skipped
-    
+
     @Override
     public void visitFieldInsn(int opcode, String owner, String name, String desc) {
         // skip
     }
-    
+
     @Override
     public void visitFrame(int type, int local, Object[] local2, int stack, Object[] stack2) {
         // skip
     }
-    
+
     @Override
     public void visitIincInsn(int var, int increment) {
         // skip
     }
-    
+
     @Override
     public void visitInsn(int opcode) {
         // skip
     }
-    
+
     @Override
     public void visitIntInsn(int opcode, int operand) {
         // skip
     }
-    
+
     @Override
     public void visitJumpInsn(int opcode, Label label) {
         // skip
     }
-    
+
     @Override
     public void visitLabel(Label label) {
         // skip
     }
-    
+
     @Override
     public void visitLdcInsn(Object cst) {
         // skip
     }
-    
+
     @Override
     public void visitLineNumber(int line, Label start) {
         // skip
     }
-    
+
     @Override
     public void visitLocalVariable(String name, String desc, String signature,
             Label start, Label end, int index) {
         // skip
     }
-    
+
     @Override
     public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) {
         // skip
     }
-    
+
     @Override
     public void visitMaxs(int maxStack, int maxLocals) {
         // skip
     }
-    
+
     @Override
     public void visitMethodInsn(int opcode, String owner, String name, String desc) {
         // skip
     }
-    
+
     @Override
     public void visitMultiANewArrayInsn(String desc, int dims) {
         // skip
     }
-    
+
     @Override
     public void visitTableSwitchInsn(int min, int max, Label dflt, Label[] labels) {
         // skip
     }
-    
+
     @Override
     public void visitTryCatchBlock(Label start, Label end, Label handler, String type) {
         // skip
     }
-    
+
     @Override
     public void visitTypeInsn(int opcode, String type) {
         // skip
     }
-    
+
     @Override
     public void visitVarInsn(int opcode, int var) {
         // skip
diff --git a/tools/templates/ic_launcher_hdpi.png b/tools/templates/ic_launcher_hdpi.png
index 8074c4c..96a442e 100644
--- a/tools/templates/ic_launcher_hdpi.png
+++ b/tools/templates/ic_launcher_hdpi.png
Binary files differ
diff --git a/tools/templates/ic_launcher_ldpi.png b/tools/templates/ic_launcher_ldpi.png
index 1095584..9923872 100644
--- a/tools/templates/ic_launcher_ldpi.png
+++ b/tools/templates/ic_launcher_ldpi.png
Binary files differ
diff --git a/tools/templates/ic_launcher_mdpi.png b/tools/templates/ic_launcher_mdpi.png
index a07c69f..359047d 100644
--- a/tools/templates/ic_launcher_mdpi.png
+++ b/tools/templates/ic_launcher_mdpi.png
Binary files differ
diff --git a/tools/templates/ic_launcher_xhdpi.png b/tools/templates/ic_launcher_xhdpi.png
new file mode 100644
index 0000000..71c6d76
--- /dev/null
+++ b/tools/templates/ic_launcher_xhdpi.png
Binary files differ