Merge change 22995 into eclair

* changes:
  	modified:   res/layout/surface_view.xml 	modified:   src/com/android/mediaframeworktest/MediaFrameworkTest.java 	modified:   src/com/android/mediaframeworktest/functional/MediaPlayerApiTest.java         Fixed the async mp3 playback test case and also switch the base activity to full screen.
diff --git a/Android.mk b/Android.mk
index 3653c7b..97f012c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -147,6 +147,7 @@
 	location/java/android/location/ILocationListener.aidl \
 	location/java/android/location/ILocationManager.aidl \
 	location/java/android/location/ILocationProvider.aidl \
+	location/java/android/location/INetInitiatedListener.aidl \
 	media/java/android/media/IAudioService.aidl \
 	media/java/android/media/IMediaScannerListener.aidl \
 	media/java/android/media/IMediaScannerService.aidl \
@@ -357,6 +358,8 @@
 		            guide/samples/LunarLander "Lunar Lander" \
 		-samplecode $(sample_dir)/NotePad \
 		            guide/samples/NotePad "Note Pad" \
+		-samplecode $(sample_dir)/SearchableDictionary \
+		            guide/samples/SearchableDictionary "Searchable Dictionary" \
 		-samplecode $(sample_dir)/Snake \
 		            guide/samples/Snake "Snake" \
 		-samplecode $(sample_dir)/SoftKeyboard \
diff --git a/api/4.xml b/api/4.xml
index cac3ae8..49f5271 100644
--- a/api/4.xml
+++ b/api/4.xml
@@ -298,6 +298,17 @@
  visibility="public"
 >
 </field>
+<field name="CHANGE_WIFI_MULTICAST_STATE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.permission.CHANGE_WIFI_MULTICAST_STATE&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="CHANGE_WIFI_STATE"
  type="java.lang.String"
  transient="false"
@@ -485,6 +496,17 @@
  visibility="public"
 >
 </field>
+<field name="GLOBAL_SEARCH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.permission.GLOBAL_SEARCH&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="HARDWARE_TEST"
  type="java.lang.String"
  transient="false"
@@ -507,6 +529,17 @@
  visibility="public"
 >
 </field>
+<field name="INSTALL_LOCATION_PROVIDER"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.permission.INSTALL_LOCATION_PROVIDER&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="INSTALL_PACKAGES"
  type="java.lang.String"
  transient="false"
@@ -661,6 +694,17 @@
  visibility="public"
 >
 </field>
+<field name="READ_HISTORY_BOOKMARKS"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;com.android.browser.permission.READ_HISTORY_BOOKMARKS&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="READ_INPUT_STATE"
  type="java.lang.String"
  transient="false"
@@ -1068,6 +1112,17 @@
  visibility="public"
 >
 </field>
+<field name="WRITE_EXTERNAL_STORAGE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="WRITE_GSERVICES"
  type="java.lang.String"
  transient="false"
@@ -1079,6 +1134,17 @@
  visibility="public"
 >
 </field>
+<field name="WRITE_HISTORY_BOOKMARKS"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;com.android.browser.permission.WRITE_HISTORY_BOOKMARKS&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="WRITE_OWNER_DATA"
  type="java.lang.String"
  transient="false"
@@ -1250,6 +1316,17 @@
  visibility="public"
 >
 </field>
+<field name="STORAGE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.permission-group.STORAGE&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SYSTEM_TOOLS"
  type="java.lang.String"
  transient="false"
@@ -1317,6 +1394,39 @@
  visibility="public"
 >
 </field>
+<field name="anticipate_interpolator"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17432583"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="anticipate_overshoot_interpolator"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17432585"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="bounce_interpolator"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17432586"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="decelerate_interpolator"
  type="int"
  transient="false"
@@ -1350,6 +1460,28 @@
  visibility="public"
 >
 </field>
+<field name="linear_interpolator"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17432587"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="overshoot_interpolator"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17432584"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="slide_in_left"
  type="int"
  transient="false"
@@ -1560,6 +1692,17 @@
  visibility="public"
 >
 </field>
+<field name="allowBackup"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843392"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="allowClearUserData"
  type="int"
  transient="false"
@@ -1703,6 +1846,17 @@
  visibility="public"
 >
 </field>
+<field name="anyDensity"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843372"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="apiKey"
  type="int"
  transient="false"
@@ -1758,6 +1912,17 @@
  visibility="public"
 >
 </field>
+<field name="autoUrlDetect"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843404"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="background"
  type="int"
  transient="false"
@@ -1791,6 +1956,17 @@
  visibility="public"
 >
 </field>
+<field name="backupAgent"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843391"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="baselineAlignBottom"
  type="int"
  transient="false"
@@ -2418,6 +2594,17 @@
  visibility="public"
 >
 </field>
+<field name="contentDescription"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843379"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="cropToPadding"
  type="int"
  transient="false"
@@ -2803,6 +2990,17 @@
  visibility="public"
 >
 </field>
+<field name="dropDownHeight"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843395"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="dropDownHintAppearance"
  type="int"
  transient="false"
@@ -3001,6 +3199,17 @@
  visibility="public"
 >
 </field>
+<field name="eventsInterceptionEnabled"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843389"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="excludeFromRecents"
  type="int"
  transient="false"
@@ -3100,6 +3309,17 @@
  visibility="public"
 >
 </field>
+<field name="extraTension"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843371"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="factor"
  type="int"
  transient="false"
@@ -3111,6 +3331,39 @@
  visibility="public"
 >
 </field>
+<field name="fadeDuration"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843384"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="fadeEnabled"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843390"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="fadeOffset"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843383"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="fadingEdge"
  type="int"
  transient="false"
@@ -3430,6 +3683,83 @@
  visibility="public"
 >
 </field>
+<field name="gestureColor"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843381"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="gestureStrokeAngleThreshold"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843388"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="gestureStrokeLengthThreshold"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843386"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="gestureStrokeSquarenessThreshold"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843387"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="gestureStrokeType"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843385"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="gestureStrokeWidth"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843380"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="glEsVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843393"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="gradientRadius"
  type="int"
  transient="false"
@@ -4299,6 +4629,17 @@
  visibility="public"
 >
 </field>
+<field name="largeScreens"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843398"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="launchMode"
  type="int"
  transient="false"
@@ -4948,6 +5289,17 @@
  visibility="public"
 >
 </field>
+<field name="maxSdkVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843377"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="maxWidth"
  type="int"
  transient="false"
@@ -5168,6 +5520,17 @@
  visibility="public"
 >
 </field>
+<field name="normalScreens"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843397"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="numColumns"
  type="int"
  transient="false"
@@ -5212,6 +5575,17 @@
  visibility="public"
 >
 </field>
+<field name="onClick"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843375"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="oneshot"
  type="int"
  transient="false"
@@ -5707,6 +6081,17 @@
  visibility="public"
 >
 </field>
+<field name="progressBarStyleInverse"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843399"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="progressBarStyleLarge"
  type="int"
  transient="false"
@@ -5718,6 +6103,17 @@
  visibility="public"
 >
 </field>
+<field name="progressBarStyleLargeInverse"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843401"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="progressBarStyleSmall"
  type="int"
  transient="false"
@@ -5729,6 +6125,17 @@
  visibility="public"
 >
 </field>
+<field name="progressBarStyleSmallInverse"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843400"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="progressBarStyleSmallTitle"
  type="int"
  transient="false"
@@ -5938,6 +6345,17 @@
  visibility="public"
 >
 </field>
+<field name="resizeable"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843405"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="resource"
  type="int"
  transient="false"
@@ -6521,6 +6939,17 @@
  visibility="public"
 >
 </field>
+<field name="smallScreens"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843396"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="smoothScrollbar"
  type="int"
  transient="false"
@@ -7005,6 +7434,17 @@
  visibility="public"
 >
 </field>
+<field name="targetSdkVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843376"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="taskAffinity"
  type="int"
  transient="false"
@@ -7104,6 +7544,28 @@
  visibility="public"
 >
 </field>
+<field name="tension"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843370"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="testOnly"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843378"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="text"
  type="int"
  transient="false"
@@ -7324,6 +7786,17 @@
  visibility="public"
 >
 </field>
+<field name="textColorPrimaryInverseDisableOnly"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843403"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="textColorPrimaryInverseNoDisable"
  type="int"
  transient="false"
@@ -7753,6 +8226,17 @@
  visibility="public"
 >
 </field>
+<field name="uncertainGestureColor"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843382"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="unselectedAlpha"
  type="int"
  transient="false"
@@ -10153,6 +10637,28 @@
  visibility="public"
 >
 </field>
+<field name="stat_sys_vp_phone_call"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17301671"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="stat_sys_vp_phone_call_on_hold"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="17301672"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="stat_sys_warning"
  type="int"
  transient="false"
@@ -12263,6 +12769,17 @@
  visibility="public"
 >
 </field>
+<field name="Widget_ProgressBar_Inverse"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16973915"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="Widget_ProgressBar_Large"
  type="int"
  transient="false"
@@ -12274,6 +12791,17 @@
  visibility="public"
 >
 </field>
+<field name="Widget_ProgressBar_Large_Inverse"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16973916"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="Widget_ProgressBar_Small"
  type="int"
  transient="false"
@@ -12285,6 +12813,17 @@
  visibility="public"
 >
 </field>
+<field name="Widget_ProgressBar_Small_Inverse"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16973917"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="Widget_RatingBar"
  type="int"
  transient="false"
@@ -12403,6 +12942,270 @@
 </constructor>
 </class>
 </package>
+<package name="android.accessibilityservice"
+>
+<class name="AccessibilityService"
+ extends="android.app.Service"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="AccessibilityService"
+ type="android.accessibilityservice.AccessibilityService"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="onAccessibilityEvent"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
+<method name="onBind"
+ return="android.os.IBinder"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="intent" type="android.content.Intent">
+</parameter>
+</method>
+<method name="onInterrupt"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="onServiceConnected"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+</method>
+<method name="setServiceInfo"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="info" type="android.accessibilityservice.AccessibilityServiceInfo">
+</parameter>
+</method>
+<field name="SERVICE_INTERFACE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.accessibilityservice.AccessibilityService&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="AccessibilityServiceInfo"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<constructor name="AccessibilityServiceInfo"
+ type="android.accessibilityservice.AccessibilityServiceInfo"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DEFAULT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FEEDBACK_AUDIBLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FEEDBACK_GENERIC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FEEDBACK_HAPTIC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FEEDBACK_SPOKEN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FEEDBACK_VISUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="eventTypes"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="feedbackType"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="flags"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="notificationTimeout"
+ type="long"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="packageNames"
+ type="java.lang.String[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+</package>
 <package name="android.app"
 >
 <class name="Activity"
@@ -12511,6 +13314,19 @@
 <parameter name="event" type="android.view.KeyEvent">
 </parameter>
 </method>
+<method name="dispatchPopulateAccessibilityEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
 <method name="dispatchTouchEvent"
  return="boolean"
  abstract="false"
@@ -16506,6 +17322,19 @@
 <parameter name="event" type="android.view.KeyEvent">
 </parameter>
 </method>
+<method name="dispatchPopulateAccessibilityEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
 <method name="dispatchTouchEvent"
  return="boolean"
  abstract="false"
@@ -18663,6 +19492,19 @@
 <parameter name="position" type="int">
 </parameter>
 </method>
+<method name="itemForPosition"
+ return="android.app.LauncherActivity.ListItem"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="position" type="int">
+</parameter>
+</method>
 <method name="makeListItems"
  return="java.util.List&lt;android.app.LauncherActivity.ListItem&gt;"
  abstract="false"
@@ -18771,6 +19613,16 @@
  visibility="public"
 >
 </field>
+<field name="resolveInfo"
+ type="android.content.pm.ResolveInfo"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </class>
 <class name="ListActivity"
  extends="android.app.Activity"
@@ -19545,6 +20397,17 @@
 <parameter name="flags" type="int">
 </parameter>
 </method>
+<method name="getIntentSender"
+ return="android.content.IntentSender"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getService"
  return="android.app.PendingIntent"
  abstract="false"
@@ -20152,7 +21015,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="dialog" type="android.content.DialogInterface">
@@ -20165,7 +21028,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="dialog" type="android.content.DialogInterface">
@@ -20262,6 +21125,39 @@
  visibility="public"
 >
 </field>
+<field name="EXTRA_DATA_KEY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;intent_extra_data_key&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="INTENT_ACTION_SEARCHABLES_CHANGED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.search.action.SEARCHABLES_CHANGED&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="INTENT_ACTION_SEARCH_SETTINGS_CHANGED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.search.action.SETTINGS_CHANGED&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="MENU_KEY"
  type="char"
  transient="false"
@@ -20361,6 +21257,17 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_COLUMN_INTENT_EXTRA_DATA"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;suggest_intent_extra_data&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_COLUMN_QUERY"
  type="java.lang.String"
  transient="false"
@@ -20416,6 +21323,17 @@
  visibility="public"
 >
 </field>
+<field name="USER_QUERY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;user_query&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </class>
 <interface name="SearchManager.OnCancelListener"
  abstract="true"
@@ -22192,6 +23110,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<implements name="java.lang.Comparable">
+</implements>
 <implements name="android.os.Parcelable">
 </implements>
 <constructor name="ComponentName"
@@ -22240,6 +23160,19 @@
 <parameter name="in" type="android.os.Parcel">
 </parameter>
 </constructor>
+<method name="compareTo"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="that" type="android.content.ComponentName">
+</parameter>
+</method>
 <method name="describeContents"
  return="int"
  abstract="false"
@@ -22460,6 +23393,17 @@
  visibility="public"
 >
 </method>
+<method name="getPathPermissions"
+ return="android.content.pm.PathPermission[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getReadPermission"
  return="java.lang.String"
  abstract="false"
@@ -22628,6 +23572,19 @@
 <parameter name="sortOrder" type="java.lang.String">
 </parameter>
 </method>
+<method name="setPathPermissions"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+<parameter name="permissions" type="android.content.pm.PathPermission[]">
+</parameter>
+</method>
 <method name="setReadPermission"
  return="void"
  abstract="false"
@@ -24044,6 +25001,17 @@
  visibility="public"
 >
 </method>
+<method name="getApplicationInfo"
+ return="android.content.pm.ApplicationInfo"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getAssets"
  return="android.content.res.AssetManager"
  abstract="true"
@@ -24314,6 +25282,17 @@
 <parameter name="modeFlags" type="int">
 </parameter>
 </method>
+<method name="isRestricted"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="obtainStyledAttributes"
  return="android.content.res.TypedArray"
  abstract="false"
@@ -24706,6 +25685,17 @@
 <parameter name="receiver" type="android.content.BroadcastReceiver">
 </parameter>
 </method>
+<field name="ACCESSIBILITY_SERVICE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;accessibility&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ACTIVITY_SERVICE"
  type="java.lang.String"
  transient="false"
@@ -24805,6 +25795,17 @@
  visibility="public"
 >
 </field>
+<field name="CONTEXT_RESTRICTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="INPUT_METHOD_SERVICE"
  type="java.lang.String"
  transient="false"
@@ -25374,6 +26375,17 @@
  visibility="public"
 >
 </method>
+<method name="getApplicationInfo"
+ return="android.content.pm.ApplicationInfo"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getAssets"
  return="android.content.res.AssetManager"
  abstract="false"
@@ -26658,7 +27670,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="uri" type="java.lang.String">
@@ -26709,6 +27721,17 @@
 <parameter name="defaultValue" type="long">
 </parameter>
 </method>
+<method name="getPackage"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getParcelableArrayExtra"
  return="android.os.Parcelable[]"
  abstract="false"
@@ -26908,6 +27931,23 @@
 <exception name="XmlPullParserException" type="org.xmlpull.v1.XmlPullParserException">
 </exception>
 </method>
+<method name="parseUri"
+ return="android.content.Intent"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uri" type="java.lang.String">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+<exception name="URISyntaxException" type="java.net.URISyntaxException">
+</exception>
+</method>
 <method name="putExtra"
  return="android.content.Intent"
  abstract="false"
@@ -27581,6 +28621,19 @@
 <parameter name="flags" type="int">
 </parameter>
 </method>
+<method name="setPackage"
+ return="android.content.Intent"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="packageName" type="java.lang.String">
+</parameter>
+</method>
 <method name="setType"
  return="android.content.Intent"
  abstract="false"
@@ -27601,9 +28654,22 @@
  synchronized="false"
  static="false"
  final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+</method>
+<method name="toUri"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="flags" type="int">
+</parameter>
 </method>
 <method name="writeToParcel"
  return="void"
@@ -27686,6 +28752,17 @@
  visibility="public"
 >
 </field>
+<field name="ACTION_BATTERY_OKAY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.intent.action.BATTERY_OKAY&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ACTION_BOOT_COMPLETED"
  type="java.lang.String"
  transient="false"
@@ -28225,6 +29302,39 @@
  visibility="public"
 >
 </field>
+<field name="ACTION_POWER_CONNECTED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.intent.action.ACTION_POWER_CONNECTED&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_POWER_DISCONNECTED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.intent.action.ACTION_POWER_DISCONNECTED&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_POWER_USAGE_SUMMARY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.intent.action.POWER_USAGE_SUMMARY&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ACTION_PROVIDER_CHANGED"
  type="java.lang.String"
  transient="false"
@@ -28324,6 +29434,17 @@
  visibility="public"
 >
 </field>
+<field name="ACTION_SEND_MULTIPLE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.intent.action.SEND_MULTIPLE&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ACTION_SET_WALLPAPER"
  type="java.lang.String"
  transient="false"
@@ -28335,6 +29456,17 @@
  visibility="public"
 >
 </field>
+<field name="ACTION_SHUTDOWN"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.intent.action.ACTION_SHUTDOWN&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ACTION_SYNC"
  type="java.lang.String"
  transient="false"
@@ -28939,6 +30071,17 @@
  visibility="public"
 >
 </field>
+<field name="FILL_IN_PACKAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FLAG_ACTIVITY_BROUGHT_TO_FRONT"
  type="int"
  transient="false"
@@ -29148,6 +30291,17 @@
  visibility="public"
 >
 </field>
+<field name="URI_INTENT_SCHEME"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </class>
 <class name="Intent.FilterComparison"
  extends="java.lang.Object"
@@ -30162,6 +31316,170 @@
 </parameter>
 </constructor>
 </class>
+<class name="IntentSender"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="readIntentSenderOrNullFromParcel"
+ return="android.content.IntentSender"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="in" type="android.os.Parcel">
+</parameter>
+</method>
+<method name="sendIntent"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="code" type="int">
+</parameter>
+<parameter name="intent" type="android.content.Intent">
+</parameter>
+<parameter name="onFinished" type="android.content.IntentSender.OnFinished">
+</parameter>
+<parameter name="handler" type="android.os.Handler">
+</parameter>
+<exception name="IntentSender.SendIntentException" type="android.content.IntentSender.SendIntentException">
+</exception>
+</method>
+<method name="writeIntentSenderOrNullToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sender" type="android.content.IntentSender">
+</parameter>
+<parameter name="out" type="android.os.Parcel">
+</parameter>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="out" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<interface name="IntentSender.OnFinished"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onSendFinished"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="IntentSender" type="android.content.IntentSender">
+</parameter>
+<parameter name="intent" type="android.content.Intent">
+</parameter>
+<parameter name="resultCode" type="int">
+</parameter>
+<parameter name="resultData" type="java.lang.String">
+</parameter>
+<parameter name="resultExtras" type="android.os.Bundle">
+</parameter>
+</method>
+</interface>
+<class name="IntentSender.SendIntentException"
+ extends="android.util.AndroidException"
+ abstract="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="IntentSender.SendIntentException"
+ type="android.content.IntentSender.SendIntentException"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="IntentSender.SendIntentException"
+ type="android.content.IntentSender.SendIntentException"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</constructor>
+<constructor name="IntentSender.SendIntentException"
+ type="android.content.IntentSender.SendIntentException"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cause" type="java.lang.Exception">
+</parameter>
+</constructor>
+</class>
 <class name="MutableContextWrapper"
  extends="android.content.ContextWrapper"
  abstract="false"
@@ -30900,6 +32218,17 @@
  visibility="public"
 >
 </field>
+<field name="CONFIG_SCREEN_LAYOUT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="256"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="CONFIG_TOUCHSCREEN"
  type="int"
  transient="false"
@@ -31364,6 +32693,61 @@
  visibility="public"
 >
 </field>
+<field name="FLAG_RESIZEABLE_FOR_SCREENS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4096"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_SUPPORTS_LARGE_SCREENS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2048"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_SUPPORTS_NORMAL_SCREENS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_SUPPORTS_SCREEN_DENSITIES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8192"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_SUPPORTS_SMALL_SCREENS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="512"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FLAG_SYSTEM"
  type="int"
  transient="false"
@@ -31375,6 +32759,28 @@
  visibility="public"
 >
 </field>
+<field name="FLAG_TEST_ONLY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="256"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_UPDATED_SYSTEM_APP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="128"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="className"
  type="java.lang.String"
  transient="false"
@@ -31486,6 +32892,16 @@
  visibility="public"
 >
 </field>
+<field name="targetSdkVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="taskAffinity"
  type="java.lang.String"
  transient="false"
@@ -31680,6 +33096,17 @@
  visibility="public"
 >
 </method>
+<method name="getGlEsVersion"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="writeToParcel"
  return="void"
  abstract="false"
@@ -31705,6 +33132,17 @@
  visibility="public"
 >
 </field>
+<field name="GL_ES_VERSION_UNDEFINED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="INPUT_FEATURE_FIVE_WAY_NAV"
  type="int"
  transient="false"
@@ -31727,6 +33165,16 @@
  visibility="public"
 >
 </field>
+<field name="reqGlEsVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="reqInputFeatures"
  type="int"
  transient="false"
@@ -32653,8 +34101,6 @@
 >
 <parameter name="packageName" type="java.lang.String">
 </parameter>
-<exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException">
-</exception>
 </method>
 <method name="getNameForUid"
  return="java.lang.String"
@@ -33632,6 +35078,73 @@
 >
 </field>
 </class>
+<class name="PathPermission"
+ extends="android.os.PatternMatcher"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="PathPermission"
+ type="android.content.pm.PathPermission"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pattern" type="java.lang.String">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="readPermission" type="java.lang.String">
+</parameter>
+<parameter name="writePermission" type="java.lang.String">
+</parameter>
+</constructor>
+<constructor name="PathPermission"
+ type="android.content.pm.PathPermission"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="src" type="android.os.Parcel">
+</parameter>
+</constructor>
+<method name="getReadPermission"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getWritePermission"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="PermissionGroupInfo"
  extends="android.content.pm.PackageItemInfo"
  abstract="false"
@@ -33961,6 +35474,17 @@
  visibility="public"
 >
 </field>
+<field name="pathPermissions"
+ type="android.content.pm.PathPermission[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="readPermission"
  type="java.lang.String"
  transient="false"
@@ -35472,6 +36996,105 @@
  visibility="public"
 >
 </field>
+<field name="SCREENLAYOUT_LONG_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="48"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_LONG_NO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_LONG_UNDEFINED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_LONG_YES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_SIZE_LARGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_SIZE_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="15"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_SIZE_NORMAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_SIZE_SMALL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SCREENLAYOUT_SIZE_UNDEFINED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TOUCHSCREEN_FINGER"
  type="int"
  transient="false"
@@ -35606,6 +37229,16 @@
  visibility="public"
 >
 </field>
+<field name="screenLayout"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="touchscreen"
  type="int"
  transient="false"
@@ -42600,6 +44233,1722 @@
 </method>
 </class>
 </package>
+<package name="android.gesture"
+>
+<class name="Gesture"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<constructor name="Gesture"
+ type="android.gesture.Gesture"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="addStroke"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="stroke" type="android.gesture.GestureStroke">
+</parameter>
+</method>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getBoundingBox"
+ return="android.graphics.RectF"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getID"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getLength"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStrokes"
+ return="java.util.ArrayList&lt;android.gesture.GestureStroke&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStrokesCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="toBitmap"
+ return="android.graphics.Bitmap"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="edge" type="int">
+</parameter>
+<parameter name="numSample" type="int">
+</parameter>
+<parameter name="color" type="int">
+</parameter>
+</method>
+<method name="toBitmap"
+ return="android.graphics.Bitmap"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="inset" type="int">
+</parameter>
+<parameter name="color" type="int">
+</parameter>
+</method>
+<method name="toPath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="toPath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="android.graphics.Path">
+</parameter>
+</method>
+<method name="toPath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="edge" type="int">
+</parameter>
+<parameter name="numSample" type="int">
+</parameter>
+</method>
+<method name="toPath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="android.graphics.Path">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="edge" type="int">
+</parameter>
+<parameter name="numSample" type="int">
+</parameter>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="out" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="GestureLibraries"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="fromFile"
+ return="android.gesture.GestureLibrary"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="java.lang.String">
+</parameter>
+</method>
+<method name="fromFile"
+ return="android.gesture.GestureLibrary"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="java.io.File">
+</parameter>
+</method>
+<method name="fromPrivateFile"
+ return="android.gesture.GestureLibrary"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
+<method name="fromRawResource"
+ return="android.gesture.GestureLibrary"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="resourceId" type="int">
+</parameter>
+</method>
+</class>
+<class name="GestureLibrary"
+ extends="java.lang.Object"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GestureLibrary"
+ type="android.gesture.GestureLibrary"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+</constructor>
+<method name="addGesture"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="getGestureEntries"
+ return="java.util.Set&lt;java.lang.String&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestures"
+ return="java.util.ArrayList&lt;android.gesture.Gesture&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+</method>
+<method name="getOrientationStyle"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSequenceType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isReadOnly"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="load"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="recognize"
+ return="java.util.ArrayList&lt;android.gesture.Prediction&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="removeEntry"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+</method>
+<method name="removeGesture"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="save"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="setOrientationStyle"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="style" type="int">
+</parameter>
+</method>
+<method name="setSequenceType"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+</method>
+<field name="mStore"
+ type="android.gesture.GestureStore"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="protected"
+>
+</field>
+</class>
+<class name="GestureOverlayView"
+ extends="android.widget.FrameLayout"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GestureOverlayView"
+ type="android.gesture.GestureOverlayView"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+</constructor>
+<constructor name="GestureOverlayView"
+ type="android.gesture.GestureOverlayView"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+</constructor>
+<constructor name="GestureOverlayView"
+ type="android.gesture.GestureOverlayView"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+<parameter name="defStyle" type="int">
+</parameter>
+</constructor>
+<method name="addOnGestureListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.gesture.GestureOverlayView.OnGestureListener">
+</parameter>
+</method>
+<method name="addOnGesturePerformedListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturePerformedListener">
+</parameter>
+</method>
+<method name="addOnGesturingListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturingListener">
+</parameter>
+</method>
+<method name="cancelClearAnimation"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="cancelGesture"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="clear"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="animated" type="boolean">
+</parameter>
+</method>
+<method name="getCurrentStroke"
+ return="java.util.ArrayList&lt;android.gesture.GesturePoint&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getFadeOffset"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGesture"
+ return="android.gesture.Gesture"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestureColor"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGesturePath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGesturePath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="android.graphics.Path">
+</parameter>
+</method>
+<method name="getGestureStrokeAngleThreshold"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestureStrokeLengthThreshold"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestureStrokeSquarenessTreshold"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestureStrokeType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestureStrokeWidth"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getOrientation"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getUncertainGestureColor"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isEventsInterceptionEnabled"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isFadeEnabled"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isGestureVisible"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isGesturing"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="removeAllOnGestureListeners"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="removeAllOnGesturePerformedListeners"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="removeAllOnGesturingListeners"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="removeOnGestureListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.gesture.GestureOverlayView.OnGestureListener">
+</parameter>
+</method>
+<method name="removeOnGesturePerformedListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturePerformedListener">
+</parameter>
+</method>
+<method name="removeOnGesturingListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.gesture.GestureOverlayView.OnGesturingListener">
+</parameter>
+</method>
+<method name="setEventsInterceptionEnabled"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="enabled" type="boolean">
+</parameter>
+</method>
+<method name="setFadeEnabled"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fadeEnabled" type="boolean">
+</parameter>
+</method>
+<method name="setFadeOffset"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fadeOffset" type="long">
+</parameter>
+</method>
+<method name="setGesture"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="setGestureColor"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="color" type="int">
+</parameter>
+</method>
+<method name="setGestureStrokeAngleThreshold"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gestureStrokeAngleThreshold" type="float">
+</parameter>
+</method>
+<method name="setGestureStrokeLengthThreshold"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gestureStrokeLengthThreshold" type="float">
+</parameter>
+</method>
+<method name="setGestureStrokeSquarenessTreshold"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gestureStrokeSquarenessTreshold" type="float">
+</parameter>
+</method>
+<method name="setGestureStrokeType"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gestureStrokeType" type="int">
+</parameter>
+</method>
+<method name="setGestureStrokeWidth"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gestureStrokeWidth" type="float">
+</parameter>
+</method>
+<method name="setGestureVisible"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visible" type="boolean">
+</parameter>
+</method>
+<method name="setOrientation"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="orientation" type="int">
+</parameter>
+</method>
+<method name="setUncertainGestureColor"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="color" type="int">
+</parameter>
+</method>
+<field name="GESTURE_STROKE_TYPE_MULTIPLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GESTURE_STROKE_TYPE_SINGLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ORIENTATION_HORIZONTAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ORIENTATION_VERTICAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<interface name="GestureOverlayView.OnGestureListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onGesture"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
+<method name="onGestureCancelled"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
+<method name="onGestureEnded"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
+<method name="onGestureStarted"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
+</interface>
+<interface name="GestureOverlayView.OnGesturePerformedListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onGesturePerformed"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+</interface>
+<interface name="GestureOverlayView.OnGesturingListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onGesturingEnded"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+</method>
+<method name="onGesturingStarted"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="overlay" type="android.gesture.GestureOverlayView">
+</parameter>
+</method>
+</interface>
+<class name="GesturePoint"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GesturePoint"
+ type="android.gesture.GesturePoint"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="t" type="long">
+</parameter>
+</constructor>
+<field name="timestamp"
+ type="long"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="x"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="y"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="GestureStore"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GestureStore"
+ type="android.gesture.GestureStore"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="addGesture"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="getGestureEntries"
+ return="java.util.Set&lt;java.lang.String&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGestures"
+ return="java.util.ArrayList&lt;android.gesture.Gesture&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+</method>
+<method name="getOrientationStyle"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSequenceType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="hasChanged"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="load"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="stream" type="java.io.InputStream">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="load"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="stream" type="java.io.InputStream">
+</parameter>
+<parameter name="closeStream" type="boolean">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="recognize"
+ return="java.util.ArrayList&lt;android.gesture.Prediction&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="removeEntry"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+</method>
+<method name="removeGesture"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="entryName" type="java.lang.String">
+</parameter>
+<parameter name="gesture" type="android.gesture.Gesture">
+</parameter>
+</method>
+<method name="save"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="stream" type="java.io.OutputStream">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="save"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="stream" type="java.io.OutputStream">
+</parameter>
+<parameter name="closeStream" type="boolean">
+</parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
+</method>
+<method name="setOrientationStyle"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="style" type="int">
+</parameter>
+</method>
+<method name="setSequenceType"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+</method>
+<field name="ORIENTATION_INVARIANT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ORIENTATION_SENSITIVE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SEQUENCE_INVARIANT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SEQUENCE_SENSITIVE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="GestureStroke"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GestureStroke"
+ type="android.gesture.GestureStroke"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="points" type="java.util.ArrayList&lt;android.gesture.GesturePoint&gt;">
+</parameter>
+</constructor>
+<method name="clearPath"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="computeOrientedBoundingBox"
+ return="android.gesture.OrientedBoundingBox"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getPath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="toPath"
+ return="android.graphics.Path"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="float">
+</parameter>
+<parameter name="height" type="float">
+</parameter>
+<parameter name="numSample" type="int">
+</parameter>
+</method>
+<field name="boundingBox"
+ type="android.graphics.RectF"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="length"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="points"
+ type="float[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="OrientedBoundingBox"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<field name="centerX"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="centerY"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="height"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="orientation"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="squareness"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="width"
+ type="float"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="Prediction"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<field name="name"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="score"
+ type="double"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+</package>
 <package name="android.graphics"
 >
 <class name="AvoidXfermode"
@@ -42924,6 +46273,17 @@
  visibility="public"
 >
 </method>
+<method name="getDensity"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getHeight"
  return="int"
  abstract="false"
@@ -42997,6 +46357,84 @@
  visibility="public"
 >
 </method>
+<method name="getScaledHeight"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="canvas" type="android.graphics.Canvas">
+</parameter>
+</method>
+<method name="getScaledHeight"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="metrics" type="android.util.DisplayMetrics">
+</parameter>
+</method>
+<method name="getScaledHeight"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="targetDensity" type="int">
+</parameter>
+</method>
+<method name="getScaledWidth"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="canvas" type="android.graphics.Canvas">
+</parameter>
+</method>
+<method name="getScaledWidth"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="metrics" type="android.util.DisplayMetrics">
+</parameter>
+</method>
+<method name="getScaledWidth"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="targetDensity" type="int">
+</parameter>
+</method>
 <method name="getWidth"
  return="int"
  abstract="false"
@@ -43041,6 +46479,17 @@
  visibility="public"
 >
 </method>
+<method name="prepareToDraw"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="recycle"
  return="void"
  abstract="false"
@@ -43052,6 +46501,19 @@
  visibility="public"
 >
 </method>
+<method name="setDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="density" type="int">
+</parameter>
+</method>
 <method name="setPixel"
  return="void"
  abstract="false"
@@ -43119,6 +46581,17 @@
  visibility="public"
 >
 </field>
+<field name="DENSITY_NONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </class>
 <class name="Bitmap.CompressFormat"
  extends="java.lang.Enum"
@@ -43328,6 +46801,27 @@
 <parameter name="id" type="int">
 </parameter>
 </method>
+<method name="decodeResourceStream"
+ return="android.graphics.Bitmap"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="res" type="android.content.res.Resources">
+</parameter>
+<parameter name="value" type="android.util.TypedValue">
+</parameter>
+<parameter name="is" type="java.io.InputStream">
+</parameter>
+<parameter name="pad" type="android.graphics.Rect">
+</parameter>
+<parameter name="opts" type="android.graphics.BitmapFactory.Options">
+</parameter>
+</method>
 <method name="decodeStream"
  return="android.graphics.Bitmap"
  abstract="false"
@@ -43386,6 +46880,16 @@
  visibility="public"
 >
 </method>
+<field name="inDensity"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="inDither"
  type="boolean"
  transient="false"
@@ -43396,6 +46900,16 @@
  visibility="public"
 >
 </field>
+<field name="inInputShareable"
+ type="boolean"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="inJustDecodeBounds"
  type="boolean"
  transient="false"
@@ -43416,6 +46930,16 @@
  visibility="public"
 >
 </field>
+<field name="inPurgeable"
+ type="boolean"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="inSampleSize"
  type="int"
  transient="false"
@@ -43426,6 +46950,36 @@
  visibility="public"
 >
 </field>
+<field name="inScaled"
+ type="boolean"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="inScreenDensity"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="inTargetDensity"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="inTempStorage"
  type="byte[]"
  transient="false"
@@ -44648,7 +48202,7 @@
 <method name="freeGlCaches"
  return="void"
  abstract="false"
- native="true"
+ native="false"
  synchronized="false"
  static="true"
  final="false"
@@ -44680,6 +48234,17 @@
  visibility="public"
 >
 </method>
+<method name="getDensity"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getDrawFilter"
  return="android.graphics.DrawFilter"
  abstract="false"
@@ -45026,6 +48591,19 @@
 <parameter name="bitmap" type="android.graphics.Bitmap">
 </parameter>
 </method>
+<method name="setDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="density" type="int">
+</parameter>
+</method>
 <method name="setDrawFilter"
  return="void"
  abstract="false"
@@ -47335,6 +50913,17 @@
 <parameter name="paint" type="android.graphics.Paint">
 </parameter>
 </method>
+<method name="getDensity"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getHeight"
  return="int"
  abstract="false"
@@ -52357,6 +55946,32 @@
 <parameter name="path" type="java.lang.String">
 </parameter>
 </method>
+<method name="createFromFile"
+ return="android.graphics.Typeface"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="java.io.File">
+</parameter>
+</method>
+<method name="createFromFile"
+ return="android.graphics.Typeface"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="path" type="java.lang.String">
+</parameter>
+</method>
 <method name="defaultFromStyle"
  return="android.graphics.Typeface"
  abstract="false"
@@ -52518,6 +56133,47 @@
 </package>
 <package name="android.graphics.drawable"
 >
+<interface name="Animatable"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="isRunning"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="start"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="stop"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</interface>
 <class name="AnimationDrawable"
  extends="android.graphics.drawable.DrawableContainer"
  abstract="false"
@@ -52526,6 +56182,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<implements name="android.graphics.drawable.Animatable">
+</implements>
 <implements name="java.lang.Runnable">
 </implements>
 <constructor name="AnimationDrawable"
@@ -52669,7 +56327,7 @@
  type="android.graphics.drawable.BitmapDrawable"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </constructor>
@@ -52680,6 +56338,28 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="res" type="android.content.res.Resources">
+</parameter>
+</constructor>
+<constructor name="BitmapDrawable"
+ type="android.graphics.drawable.BitmapDrawable"
+ static="false"
+ final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+<parameter name="bitmap" type="android.graphics.Bitmap">
+</parameter>
+</constructor>
+<constructor name="BitmapDrawable"
+ type="android.graphics.drawable.BitmapDrawable"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="res" type="android.content.res.Resources">
+</parameter>
 <parameter name="bitmap" type="android.graphics.Bitmap">
 </parameter>
 </constructor>
@@ -52845,6 +56525,45 @@
 <parameter name="gravity" type="int">
 </parameter>
 </method>
+<method name="setTargetDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="canvas" type="android.graphics.Canvas">
+</parameter>
+</method>
+<method name="setTargetDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="metrics" type="android.util.DisplayMetrics">
+</parameter>
+</method>
+<method name="setTargetDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="density" type="int">
+</parameter>
+</method>
 <method name="setTileModeX"
  return="void"
  abstract="false"
@@ -53181,6 +56900,25 @@
 <parameter name="pathName" type="java.lang.String">
 </parameter>
 </method>
+<method name="createFromResourceStream"
+ return="android.graphics.drawable.Drawable"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="res" type="android.content.res.Resources">
+</parameter>
+<parameter name="value" type="android.util.TypedValue">
+</parameter>
+<parameter name="is" type="java.io.InputStream">
+</parameter>
+<parameter name="srcName" type="java.lang.String">
+</parameter>
+</method>
 <method name="createFromStream"
  return="android.graphics.drawable.Drawable"
  abstract="false"
@@ -54878,7 +58616,7 @@
  type="android.graphics.drawable.NinePatchDrawable"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="bitmap" type="android.graphics.Bitmap">
@@ -54897,6 +58635,36 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="res" type="android.content.res.Resources">
+</parameter>
+<parameter name="bitmap" type="android.graphics.Bitmap">
+</parameter>
+<parameter name="chunk" type="byte[]">
+</parameter>
+<parameter name="padding" type="android.graphics.Rect">
+</parameter>
+<parameter name="srcName" type="java.lang.String">
+</parameter>
+</constructor>
+<constructor name="NinePatchDrawable"
+ type="android.graphics.drawable.NinePatchDrawable"
+ static="false"
+ final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+<parameter name="patch" type="android.graphics.NinePatch">
+</parameter>
+</constructor>
+<constructor name="NinePatchDrawable"
+ type="android.graphics.drawable.NinePatchDrawable"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="res" type="android.content.res.Resources">
+</parameter>
 <parameter name="patch" type="android.graphics.NinePatch">
 </parameter>
 </constructor>
@@ -54961,6 +58729,45 @@
 <parameter name="cf" type="android.graphics.ColorFilter">
 </parameter>
 </method>
+<method name="setTargetDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="canvas" type="android.graphics.Canvas">
+</parameter>
+</method>
+<method name="setTargetDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="metrics" type="android.util.DisplayMetrics">
+</parameter>
+</method>
+<method name="setTargetDensity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="density" type="int">
+</parameter>
+</method>
 </class>
 <class name="PaintDrawable"
  extends="android.graphics.drawable.ShapeDrawable"
@@ -57475,7 +61282,7 @@
  type="float"
  transient="false"
  volatile="false"
- value="0.001f"
+ value="0.0010f"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -60132,6 +63939,30 @@
  visibility="public"
 >
 </method>
+<method name="invalidateAllKeys"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="invalidateKey"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="keyIndex" type="int">
+</parameter>
+</method>
 <method name="isPreviewEnabled"
  return="boolean"
  abstract="false"
@@ -60707,6 +64538,17 @@
  visibility="public"
 >
 </method>
+<method name="getPremises"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getSubAdminArea"
  return="java.lang.String"
  abstract="false"
@@ -60718,6 +64560,28 @@
  visibility="public"
 >
 </method>
+<method name="getSubLocality"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSubThoroughfare"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getThoroughfare"
  return="java.lang.String"
  abstract="false"
@@ -60907,6 +64771,19 @@
 <parameter name="postalCode" type="java.lang.String">
 </parameter>
 </method>
+<method name="setPremises"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="premises" type="java.lang.String">
+</parameter>
+</method>
 <method name="setSubAdminArea"
  return="void"
  abstract="false"
@@ -60920,6 +64797,32 @@
 <parameter name="subAdminArea" type="java.lang.String">
 </parameter>
 </method>
+<method name="setSubLocality"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sublocality" type="java.lang.String">
+</parameter>
+</method>
+<method name="setSubThoroughfare"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="subthoroughfare" type="java.lang.String">
+</parameter>
+</method>
 <method name="setThoroughfare"
  return="void"
  abstract="false"
@@ -62997,7 +66900,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="mode" type="int">
@@ -63208,7 +67111,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="mode" type="int">
@@ -66119,6 +70022,17 @@
  visibility="public"
 >
 </constructor>
+<method name="getAudioSourceMax"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getMaxAmplitude"
  return="int"
  abstract="false"
@@ -66520,6 +70434,39 @@
  visibility="public"
 >
 </field>
+<field name="VOICE_CALL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="VOICE_DOWNLINK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="VOICE_UPLINK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 </class>
 <interface name="MediaRecorder.OnErrorListener"
  abstract="true"
@@ -67671,6 +71618,721 @@
  visibility="public"
 >
 </field>
+<field name="TONE_CDMA_ABBR_ALERT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="97"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ABBR_INTERCEPT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="37"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ABBR_REORDER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="39"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ALERT_AUTOREDIAL_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="87"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ALERT_CALL_GUARD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="93"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ALERT_INCALL_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="91"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ALERT_NETWORK_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="86"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ANSWER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="42"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALLDROP_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="95"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="46"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="45"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="48"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="50"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT6"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="51"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT7"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="52"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="49"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="47"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_CONFIRM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="41"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_DIAL_TONE_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_EMERGENCY_RINGBACK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="92"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_L"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="53"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_PBX_L"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="71"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_PBX_SLS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="80"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_PBX_SS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="74"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_PBX_SSL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="77"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_PBX_S_X4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="83"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_SLS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="65"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_SS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="56"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_SSL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="59"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_SS_2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="62"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_HIGH_S_X4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="68"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_INTERCEPT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_KEYPAD_VOLUME_KEY_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="89"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_L"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="55"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_PBX_L"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="73"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_PBX_SLS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="82"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_PBX_SS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="76"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_PBX_SSL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="79"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_PBX_S_X4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="85"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_SLS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="67"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_SS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="58"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_SSL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="61"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_SS_2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="64"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_LOW_S_X4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="70"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_L"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="54"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_PBX_L"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="72"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_PBX_SLS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="81"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_PBX_SS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="75"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_PBX_SSL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="78"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_PBX_S_X4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="84"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_SLS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="66"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_SS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="57"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_SSL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="60"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_SS_2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="63"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_MED_S_X4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="69"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_NETWORK_BUSY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="40"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_NETWORK_BUSY_ONE_SHOT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="96"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_NETWORK_CALLWAITING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="43"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_NETWORK_USA_RINGBACK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_ONE_MIN_BEEP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="88"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_PIP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="44"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_PRESSHOLDKEY_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="90"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_REORDER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="38"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_SIGNAL_OFF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="98"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_CDMA_SOFT_ERROR_LITE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="94"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TONE_DTMF_0"
  type="int"
  transient="false"
@@ -67924,6 +72586,17 @@
  visibility="public"
 >
 </field>
+<field name="TONE_SUP_CONFIRM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TONE_SUP_CONGESTION"
  type="int"
  transient="false"
@@ -67935,6 +72608,17 @@
  visibility="public"
 >
 </field>
+<field name="TONE_SUP_CONGESTION_ABBREV"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="31"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TONE_SUP_DIAL"
  type="int"
  transient="false"
@@ -67957,6 +72641,39 @@
  visibility="public"
 >
 </field>
+<field name="TONE_SUP_INTERCEPT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="29"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_SUP_INTERCEPT_ABBREV"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="30"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TONE_SUP_PIP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TONE_SUP_RADIO_ACK"
  type="int"
  transient="false"
@@ -72042,6 +76759,19 @@
 <parameter name="rssiB" type="int">
 </parameter>
 </method>
+<method name="createMulticastLock"
+ return="android.net.wifi.WifiManager.MulticastLock"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="tag" type="java.lang.String">
+</parameter>
+</method>
 <method name="createWifiLock"
  return="android.net.wifi.WifiManager.WifiLock"
  abstract="false"
@@ -72534,6 +77264,61 @@
 >
 </field>
 </class>
+<class name="WifiManager.MulticastLock"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="acquire"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isHeld"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="release"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="setReferenceCounted"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="refCounted" type="boolean">
+</parameter>
+</method>
+</class>
 <class name="WifiManager.WifiLock"
  extends="java.lang.Object"
  abstract="false"
@@ -72687,6 +77472,10412 @@
 >
 </field>
 </class>
+<class name="GLES10"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GLES10"
+ type="android.opengl.GLES10"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="glActiveTexture"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glAlphaFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+<parameter name="ref" type="float">
+</parameter>
+</method>
+<method name="glAlphaFuncx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+<parameter name="ref" type="int">
+</parameter>
+</method>
+<method name="glBindTexture"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glBlendFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sfactor" type="int">
+</parameter>
+<parameter name="dfactor" type="int">
+</parameter>
+</method>
+<method name="glClear"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glClearColor"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="float">
+</parameter>
+<parameter name="green" type="float">
+</parameter>
+<parameter name="blue" type="float">
+</parameter>
+<parameter name="alpha" type="float">
+</parameter>
+</method>
+<method name="glClearColorx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="int">
+</parameter>
+<parameter name="green" type="int">
+</parameter>
+<parameter name="blue" type="int">
+</parameter>
+<parameter name="alpha" type="int">
+</parameter>
+</method>
+<method name="glClearDepthf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="depth" type="float">
+</parameter>
+</method>
+<method name="glClearDepthx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="depth" type="int">
+</parameter>
+</method>
+<method name="glClearStencil"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="s" type="int">
+</parameter>
+</method>
+<method name="glClientActiveTexture"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glColor4f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="float">
+</parameter>
+<parameter name="green" type="float">
+</parameter>
+<parameter name="blue" type="float">
+</parameter>
+<parameter name="alpha" type="float">
+</parameter>
+</method>
+<method name="glColor4x"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="int">
+</parameter>
+<parameter name="green" type="int">
+</parameter>
+<parameter name="blue" type="int">
+</parameter>
+<parameter name="alpha" type="int">
+</parameter>
+</method>
+<method name="glColorMask"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="boolean">
+</parameter>
+<parameter name="green" type="boolean">
+</parameter>
+<parameter name="blue" type="boolean">
+</parameter>
+<parameter name="alpha" type="boolean">
+</parameter>
+</method>
+<method name="glColorPointer"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glCompressedTexImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="border" type="int">
+</parameter>
+<parameter name="imageSize" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glCompressedTexSubImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="xoffset" type="int">
+</parameter>
+<parameter name="yoffset" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="imageSize" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glCopyTexImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="border" type="int">
+</parameter>
+</method>
+<method name="glCopyTexSubImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="xoffset" type="int">
+</parameter>
+<parameter name="yoffset" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glCullFace"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glDeleteTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDepthFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+</method>
+<method name="glDepthMask"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="flag" type="boolean">
+</parameter>
+</method>
+<method name="glDepthRangef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glDepthRangex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="zNear" type="int">
+</parameter>
+<parameter name="zFar" type="int">
+</parameter>
+</method>
+<method name="glDisable"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cap" type="int">
+</parameter>
+</method>
+<method name="glDisableClientState"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="array" type="int">
+</parameter>
+</method>
+<method name="glDrawArrays"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+<parameter name="first" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+</method>
+<method name="glDrawElements"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="indices" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glEnable"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cap" type="int">
+</parameter>
+</method>
+<method name="glEnableClientState"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="array" type="int">
+</parameter>
+</method>
+<method name="glFinish"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glFlush"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glFogf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glFogfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glFogfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glFogx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glFogxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glFogxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glFrontFace"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glFrustumf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="float">
+</parameter>
+<parameter name="right" type="float">
+</parameter>
+<parameter name="bottom" type="float">
+</parameter>
+<parameter name="top" type="float">
+</parameter>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glFrustumx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="int">
+</parameter>
+<parameter name="right" type="int">
+</parameter>
+<parameter name="bottom" type="int">
+</parameter>
+<parameter name="top" type="int">
+</parameter>
+<parameter name="zNear" type="int">
+</parameter>
+<parameter name="zFar" type="int">
+</parameter>
+</method>
+<method name="glGenTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenTextures"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="textures" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetError"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glGetIntegerv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetIntegerv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetString"
+ return="java.lang.String"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="int">
+</parameter>
+</method>
+<method name="glHint"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glLightModelf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glLightModelfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLightModelfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glLightModelx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glLightModelxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLightModelxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glLightf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glLightfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLightfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glLightx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glLightxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLightxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glLineWidth"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="float">
+</parameter>
+</method>
+<method name="glLineWidthx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="int">
+</parameter>
+</method>
+<method name="glLoadIdentity"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glLoadMatrixf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLoadMatrixf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glLoadMatrixx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLoadMatrixx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glLogicOp"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="opcode" type="int">
+</parameter>
+</method>
+<method name="glMaterialf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glMaterialfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glMaterialfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glMaterialx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glMaterialxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glMaterialxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glMatrixMode"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glMultMatrixf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glMultMatrixf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glMultMatrixx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glMultMatrixx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glMultiTexCoord4f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="s" type="float">
+</parameter>
+<parameter name="t" type="float">
+</parameter>
+<parameter name="r" type="float">
+</parameter>
+<parameter name="q" type="float">
+</parameter>
+</method>
+<method name="glMultiTexCoord4x"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="s" type="int">
+</parameter>
+<parameter name="t" type="int">
+</parameter>
+<parameter name="r" type="int">
+</parameter>
+<parameter name="q" type="int">
+</parameter>
+</method>
+<method name="glNormal3f"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="nx" type="float">
+</parameter>
+<parameter name="ny" type="float">
+</parameter>
+<parameter name="nz" type="float">
+</parameter>
+</method>
+<method name="glNormal3x"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="nx" type="int">
+</parameter>
+<parameter name="ny" type="int">
+</parameter>
+<parameter name="nz" type="int">
+</parameter>
+</method>
+<method name="glNormalPointer"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glOrthof"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="float">
+</parameter>
+<parameter name="right" type="float">
+</parameter>
+<parameter name="bottom" type="float">
+</parameter>
+<parameter name="top" type="float">
+</parameter>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glOrthox"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="int">
+</parameter>
+<parameter name="right" type="int">
+</parameter>
+<parameter name="bottom" type="int">
+</parameter>
+<parameter name="top" type="int">
+</parameter>
+<parameter name="zNear" type="int">
+</parameter>
+<parameter name="zFar" type="int">
+</parameter>
+</method>
+<method name="glPixelStorei"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glPointSize"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="float">
+</parameter>
+</method>
+<method name="glPointSizex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+</method>
+<method name="glPolygonOffset"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="factor" type="float">
+</parameter>
+<parameter name="units" type="float">
+</parameter>
+</method>
+<method name="glPolygonOffsetx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="factor" type="int">
+</parameter>
+<parameter name="units" type="int">
+</parameter>
+</method>
+<method name="glPopMatrix"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glPushMatrix"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glReadPixels"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="pixels" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glRotatef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="angle" type="float">
+</parameter>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
+<method name="glRotatex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="angle" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glSampleCoverage"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="float">
+</parameter>
+<parameter name="invert" type="boolean">
+</parameter>
+</method>
+<method name="glSampleCoveragex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="int">
+</parameter>
+<parameter name="invert" type="boolean">
+</parameter>
+</method>
+<method name="glScalef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
+<method name="glScalex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glScissor"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glShadeModel"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glStencilFunc"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+<parameter name="ref" type="int">
+</parameter>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glStencilMask"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mask" type="int">
+</parameter>
+</method>
+<method name="glStencilOp"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fail" type="int">
+</parameter>
+<parameter name="zfail" type="int">
+</parameter>
+<parameter name="zpass" type="int">
+</parameter>
+</method>
+<method name="glTexCoordPointer"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glTexEnvf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glTexEnvfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexEnvfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glTexEnvx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexEnvxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexEnvxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="border" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="pixels" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glTexParameterf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glTexParameterx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexSubImage2D"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+<parameter name="xoffset" type="int">
+</parameter>
+<parameter name="yoffset" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+<parameter name="format" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="pixels" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glTranslatef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+</method>
+<method name="glTranslatex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glVertexPointer"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glViewport"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<field name="GL_ADD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="260"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALIASED_LINE_WIDTH_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33902"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALIASED_POINT_SIZE_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33901"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6406"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3413"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3008"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALWAYS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="519"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_AMBIENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4608"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_AMBIENT_AND_DIFFUSE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5634"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_AND"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5377"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_AND_INVERTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5380"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_AND_REVERSE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5378"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BACK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1029"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3042"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLUE_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3412"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BYTE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5120"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CCW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2305"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLAMP_TO_EDGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33071"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5376"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ARRAY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32886"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_BUFFER_BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16384"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_LOGIC_OP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3058"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_MATERIAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2903"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COMPRESSED_TEXTURE_FORMATS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34467"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CONSTANT_ATTENUATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4615"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COPY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5379"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COPY_INVERTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5388"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CULL_FACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2884"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2304"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DECAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8449"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DECR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7683"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3414"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_BUFFER_BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="256"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2929"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DIFFUSE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4609"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DITHER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DONT_CARE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4352"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DST_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="772"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DST_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="774"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EMISSION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5632"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="514"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EQUIV"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5385"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EXP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2048"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EXP2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2049"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_EXTENSIONS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7939"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FALSE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FASTEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4353"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FIXED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5132"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7424"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FLOAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5126"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2912"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2918"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG_DENSITY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2914"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG_END"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2916"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3156"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2917"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FOG_START"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2915"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRONT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1028"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRONT_AND_BACK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1032"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GEQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="518"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GREATER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="516"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GREEN_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3411"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35739"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35738"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INCR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7682"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_ENUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1280"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_OPERATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1282"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1281"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVERT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5386"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_KEEP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7680"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LEQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="515"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LESS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="513"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT0"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16384"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16385"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16386"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16387"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16388"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16389"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT6"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16390"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT7"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16391"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHTING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2896"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT_MODEL_AMBIENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2899"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LIGHT_MODEL_TWO_SIDE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2898"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9729"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR_ATTENUATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4616"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR_MIPMAP_LINEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9987"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINEAR_MIPMAP_NEAREST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9985"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_LOOP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_SMOOTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2848"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_SMOOTH_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3154"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_STRIP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LUMINANCE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6409"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LUMINANCE_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6410"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_ELEMENTS_INDICES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33001"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_ELEMENTS_VERTICES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33000"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_LIGHTS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3377"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_MODELVIEW_STACK_DEPTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3382"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_PROJECTION_STACK_DEPTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3384"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_TEXTURE_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3379"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_TEXTURE_STACK_DEPTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3385"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_TEXTURE_UNITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34018"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VIEWPORT_DIMS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3386"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MODELVIEW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5888"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MODULATE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8448"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MULTISAMPLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32925"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NAND"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5390"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEAREST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9728"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEAREST_MIPMAP_LINEAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9986"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEAREST_MIPMAP_NEAREST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9984"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NEVER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="512"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NICEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4354"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NOOP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5381"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5384"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMALIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2977"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMAL_ARRAY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32885"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NOTEQUAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="517"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NO_ERROR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34466"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_DST_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="773"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_DST_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="775"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_SRC_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="771"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ONE_MINUS_SRC_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="769"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5383"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OR_INVERTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5389"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OR_REVERSE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5387"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OUT_OF_MEMORY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1285"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PACK_ALIGNMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3333"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE4_R5_G6_B5_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35730"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE4_RGB5_A1_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35732"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE4_RGB8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35728"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE4_RGBA4_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35731"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE4_RGBA8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35729"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE8_R5_G6_B5_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35735"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE8_RGB5_A1_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35737"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE8_RGB8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35733"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE8_RGBA4_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35736"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PALETTE8_RGBA8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35734"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PERSPECTIVE_CORRECTION_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3152"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINTS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_FADE_THRESHOLD_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33064"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2833"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SMOOTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2832"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SMOOTH_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3153"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_OFFSET_FILL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32823"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_SMOOTH_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3155"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POSITION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4611"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PROJECTION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5889"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_QUADRATIC_ATTENUATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4617"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RED_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3410"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7937"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_REPEAT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10497"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_REPLACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7681"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RESCALE_NORMAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32826"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6407"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGBA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6408"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_ALPHA_TO_COVERAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32926"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_ALPHA_TO_ONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32927"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_COVERAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32928"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SCISSOR_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3089"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SET"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5391"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHININESS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5633"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHORT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5122"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SMOOTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7425"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SMOOTH_LINE_WIDTH_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2850"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SMOOTH_POINT_SIZE_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2834"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SPECULAR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4610"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SPOT_CUTOFF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4614"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SPOT_DIRECTION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4612"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SPOT_EXPONENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4613"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="770"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC_ALPHA_SATURATE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="776"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="768"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STACK_OVERFLOW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1283"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STACK_UNDERFLOW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1284"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3415"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_BUFFER_BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_TEST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2960"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SUBPIXEL_BITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3408"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5890"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE0"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33984"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33985"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE10"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33994"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE11"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33995"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE12"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33996"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE13"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33997"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE14"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33998"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE15"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33999"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE16"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34000"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE17"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34001"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE18"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34002"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE19"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34003"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33986"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE20"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34004"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE21"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34005"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE22"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34006"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE23"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34007"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE24"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34008"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE25"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34009"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE26"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34010"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE27"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34011"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE28"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34012"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE29"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34013"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33987"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE30"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34014"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE31"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34015"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33988"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33989"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE6"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33990"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE7"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33991"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE8"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33992"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE9"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33993"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_2D"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3553"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_COORD_ARRAY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32888"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_ENV"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8960"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_ENV_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8705"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_ENV_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8704"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MAG_FILTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10240"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MIN_FILTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10241"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_WRAP_S"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10242"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_WRAP_T"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10243"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRIANGLES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRIANGLE_FAN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRIANGLE_STRIP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TRUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNPACK_ALIGNMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3317"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_BYTE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5121"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5123"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT_4_4_4_4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32819"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT_5_5_5_1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32820"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_SHORT_5_6_5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33635"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VENDOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7936"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERSION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7938"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ARRAY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32884"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_XOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5382"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ZERO"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="GLES10Ext"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GLES10Ext"
+ type="android.opengl.GLES10Ext"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="glQueryMatrixxOES"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mantissa" type="int[]">
+</parameter>
+<parameter name="mantissaOffset" type="int">
+</parameter>
+<parameter name="exponent" type="int[]">
+</parameter>
+<parameter name="exponentOffset" type="int">
+</parameter>
+</method>
+<method name="glQueryMatrixxOES"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mantissa" type="java.nio.IntBuffer">
+</parameter>
+<parameter name="exponent" type="java.nio.IntBuffer">
+</parameter>
+</method>
+</class>
+<class name="GLES11"
+ extends="android.opengl.GLES10"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GLES11"
+ type="android.opengl.GLES11"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="glBindBuffer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="buffer" type="int">
+</parameter>
+</method>
+<method name="glBufferData"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+<parameter name="usage" type="int">
+</parameter>
+</method>
+<method name="glBufferSubData"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="data" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glClipPlanef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glClipPlanef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glClipPlanex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glClipPlanex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glColor4ub"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="byte">
+</parameter>
+<parameter name="green" type="byte">
+</parameter>
+<parameter name="blue" type="byte">
+</parameter>
+<parameter name="alpha" type="byte">
+</parameter>
+</method>
+<method name="glColorPointer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDrawElements"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+<parameter name="count" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenBuffers"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="buffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetBooleanv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="boolean[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetBooleanv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetBufferParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetBufferParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetClipPlanef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetClipPlanef"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetClipPlanex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetClipPlanex"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetFixedv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetFixedv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetFloatv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetFloatv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetLightfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetLightfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetLightxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetLightxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetMaterialfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetMaterialfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetMaterialxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetMaterialxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexEnvfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexEnvfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetTexEnviv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexEnviv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexEnvxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexEnvxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexParameterxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameterxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glIsBuffer"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="buffer" type="int">
+</parameter>
+</method>
+<method name="glIsEnabled"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="cap" type="int">
+</parameter>
+</method>
+<method name="glIsTexture"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="texture" type="int">
+</parameter>
+</method>
+<method name="glNormalPointer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glPointParameterf"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glPointParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glPointParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glPointParameterx"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glPointParameterxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glPointParameterxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glPointSizePointerOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glTexCoordPointer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexEnvi"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexEnviv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexEnviv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexParameterfv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glTexParameteri"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexParameteriv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexParameterxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexParameterxv"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glVertexPointer"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<field name="GL_ACTIVE_TEXTURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34016"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ADD_SIGNED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34164"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA_SCALE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3356"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA_TEST_FUNC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3009"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ALPHA_TEST_REF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3010"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ARRAY_BUFFER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34962"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34964"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_DST"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3040"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_SRC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3041"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_ACCESS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35003"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34660"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_USAGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34661"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIENT_ACTIVE_TEXTURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34017"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIP_PLANE0"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12288"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIP_PLANE1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12289"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIP_PLANE2"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12290"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIP_PLANE3"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12291"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIP_PLANE4"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12292"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CLIP_PLANE5"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="12293"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34968"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ARRAY_POINTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32912"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ARRAY_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32897"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ARRAY_STRIDE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32899"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ARRAY_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32898"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_CLEAR_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3106"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3107"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COMBINE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COMBINE_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34162"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COMBINE_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34161"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CONSTANT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34166"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COORD_REPLACE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34914"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CULL_FACE_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2885"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CURRENT_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2816"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CURRENT_NORMAL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2818"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CURRENT_TEXTURE_COORDS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2819"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_CLEAR_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2931"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_FUNC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2932"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_RANGE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2928"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2930"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DOT3_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34478"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DOT3_RGBA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34479"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DYNAMIC_DRAW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35048"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ELEMENT_ARRAY_BUFFER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34963"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34965"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRONT_FACE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2886"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GENERATE_MIPMAP"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33169"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_GENERATE_MIPMAP_HINT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33170"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INTERPOLATE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34165"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LINE_WIDTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2849"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_LOGIC_OP_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3056"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2976"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_CLIP_PLANES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3378"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MODELVIEW_MATRIX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2982"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35213"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MODELVIEW_STACK_DEPTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2979"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMAL_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34967"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMAL_ARRAY_POINTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32911"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMAL_ARRAY_STRIDE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32895"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMAL_ARRAY_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32894"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OPERAND0_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34200"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OPERAND0_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34192"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OPERAND1_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34201"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OPERAND1_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34193"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OPERAND2_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34202"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_OPERAND2_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34194"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_DISTANCE_ATTENUATION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33065"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_FADE_THRESHOLD_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33064"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2833"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35743"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_ARRAY_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35740"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_ARRAY_POINTER_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35212"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_ARRAY_STRIDE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35211"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_ARRAY_TYPE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35210"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_MAX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33063"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SIZE_MIN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33062"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POINT_SPRITE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34913"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_OFFSET_FACTOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32824"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_POLYGON_OFFSET_UNITS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10752"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PREVIOUS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34168"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PRIMARY_COLOR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34167"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PROJECTION_MATRIX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2983"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35214"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PROJECTION_STACK_DEPTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2980"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB_SCALE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34163"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32937"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_BUFFERS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32936"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_COVERAGE_INVERT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32939"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SAMPLE_COVERAGE_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32938"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SCISSOR_BOX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3088"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SHADE_MODEL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2900"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC0_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34184"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC0_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34176"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC1_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34185"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC1_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34177"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC2_ALPHA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34186"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SRC2_RGB"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34178"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STATIC_DRAW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35044"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_CLEAR_VALUE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2961"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2964"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_FUNC"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2962"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_PASS_DEPTH_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2965"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_PASS_DEPTH_PASS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2966"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_REF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2967"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_VALUE_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2963"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_WRITEMASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2968"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_SUBTRACT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34023"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_BINDING_2D"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32873"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34970"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_COORD_ARRAY_POINTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32914"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_COORD_ARRAY_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32904"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_COORD_ARRAY_STRIDE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32906"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_COORD_ARRAY_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32905"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MATRIX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2984"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35215"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_STACK_DEPTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2981"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ARRAY_BUFFER_BINDING"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34966"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ARRAY_POINTER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32910"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ARRAY_SIZE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32890"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ARRAY_STRIDE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32892"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VERTEX_ARRAY_TYPE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32891"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_VIEWPORT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2978"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WRITE_ONLY"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35001"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="GLES11Ext"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="GLES11Ext"
+ type="android.opengl.GLES11Ext"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<method name="glAlphaFuncxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="func" type="int">
+</parameter>
+<parameter name="ref" type="int">
+</parameter>
+</method>
+<method name="glBindFramebufferOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="framebuffer" type="int">
+</parameter>
+</method>
+<method name="glBindRenderbufferOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="renderbuffer" type="int">
+</parameter>
+</method>
+<method name="glBlendEquationOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
+<method name="glBlendEquationSeparateOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="modeRGB" type="int">
+</parameter>
+<parameter name="modeAlpha" type="int">
+</parameter>
+</method>
+<method name="glBlendFuncSeparateOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="srcRGB" type="int">
+</parameter>
+<parameter name="dstRGB" type="int">
+</parameter>
+<parameter name="srcAlpha" type="int">
+</parameter>
+<parameter name="dstAlpha" type="int">
+</parameter>
+</method>
+<method name="glCheckFramebufferStatusOES"
+ return="int"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+</method>
+<method name="glClearColorxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="int">
+</parameter>
+<parameter name="green" type="int">
+</parameter>
+<parameter name="blue" type="int">
+</parameter>
+<parameter name="alpha" type="int">
+</parameter>
+</method>
+<method name="glClearDepthfOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="depth" type="float">
+</parameter>
+</method>
+<method name="glClearDepthxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="depth" type="int">
+</parameter>
+</method>
+<method name="glClipPlanefOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glClipPlanefOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glClipPlanexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glClipPlanexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="plane" type="int">
+</parameter>
+<parameter name="equation" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glColor4xOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="red" type="int">
+</parameter>
+<parameter name="green" type="int">
+</parameter>
+<parameter name="blue" type="int">
+</parameter>
+<parameter name="alpha" type="int">
+</parameter>
+</method>
+<method name="glCurrentPaletteMatrixOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="matrixpaletteindex" type="int">
+</parameter>
+</method>
+<method name="glDeleteFramebuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteFramebuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDeleteRenderbuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDeleteRenderbuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDepthRangefOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glDepthRangexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="zNear" type="int">
+</parameter>
+<parameter name="zFar" type="int">
+</parameter>
+</method>
+<method name="glDrawTexfOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="float">
+</parameter>
+<parameter name="y" type="float">
+</parameter>
+<parameter name="z" type="float">
+</parameter>
+<parameter name="width" type="float">
+</parameter>
+<parameter name="height" type="float">
+</parameter>
+</method>
+<method name="glDrawTexfvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDrawTexfvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glDrawTexiOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glDrawTexivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDrawTexivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glDrawTexsOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="short">
+</parameter>
+<parameter name="y" type="short">
+</parameter>
+<parameter name="z" type="short">
+</parameter>
+<parameter name="width" type="short">
+</parameter>
+<parameter name="height" type="short">
+</parameter>
+</method>
+<method name="glDrawTexsvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="short[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDrawTexsvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="java.nio.ShortBuffer">
+</parameter>
+</method>
+<method name="glDrawTexxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glDrawTexxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glDrawTexxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coords" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glEGLImageTargetRenderbufferStorageOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="image" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glEGLImageTargetTexture2DOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="image" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glFogxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glFogxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glFogxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glFramebufferRenderbufferOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="renderbuffertarget" type="int">
+</parameter>
+<parameter name="renderbuffer" type="int">
+</parameter>
+</method>
+<method name="glFramebufferTexture2DOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="textarget" type="int">
+</parameter>
+<parameter name="texture" type="int">
+</parameter>
+<parameter name="level" type="int">
+</parameter>
+</method>
+<method name="glFrustumfOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="float">
+</parameter>
+<parameter name="right" type="float">
+</parameter>
+<parameter name="bottom" type="float">
+</parameter>
+<parameter name="top" type="float">
+</parameter>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glFrustumxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="int">
+</parameter>
+<parameter name="right" type="int">
+</parameter>
+<parameter name="bottom" type="int">
+</parameter>
+<parameter name="top" type="int">
+</parameter>
+<parameter name="zNear" type="int">
+</parameter>
+<parameter name="zFar" type="int">
+</parameter>
+</method>
+<method name="glGenFramebuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenFramebuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="framebuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGenRenderbuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGenRenderbuffersOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="n" type="int">
+</parameter>
+<parameter name="renderbuffers" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGenerateMipmapOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+</method>
+<method name="glGetClipPlanefOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetClipPlanefOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetClipPlanexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetClipPlanexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="eqn" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetFixedvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetFixedvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetFramebufferAttachmentParameterivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetFramebufferAttachmentParameterivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="attachment" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetLightxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetLightxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetMaterialxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetMaterialxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetRenderbufferParameterivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetRenderbufferParameterivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexEnvxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexEnvxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="env" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexGenfvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexGenfvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glGetTexGenivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexGenivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexGenxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexGenxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glGetTexParameterxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glGetTexParameterxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glIsFramebufferOES"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="framebuffer" type="int">
+</parameter>
+</method>
+<method name="glIsRenderbufferOES"
+ return="boolean"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="renderbuffer" type="int">
+</parameter>
+</method>
+<method name="glLightModelxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glLightModelxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLightModelxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glLightxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glLightxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLightxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="light" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glLineWidthxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="width" type="int">
+</parameter>
+</method>
+<method name="glLoadMatrixxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glLoadMatrixxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glLoadPaletteFromModelViewMatrixOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="glMaterialxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glMaterialxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glMaterialxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="face" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glMatrixIndexPointerOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<method name="glMultMatrixxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glMultMatrixxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="m" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glMultiTexCoord4xOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="s" type="int">
+</parameter>
+<parameter name="t" type="int">
+</parameter>
+<parameter name="r" type="int">
+</parameter>
+<parameter name="q" type="int">
+</parameter>
+</method>
+<method name="glNormal3xOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="nx" type="int">
+</parameter>
+<parameter name="ny" type="int">
+</parameter>
+<parameter name="nz" type="int">
+</parameter>
+</method>
+<method name="glOrthofOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="float">
+</parameter>
+<parameter name="right" type="float">
+</parameter>
+<parameter name="bottom" type="float">
+</parameter>
+<parameter name="top" type="float">
+</parameter>
+<parameter name="zNear" type="float">
+</parameter>
+<parameter name="zFar" type="float">
+</parameter>
+</method>
+<method name="glOrthoxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="left" type="int">
+</parameter>
+<parameter name="right" type="int">
+</parameter>
+<parameter name="bottom" type="int">
+</parameter>
+<parameter name="top" type="int">
+</parameter>
+<parameter name="zNear" type="int">
+</parameter>
+<parameter name="zFar" type="int">
+</parameter>
+</method>
+<method name="glPointParameterxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glPointParameterxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glPointParameterxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glPointSizexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+</method>
+<method name="glPolygonOffsetxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="factor" type="int">
+</parameter>
+<parameter name="units" type="int">
+</parameter>
+</method>
+<method name="glRenderbufferStorageOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="internalformat" type="int">
+</parameter>
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="glRotatexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="angle" type="int">
+</parameter>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glSampleCoveragexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="value" type="int">
+</parameter>
+<parameter name="invert" type="boolean">
+</parameter>
+</method>
+<method name="glScalexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glTexEnvxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexEnvxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexEnvxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexGenfOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="float">
+</parameter>
+</method>
+<method name="glTexGenfvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="float[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexGenfvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.FloatBuffer">
+</parameter>
+</method>
+<method name="glTexGeniOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexGenivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexGenivOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexGenxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexGenxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexGenxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="coord" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTexParameterxOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="param" type="int">
+</parameter>
+</method>
+<method name="glTexParameterxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="int[]">
+</parameter>
+<parameter name="offset" type="int">
+</parameter>
+</method>
+<method name="glTexParameterxvOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="target" type="int">
+</parameter>
+<parameter name="pname" type="int">
+</parameter>
+<parameter name="params" type="java.nio.IntBuffer">
+</parameter>
+</method>
+<method name="glTranslatexOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="x" type="int">
+</parameter>
+<parameter name="y" type="int">
+</parameter>
+<parameter name="z" type="int">
+</parameter>
+</method>
+<method name="glWeightPointerOES"
+ return="void"
+ abstract="false"
+ native="true"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="size" type="int">
+</parameter>
+<parameter name="type" type="int">
+</parameter>
+<parameter name="stride" type="int">
+</parameter>
+<parameter name="pointer" type="java.nio.Buffer">
+</parameter>
+</method>
+<field name="GL_3DC_XY_AMD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34810"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_3DC_X_AMD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34809"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35987"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34798"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ATC_RGB_AMD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35986"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BGRA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32993"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_DST_ALPHA_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32970"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_DST_RGB_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32968"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_EQUATION_ALPHA_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34877"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_EQUATION_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32777"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_EQUATION_RGB_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32777"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_SRC_ALPHA_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32971"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BLEND_SRC_RGB_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32969"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_ACCESS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35003"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_MAPPED_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35004"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_BUFFER_MAP_POINTER_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35005"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_COLOR_ATTACHMENT0_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36064"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_CURRENT_PALETTE_MATRIX_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34883"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DECR_WRAP_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34056"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH24_STENCIL8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35056"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_ATTACHMENT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36096"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_COMPONENT16_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33189"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_COMPONENT24_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33190"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_COMPONENT32_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33191"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_DEPTH_STENCIL_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34041"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ETC1_RGB8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36196"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FIXED_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5132"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36049"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36048"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36051"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36050"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_BINDING_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36006"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_COMPLETE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36053"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36054"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36057"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36058"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36055"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FRAMEBUFFER_UNSUPPORTED_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36061"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FUNC_ADD_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32774"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FUNC_REVERSE_SUBTRACT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32779"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_FUNC_SUBTRACT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32778"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INCR_WRAP_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34055"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1286"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35742"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_INDEX_ARRAY_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34884"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34889"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34886"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34888"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34887"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MATRIX_PALETTE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34880"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34076"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_PALETTE_MATRICES_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34882"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_RENDERBUFFER_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34024"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34047"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MAX_VERTEX_UNITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34468"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MIRRORED_REPEAT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="33648"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35213"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NONE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_NORMAL_MAP_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34065"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35214"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_REFLECTION_MAP_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34066"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_ALPHA_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36179"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_BINDING_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36007"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_BLUE_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36178"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_DEPTH_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36180"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_GREEN_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36177"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_HEIGHT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36163"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36164"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36161"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_RED_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36176"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_STENCIL_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36181"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RENDERBUFFER_WIDTH_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36162"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB565_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36194"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB5_A1_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32855"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGB8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32849"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGBA4_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32854"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_RGBA8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32856"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_ATTACHMENT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36128"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_INDEX1_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36166"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_INDEX4_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36167"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_STENCIL_INDEX8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36168"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_BINDING_CUBE_MAP_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34068"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CROP_RECT_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35741"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34070"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34072"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34074"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34067"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34069"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34071"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34073"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_GEN_MODE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="9472"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_GEN_STR_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="36192"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35215"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_TEXTURE_MAX_ANISOTROPY_EXT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34046"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_UNSIGNED_INT_24_8_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34042"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34974"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WEIGHT_ARRAY_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34477"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WEIGHT_ARRAY_POINTER_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34476"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WEIGHT_ARRAY_SIZE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34475"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WEIGHT_ARRAY_STRIDE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34474"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WEIGHT_ARRAY_TYPE_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="34473"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_WRITE_ONLY_OES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="35001"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="GLException"
  extends="java.lang.RuntimeException"
  abstract="false"
@@ -74570,6 +89761,16 @@
  visibility="public"
 >
 </field>
+<field name="CPU_ABI"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="DEVICE"
  type="java.lang.String"
  transient="false"
@@ -74620,6 +89821,16 @@
  visibility="public"
 >
 </field>
+<field name="MANUFACTURER"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="MODEL"
  type="java.lang.String"
  transient="false"
@@ -74697,6 +89908,16 @@
  visibility="public"
 >
 </constructor>
+<field name="CODENAME"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="INCREMENTAL"
  type="java.lang.String"
  transient="false"
@@ -74723,6 +89944,88 @@
  volatile="false"
  static="true"
  final="true"
+ deprecated="deprecated"
+ visibility="public"
+>
+</field>
+<field name="SDK_INT"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="Build.VERSION_CODES"
+ extends="java.lang.Object"
+ abstract="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="Build.VERSION_CODES"
+ type="android.os.Build.VERSION_CODES"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<field name="BASE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="BASE_1_1"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CUPCAKE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CUR_DEVELOPMENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="10000"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DONUT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
  deprecated="not deprecated"
  visibility="public"
 >
@@ -78173,6 +93476,8 @@
 </parameter>
 <parameter name="length" type="int">
 </parameter>
+<exception name="IOException" type="java.io.IOException">
+</exception>
 </constructor>
 <method name="allowPurging"
  return="boolean"
@@ -81191,6 +96496,19 @@
  visibility="public"
 >
 </method>
+<method name="getBroadcastCookie"
+ return="java.lang.Object"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+</method>
 <method name="getBroadcastItem"
  return="E"
  abstract="false"
@@ -81228,6 +96546,21 @@
 <parameter name="callback" type="E">
 </parameter>
 </method>
+<method name="onCallbackDied"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="callback" type="E">
+</parameter>
+<parameter name="cookie" type="java.lang.Object">
+</parameter>
+</method>
 <method name="register"
  return="boolean"
  abstract="false"
@@ -81241,6 +96574,21 @@
 <parameter name="callback" type="E">
 </parameter>
 </method>
+<method name="register"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="callback" type="E">
+</parameter>
+<parameter name="cookie" type="java.lang.Object">
+</parameter>
+</method>
 <method name="unregister"
  return="boolean"
  abstract="false"
@@ -90877,6 +106225,17 @@
 <parameter name="value" type="java.lang.String">
 </parameter>
 </method>
+<field name="ACCESSIBILITY_ENABLED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;accessibility_enabled&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ADB_ENABLED"
  type="java.lang.String"
  transient="false"
@@ -90975,6 +106334,17 @@
  visibility="public"
 >
 </field>
+<field name="ENABLED_ACCESSIBILITY_SERVICES"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;enabled_accessibility_services&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="ENABLED_INPUT_METHODS"
  type="java.lang.String"
  transient="false"
@@ -91096,6 +106466,83 @@
  visibility="public"
 >
 </field>
+<field name="TTS_DEFAULT_COUNTRY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_default_country&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TTS_DEFAULT_LANG"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_default_lang&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TTS_DEFAULT_PITCH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_default_pitch&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TTS_DEFAULT_RATE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_default_rate&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TTS_DEFAULT_SYNTH"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_default_synth&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TTS_DEFAULT_VARIANT"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_default_variant&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TTS_USE_DEFAULTS"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;tts_use_defaults&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="USB_MASS_STORAGE_ENABLED"
  type="java.lang.String"
  transient="false"
@@ -92144,6 +107591,17 @@
  visibility="public"
 >
 </field>
+<field name="SHOW_WEB_SUGGESTIONS"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;show_web_suggestions&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SOUND_EFFECTS_ENABLED"
  type="java.lang.String"
  transient="false"
@@ -93329,6 +108787,605 @@
 </field>
 </class>
 </package>
+<package name="android.speech.tts"
+>
+<class name="TextToSpeech"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="TextToSpeech"
+ type="android.speech.tts.TextToSpeech"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="listener" type="android.speech.tts.TextToSpeech.OnInitListener">
+</parameter>
+</constructor>
+<method name="addEarcon"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="earcon" type="java.lang.String">
+</parameter>
+<parameter name="packagename" type="java.lang.String">
+</parameter>
+<parameter name="resourceId" type="int">
+</parameter>
+</method>
+<method name="addEarcon"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="earcon" type="java.lang.String">
+</parameter>
+<parameter name="filename" type="java.lang.String">
+</parameter>
+</method>
+<method name="addSpeech"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="text" type="java.lang.String">
+</parameter>
+<parameter name="packagename" type="java.lang.String">
+</parameter>
+<parameter name="resourceId" type="int">
+</parameter>
+</method>
+<method name="addSpeech"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="text" type="java.lang.String">
+</parameter>
+<parameter name="filename" type="java.lang.String">
+</parameter>
+</method>
+<method name="getLanguage"
+ return="java.util.Locale"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isLanguageAvailable"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="loc" type="java.util.Locale">
+</parameter>
+</method>
+<method name="isSpeaking"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="playEarcon"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="earcon" type="java.lang.String">
+</parameter>
+<parameter name="queueMode" type="int">
+</parameter>
+<parameter name="params" type="java.util.HashMap&lt;java.lang.String, java.lang.String&gt;">
+</parameter>
+</method>
+<method name="playSilence"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="durationInMs" type="long">
+</parameter>
+<parameter name="queueMode" type="int">
+</parameter>
+<parameter name="params" type="java.util.HashMap&lt;java.lang.String, java.lang.String&gt;">
+</parameter>
+</method>
+<method name="setLanguage"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="loc" type="java.util.Locale">
+</parameter>
+</method>
+<method name="setOnUtteranceCompletedListener"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.speech.tts.TextToSpeech.OnUtteranceCompletedListener">
+</parameter>
+</method>
+<method name="setPitch"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pitch" type="float">
+</parameter>
+</method>
+<method name="setSpeechRate"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="speechRate" type="float">
+</parameter>
+</method>
+<method name="shutdown"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="speak"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="text" type="java.lang.String">
+</parameter>
+<parameter name="queueMode" type="int">
+</parameter>
+<parameter name="params" type="java.util.HashMap&lt;java.lang.String, java.lang.String&gt;">
+</parameter>
+</method>
+<method name="stop"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="synthesizeToFile"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="text" type="java.lang.String">
+</parameter>
+<parameter name="params" type="java.util.HashMap&lt;java.lang.String, java.lang.String&gt;">
+</parameter>
+<parameter name="filename" type="java.lang.String">
+</parameter>
+</method>
+<field name="ACTION_TTS_QUEUE_PROCESSING_COMPLETED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.speech.tts.TTS_QUEUE_PROCESSING_COMPLETED&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ERROR"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="LANG_AVAILABLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="LANG_COUNTRY_AVAILABLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="LANG_COUNTRY_VAR_AVAILABLE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="LANG_MISSING_DATA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="LANG_NOT_SUPPORTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUEUE_ADD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="QUEUE_FLUSH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SUCCESS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="TextToSpeech.Engine"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<constructor name="TextToSpeech.Engine"
+ type="android.speech.tts.TextToSpeech.Engine"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<field name="ACTION_CHECK_TTS_DATA"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.speech.tts.engine.CHECK_TTS_DATA&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_INSTALL_TTS_DATA"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.speech.tts.engine.INSTALL_TTS_DATA&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ACTION_TTS_DATA_INSTALLED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.speech.tts.engine.TTS_DATA_INSTALLED&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CHECK_VOICE_DATA_BAD_DATA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CHECK_VOICE_DATA_FAIL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CHECK_VOICE_DATA_MISSING_DATA"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CHECK_VOICE_DATA_MISSING_VOLUME"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="CHECK_VOICE_DATA_PASS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DEFAULT_STREAM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_TTS_DATA_INSTALLED"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;dataInstalled&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_VOICE_DATA_FILES"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;dataFiles&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_VOICE_DATA_FILES_INFO"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;dataFilesInfo&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="EXTRA_VOICE_DATA_ROOT_DIRECTORY"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;dataRoot&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEY_PARAM_STREAM"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;streamType&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="KEY_PARAM_UTTERANCE_ID"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;utteranceId&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<interface name="TextToSpeech.OnInitListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onInit"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="status" type="int">
+</parameter>
+</method>
+</interface>
+<interface name="TextToSpeech.OnUtteranceCompletedListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onUtteranceCompleted"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="utteranceId" type="java.lang.String">
+</parameter>
+</method>
+</interface>
+</package>
 <package name="android.telephony"
 >
 <class name="CellLocation"
@@ -94583,6 +110640,746 @@
 >
 </field>
 </class>
+<class name="SmsManager"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="divideMessage"
+ return="java.util.ArrayList&lt;java.lang.String&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="text" type="java.lang.String">
+</parameter>
+</method>
+<method name="getDefault"
+ return="android.telephony.SmsManager"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="sendDataMessage"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="destinationAddress" type="java.lang.String">
+</parameter>
+<parameter name="scAddress" type="java.lang.String">
+</parameter>
+<parameter name="destinationPort" type="short">
+</parameter>
+<parameter name="data" type="byte[]">
+</parameter>
+<parameter name="sentIntent" type="android.app.PendingIntent">
+</parameter>
+<parameter name="deliveryIntent" type="android.app.PendingIntent">
+</parameter>
+</method>
+<method name="sendMultipartTextMessage"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="destinationAddress" type="java.lang.String">
+</parameter>
+<parameter name="scAddress" type="java.lang.String">
+</parameter>
+<parameter name="parts" type="java.util.ArrayList&lt;java.lang.String&gt;">
+</parameter>
+<parameter name="sentIntents" type="java.util.ArrayList&lt;android.app.PendingIntent&gt;">
+</parameter>
+<parameter name="deliveryIntents" type="java.util.ArrayList&lt;android.app.PendingIntent&gt;">
+</parameter>
+</method>
+<method name="sendTextMessage"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="destinationAddress" type="java.lang.String">
+</parameter>
+<parameter name="scAddress" type="java.lang.String">
+</parameter>
+<parameter name="text" type="java.lang.String">
+</parameter>
+<parameter name="sentIntent" type="android.app.PendingIntent">
+</parameter>
+<parameter name="deliveryIntent" type="android.app.PendingIntent">
+</parameter>
+</method>
+<field name="RESULT_ERROR_GENERIC_FAILURE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESULT_ERROR_NO_SERVICE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESULT_ERROR_NULL_PDU"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="RESULT_ERROR_RADIO_OFF"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="STATUS_ON_ICC_FREE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="STATUS_ON_ICC_READ"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="STATUS_ON_ICC_SENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="5"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="STATUS_ON_ICC_UNREAD"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="STATUS_ON_ICC_UNSENT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="7"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="SmsMessage"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="calculateLength"
+ return="int[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="msgBody" type="java.lang.CharSequence">
+</parameter>
+<parameter name="use7bitOnly" type="boolean">
+</parameter>
+</method>
+<method name="calculateLength"
+ return="int[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="messageBody" type="java.lang.String">
+</parameter>
+<parameter name="use7bitOnly" type="boolean">
+</parameter>
+</method>
+<method name="createFromPdu"
+ return="android.telephony.SmsMessage"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pdu" type="byte[]">
+</parameter>
+</method>
+<method name="getDisplayMessageBody"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getDisplayOriginatingAddress"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEmailBody"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEmailFrom"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getIndexOnIcc"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getIndexOnSim"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+</method>
+<method name="getMessageBody"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getMessageClass"
+ return="android.telephony.SmsMessage.MessageClass"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getOriginatingAddress"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getPdu"
+ return="byte[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getProtocolIdentifier"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getPseudoSubject"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getServiceCenterAddress"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStatus"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStatusOnIcc"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getStatusOnSim"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSubmitPdu"
+ return="android.telephony.SmsMessage.SubmitPdu"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="scAddress" type="java.lang.String">
+</parameter>
+<parameter name="destinationAddress" type="java.lang.String">
+</parameter>
+<parameter name="message" type="java.lang.String">
+</parameter>
+<parameter name="statusReportRequested" type="boolean">
+</parameter>
+</method>
+<method name="getSubmitPdu"
+ return="android.telephony.SmsMessage.SubmitPdu"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="scAddress" type="java.lang.String">
+</parameter>
+<parameter name="destinationAddress" type="java.lang.String">
+</parameter>
+<parameter name="destinationPort" type="short">
+</parameter>
+<parameter name="data" type="byte[]">
+</parameter>
+<parameter name="statusReportRequested" type="boolean">
+</parameter>
+</method>
+<method name="getTPLayerLengthForPDU"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="pdu" type="java.lang.String">
+</parameter>
+</method>
+<method name="getTimestampMillis"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getUserData"
+ return="byte[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isCphsMwiMessage"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isEmail"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isMWIClearMessage"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isMWISetMessage"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isMwiDontStore"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isReplace"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isReplyPathPresent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isStatusReportMessage"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<field name="ENCODING_16BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="3"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ENCODING_7BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ENCODING_8BIT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="ENCODING_UNKNOWN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MAX_USER_DATA_BYTES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="140"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MAX_USER_DATA_BYTES_WITH_HEADER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="134"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MAX_USER_DATA_SEPTETS"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MAX_USER_DATA_SEPTETS_WITH_HEADER"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="153"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<class name="SmsMessage.MessageClass"
+ extends="java.lang.Enum"
+ abstract="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="valueOf"
+ return="android.telephony.SmsMessage.MessageClass"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
+<method name="values"
+ return="android.telephony.SmsMessage.MessageClass[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+</class>
+<class name="SmsMessage.SubmitPdu"
+ extends="java.lang.Object"
+ abstract="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<field name="encodedMessage"
+ type="byte[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="encodedScAddress"
+ type="byte[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="TelephonyManager"
  extends="java.lang.Object"
  abstract="false"
@@ -95261,7 +112058,7 @@
  abstract="false"
  static="false"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <method name="divideMessage"
@@ -95270,8 +112067,8 @@
  native="false"
  synchronized="false"
  static="false"
- final="false"
- deprecated="not deprecated"
+ final="true"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="text" type="java.lang.String">
@@ -95283,8 +112080,8 @@
  native="false"
  synchronized="false"
  static="true"
- final="false"
- deprecated="not deprecated"
+ final="true"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95294,8 +112091,8 @@
  native="false"
  synchronized="false"
  static="false"
- final="false"
- deprecated="not deprecated"
+ final="true"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="destinationAddress" type="java.lang.String">
@@ -95317,8 +112114,8 @@
  native="false"
  synchronized="false"
  static="false"
- final="false"
- deprecated="not deprecated"
+ final="true"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="destinationAddress" type="java.lang.String">
@@ -95338,8 +112135,8 @@
  native="false"
  synchronized="false"
  static="false"
- final="false"
- deprecated="not deprecated"
+ final="true"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="destinationAddress" type="java.lang.String">
@@ -95360,7 +112157,7 @@
  value="1"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95371,7 +112168,7 @@
  value="4"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95382,7 +112179,7 @@
  value="3"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95393,7 +112190,7 @@
  value="2"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95404,7 +112201,7 @@
  value="0"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95415,7 +112212,7 @@
  value="1"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95426,7 +112223,7 @@
  value="5"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95437,7 +112234,7 @@
  value="3"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95448,7 +112245,7 @@
  value="7"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95458,14 +112255,14 @@
  abstract="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <constructor name="SmsMessage"
  type="android.telephony.gsm.SmsMessage"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </constructor>
@@ -95476,7 +112273,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="messageBody" type="java.lang.CharSequence">
@@ -95491,7 +112288,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="messageBody" type="java.lang.String">
@@ -95506,7 +112303,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="pdu" type="byte[]">
@@ -95519,7 +112316,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95530,7 +112327,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95541,7 +112338,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95552,7 +112349,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95563,7 +112360,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95574,7 +112371,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95585,7 +112382,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95596,7 +112393,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95607,7 +112404,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95618,7 +112415,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95629,7 +112426,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95640,7 +112437,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95651,7 +112448,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95662,7 +112459,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95673,7 +112470,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="scAddress" type="java.lang.String">
@@ -95692,7 +112489,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="scAddress" type="java.lang.String">
@@ -95713,7 +112510,7 @@
  synchronized="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <parameter name="pdu" type="java.lang.String">
@@ -95726,7 +112523,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95737,7 +112534,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95748,7 +112545,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95759,7 +112556,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95770,7 +112567,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95781,7 +112578,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95792,7 +112589,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95803,7 +112600,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95814,7 +112611,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95825,7 +112622,7 @@
  synchronized="false"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </method>
@@ -95836,7 +112633,7 @@
  value="3"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95847,7 +112644,7 @@
  value="1"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95858,7 +112655,7 @@
  value="2"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95869,7 +112666,7 @@
  value="0"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95880,7 +112677,7 @@
  value="140"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95891,7 +112688,7 @@
  value="160"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95902,7 +112699,7 @@
  value="153"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95912,7 +112709,7 @@
  abstract="false"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <method name="valueOf"
@@ -95945,14 +112742,14 @@
  abstract="false"
  static="true"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 <constructor name="SmsMessage.SubmitPdu"
  type="android.telephony.gsm.SmsMessage.SubmitPdu"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </constructor>
@@ -95963,7 +112760,7 @@
  value="null"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -95974,7 +112771,7 @@
  value="null"
  static="false"
  final="false"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -96299,6 +113096,53 @@
  visibility="public"
 >
 </constructor>
+<method name="assertActivityRequiresPermission"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="packageName" type="java.lang.String">
+</parameter>
+<parameter name="className" type="java.lang.String">
+</parameter>
+<parameter name="permission" type="java.lang.String">
+</parameter>
+</method>
+<method name="assertReadingContentUriRequiresPermission"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uri" type="android.net.Uri">
+</parameter>
+<parameter name="permission" type="java.lang.String">
+</parameter>
+</method>
+<method name="assertWritingContentUriRequiresPermission"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="uri" type="android.net.Uri">
+</parameter>
+<parameter name="permission" type="java.lang.String">
+</parameter>
+</method>
 <method name="getContext"
  return="android.content.Context"
  abstract="false"
@@ -99539,6 +116383,17 @@
  visibility="public"
 >
 </method>
+<method name="getApplicationInfo"
+ return="android.content.pm.ApplicationInfo"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getAssets"
  return="android.content.res.AssetManager"
  abstract="false"
@@ -100491,8 +117346,6 @@
 >
 <parameter name="packageName" type="java.lang.String">
 </parameter>
-<exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException">
-</exception>
 </method>
 <method name="getNameForUid"
  return="java.lang.String"
@@ -111700,9 +128553,33 @@
  type="android.text.style.ImageSpan"
  static="false"
  final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+<parameter name="b" type="android.graphics.Bitmap">
+</parameter>
+</constructor>
+<constructor name="ImageSpan"
+ type="android.text.style.ImageSpan"
+ static="false"
+ final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+<parameter name="b" type="android.graphics.Bitmap">
+</parameter>
+<parameter name="verticalAlignment" type="int">
+</parameter>
+</constructor>
+<constructor name="ImageSpan"
+ type="android.text.style.ImageSpan"
+ static="false"
+ final="false"
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="context" type="android.content.Context">
+</parameter>
 <parameter name="b" type="android.graphics.Bitmap">
 </parameter>
 </constructor>
@@ -111713,6 +128590,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="context" type="android.content.Context">
+</parameter>
 <parameter name="b" type="android.graphics.Bitmap">
 </parameter>
 <parameter name="verticalAlignment" type="int">
@@ -114493,7 +131372,7 @@
  value="true"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -114504,7 +131383,7 @@
  value="false"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -114515,7 +131394,7 @@
  value="false"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -114525,7 +131404,7 @@
  volatile="false"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -114600,6 +131479,50 @@
  visibility="public"
 >
 </method>
+<field name="DENSITY_DEFAULT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DENSITY_HIGH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="240"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DENSITY_LOW"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="120"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DENSITY_MEDIUM"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="160"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="density"
  type="float"
  transient="false"
@@ -114610,6 +131533,16 @@
  visibility="public"
 >
 </field>
+<field name="densityDpi"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="heightPixels"
  type="int"
  transient="false"
@@ -116649,6 +133582,28 @@
  visibility="public"
 >
 </field>
+<field name="DENSITY_DEFAULT"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="DENSITY_NONE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="65535"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="TYPE_ATTRIBUTE"
  type="int"
  transient="false"
@@ -116877,6 +133832,16 @@
  visibility="public"
 >
 </field>
+<field name="density"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="resourceId"
  type="int"
  transient="false"
@@ -122981,7 +139946,7 @@
  value="2"
  static="true"
  final="true"
- deprecated="not deprecated"
+ deprecated="deprecated"
  visibility="public"
 >
 </field>
@@ -123007,6 +139972,17 @@
  visibility="public"
 >
 </field>
+<field name="SURFACE_FROZEN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SURFACE_HIDDEN"
  type="int"
  transient="false"
@@ -123531,6 +140507,21 @@
 <parameter name="units" type="int">
 </parameter>
 </method>
+<method name="computeCurrentVelocity"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="units" type="int">
+</parameter>
+<parameter name="maxVelocity" type="float">
+</parameter>
+</method>
 <method name="getXVelocity"
  return="float"
  abstract="false"
@@ -123584,6 +140575,8 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<implements name="android.view.accessibility.AccessibilityEventSource">
+</implements>
 <implements name="android.graphics.drawable.Drawable.Callback">
 </implements>
 <implements name="android.view.KeyEvent.Callback">
@@ -123639,6 +140632,23 @@
 <parameter name="direction" type="int">
 </parameter>
 </method>
+<method name="addFocusables"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="views" type="java.util.ArrayList&lt;android.view.View&gt;">
+</parameter>
+<parameter name="direction" type="int">
+</parameter>
+<parameter name="focusableMode" type="int">
+</parameter>
+</method>
 <method name="addTouchables"
  return="void"
  abstract="false"
@@ -123674,6 +140684,19 @@
  visibility="public"
 >
 </method>
+<method name="buildDrawingCache"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="autoScale" type="boolean">
+</parameter>
+</method>
 <method name="cancelLongPress"
  return="void"
  abstract="false"
@@ -123873,6 +140896,19 @@
 <parameter name="event" type="android.view.KeyEvent">
 </parameter>
 </method>
+<method name="dispatchPopulateAccessibilityEvent"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
 <method name="dispatchRestoreInstanceState"
  return="void"
  abstract="false"
@@ -124167,6 +141203,17 @@
  visibility="protected"
 >
 </method>
+<method name="getContentDescription"
+ return="java.lang.CharSequence"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getContext"
  return="android.content.Context"
  abstract="false"
@@ -124226,6 +141273,19 @@
  visibility="public"
 >
 </method>
+<method name="getDrawingCache"
+ return="android.graphics.Bitmap"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="autoScale" type="boolean">
+</parameter>
+</method>
 <method name="getDrawingCacheBackgroundColor"
  return="int"
  abstract="false"
@@ -124752,6 +141812,19 @@
  visibility="public"
 >
 </method>
+<method name="getTag"
+ return="java.lang.Object"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="int">
+</parameter>
+</method>
 <method name="getTop"
  return="int"
  abstract="false"
@@ -126110,6 +143183,32 @@
 <parameter name="y" type="int">
 </parameter>
 </method>
+<method name="sendAccessibilityEvent"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="eventType" type="int">
+</parameter>
+</method>
+<method name="sendAccessibilityEventUnchecked"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
 <method name="setAnimation"
  return="void"
  abstract="false"
@@ -126175,6 +143274,19 @@
 <parameter name="clickable" type="boolean">
 </parameter>
 </method>
+<method name="setContentDescription"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="contentDescription" type="java.lang.CharSequence">
+</parameter>
+</method>
 <method name="setDrawingCacheBackgroundColor"
  return="void"
  abstract="false"
@@ -126651,6 +143763,21 @@
 <parameter name="tag" type="java.lang.Object">
 </parameter>
 </method>
+<method name="setTag"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="key" type="int">
+</parameter>
+<parameter name="tag" type="java.lang.Object">
+</parameter>
+</method>
 <method name="setTouchDelegate"
  return="void"
  abstract="false"
@@ -126948,6 +144075,28 @@
  visibility="protected"
 >
 </field>
+<field name="FOCUSABLES_ALL"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FOCUSABLES_TOUCH_MODE"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="FOCUSED_SELECTED_STATE_SET"
  type="int[]"
  transient="false"
@@ -127776,6 +144925,17 @@
  visibility="public"
 >
 </method>
+<method name="getMaximumFlingVelocity"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="deprecated"
+ visibility="public"
+>
+</method>
 <method name="getMinimumFlingVelocity"
  return="int"
  abstract="false"
@@ -127842,6 +145002,17 @@
  visibility="public"
 >
 </method>
+<method name="getScaledMaximumFlingVelocity"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getScaledMinimumFlingVelocity"
  return="int"
  abstract="false"
@@ -128113,6 +145284,17 @@
 <implements name="java.lang.annotation.Annotation">
 </implements>
 </class>
+<class name="ViewDebug.FlagToString"
+ extends="java.lang.Object"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="java.lang.annotation.Annotation">
+</implements>
+</class>
 <class name="ViewDebug.HierarchyTraceType"
  extends="java.lang.Enum"
  abstract="false"
@@ -131629,6 +148811,19 @@
 <parameter name="event" type="android.view.KeyEvent">
 </parameter>
 </method>
+<method name="dispatchPopulateAccessibilityEvent"
+ return="boolean"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
 <method name="dispatchTouchEvent"
  return="boolean"
  abstract="true"
@@ -133053,6 +150248,698 @@
 </field>
 </class>
 </package>
+<package name="android.view.accessibility"
+>
+<class name="AccessibilityEvent"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getAddedCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getBeforeText"
+ return="java.lang.CharSequence"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getClassName"
+ return="java.lang.CharSequence"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getContentDescription"
+ return="java.lang.CharSequence"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getCurrentItemIndex"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEventTime"
+ return="long"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getEventType"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getFromIndex"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getItemCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getPackageName"
+ return="java.lang.CharSequence"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getParcelableData"
+ return="android.os.Parcelable"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getRemovedCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getText"
+ return="java.util.List&lt;java.lang.CharSequence&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="initFromParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+</method>
+<method name="isChecked"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isEnabled"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isFullScreen"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isPassword"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="obtain"
+ return="android.view.accessibility.AccessibilityEvent"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="eventType" type="int">
+</parameter>
+</method>
+<method name="obtain"
+ return="android.view.accessibility.AccessibilityEvent"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="recycle"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="setAddedCount"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="addedCount" type="int">
+</parameter>
+</method>
+<method name="setBeforeText"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="beforeText" type="java.lang.CharSequence">
+</parameter>
+</method>
+<method name="setChecked"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="isChecked" type="boolean">
+</parameter>
+</method>
+<method name="setClassName"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="className" type="java.lang.CharSequence">
+</parameter>
+</method>
+<method name="setContentDescription"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="contentDescription" type="java.lang.CharSequence">
+</parameter>
+</method>
+<method name="setCurrentItemIndex"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="currentItemIndex" type="int">
+</parameter>
+</method>
+<method name="setEnabled"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="isEnabled" type="boolean">
+</parameter>
+</method>
+<method name="setEventTime"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="eventTime" type="long">
+</parameter>
+</method>
+<method name="setEventType"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="eventType" type="int">
+</parameter>
+</method>
+<method name="setFromIndex"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="fromIndex" type="int">
+</parameter>
+</method>
+<method name="setFullScreen"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="isFullScreen" type="boolean">
+</parameter>
+</method>
+<method name="setItemCount"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="itemCount" type="int">
+</parameter>
+</method>
+<method name="setPackageName"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="packageName" type="java.lang.CharSequence">
+</parameter>
+</method>
+<method name="setParcelableData"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcelableData" type="android.os.Parcelable">
+</parameter>
+</method>
+<method name="setPassword"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="isPassword" type="boolean">
+</parameter>
+</method>
+<method name="setRemovedCount"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="removedCount" type="int">
+</parameter>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="parcel" type="android.os.Parcel">
+</parameter>
+<parameter name="flags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="INVALID_POSITION"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="MAX_TEXT_LENGTH"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="500"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPES_ALL_MASK"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="-1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_NOTIFICATION_STATE_CHANGED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="64"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_VIEW_CLICKED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_VIEW_FOCUSED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="8"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_VIEW_LONG_CLICKED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="2"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_VIEW_SELECTED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="4"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_VIEW_TEXT_CHANGED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="TYPE_WINDOW_STATE_CHANGED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
+<interface name="AccessibilityEventSource"
+ abstract="true"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="sendAccessibilityEvent"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="eventType" type="int">
+</parameter>
+</method>
+<method name="sendAccessibilityEventUnchecked"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
+</interface>
+<class name="AccessibilityManager"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="getAccessibilityServiceList"
+ return="java.util.List&lt;android.content.pm.ServiceInfo&gt;"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="interrupt"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isEnabled"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="sendAccessibilityEvent"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="event" type="android.view.accessibility.AccessibilityEvent">
+</parameter>
+</method>
+</class>
+</package>
 <package name="android.view.animation"
 >
 <class name="AccelerateDecelerateInterpolator"
@@ -134060,6 +151947,170 @@
 </parameter>
 </method>
 </class>
+<class name="AnticipateInterpolator"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.view.animation.Interpolator">
+</implements>
+<constructor name="AnticipateInterpolator"
+ type="android.view.animation.AnticipateInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="AnticipateInterpolator"
+ type="android.view.animation.AnticipateInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="tension" type="float">
+</parameter>
+</constructor>
+<constructor name="AnticipateInterpolator"
+ type="android.view.animation.AnticipateInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+</constructor>
+<method name="getInterpolation"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="t" type="float">
+</parameter>
+</method>
+</class>
+<class name="AnticipateOvershootInterpolator"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.view.animation.Interpolator">
+</implements>
+<constructor name="AnticipateOvershootInterpolator"
+ type="android.view.animation.AnticipateOvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="AnticipateOvershootInterpolator"
+ type="android.view.animation.AnticipateOvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="tension" type="float">
+</parameter>
+</constructor>
+<constructor name="AnticipateOvershootInterpolator"
+ type="android.view.animation.AnticipateOvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="tension" type="float">
+</parameter>
+<parameter name="extraTension" type="float">
+</parameter>
+</constructor>
+<constructor name="AnticipateOvershootInterpolator"
+ type="android.view.animation.AnticipateOvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+</constructor>
+<method name="getInterpolation"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="t" type="float">
+</parameter>
+</method>
+</class>
+<class name="BounceInterpolator"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.view.animation.Interpolator">
+</implements>
+<constructor name="BounceInterpolator"
+ type="android.view.animation.BounceInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="BounceInterpolator"
+ type="android.view.animation.BounceInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+</constructor>
+<method name="getInterpolation"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="t" type="float">
+</parameter>
+</method>
+</class>
 <class name="CycleInterpolator"
  extends="java.lang.Object"
  abstract="false"
@@ -134863,6 +152914,60 @@
 </parameter>
 </method>
 </class>
+<class name="OvershootInterpolator"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.view.animation.Interpolator">
+</implements>
+<constructor name="OvershootInterpolator"
+ type="android.view.animation.OvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="OvershootInterpolator"
+ type="android.view.animation.OvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="tension" type="float">
+</parameter>
+</constructor>
+<constructor name="OvershootInterpolator"
+ type="android.view.animation.OvershootInterpolator"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="context" type="android.content.Context">
+</parameter>
+<parameter name="attrs" type="android.util.AttributeSet">
+</parameter>
+</constructor>
+<method name="getInterpolation"
+ return="float"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="t" type="float">
+</parameter>
+</method>
+</class>
 <class name="RotateAnimation"
  extends="android.view.animation.Animation"
  abstract="false"
@@ -145410,6 +163515,17 @@
  visibility="public"
 >
 </method>
+<method name="getDropDownHeight"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getDropDownWidth"
  return="int"
  abstract="false"
@@ -145633,6 +163749,19 @@
 <parameter name="id" type="int">
 </parameter>
 </method>
+<method name="setDropDownHeight"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="height" type="int">
+</parameter>
+</method>
 <method name="setDropDownWidth"
  return="void"
  abstract="false"
@@ -146191,7 +164320,7 @@
 </interface>
 <class name="CheckedTextView"
  extends="android.widget.TextView"
- abstract="true"
+ abstract="false"
  static="false"
  final="false"
  deprecated="not deprecated"
@@ -150874,6 +169003,17 @@
  visibility="public"
 >
 </method>
+<method name="getCheckItemIds"
+ return="long[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getCheckedItemPosition"
  return="int"
  abstract="false"
@@ -151854,6 +169994,17 @@
 <parameter name="yOffset" type="int">
 </parameter>
 </method>
+<method name="getSoftInputMode"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getWidth"
  return="int"
  abstract="false"
@@ -152059,6 +170210,19 @@
 <parameter name="touchable" type="boolean">
 </parameter>
 </method>
+<method name="setSoftInputMode"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="mode" type="int">
+</parameter>
+</method>
 <method name="setTouchInterceptor"
  return="void"
  abstract="false"
@@ -152183,6 +170347,21 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<parameter name="width" type="int">
+</parameter>
+<parameter name="height" type="int">
+</parameter>
+</method>
+<method name="update"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
 <parameter name="x" type="int">
 </parameter>
 <parameter name="y" type="int">
@@ -156273,6 +174452,17 @@
  deprecated="not deprecated"
  visibility="public"
 >
+<method name="getTag"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="setContent"
  return="android.widget.TabHost.TabSpec"
  abstract="false"
@@ -156340,6 +174530,19 @@
 <parameter name="icon" type="android.graphics.drawable.Drawable">
 </parameter>
 </method>
+<method name="setIndicator"
+ return="android.widget.TabHost.TabSpec"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="view" type="android.view.View">
+</parameter>
+</method>
 </class>
 <class name="TabWidget"
  extends="android.widget.LinearLayout"
@@ -156413,6 +174616,30 @@
 <parameter name="index" type="int">
 </parameter>
 </method>
+<method name="getChildTabViewAt"
+ return="android.view.View"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="index" type="int">
+</parameter>
+</method>
+<method name="getTabCount"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="onFocusChange"
  return="void"
  abstract="false"
@@ -156441,6 +174668,32 @@
 <parameter name="index" type="int">
 </parameter>
 </method>
+<method name="setDividerDrawable"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="drawable" type="android.graphics.drawable.Drawable">
+</parameter>
+</method>
+<method name="setDividerDrawable"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="resId" type="int">
+</parameter>
+</method>
 </class>
 <class name="TableLayout"
  extends="android.widget.LinearLayout"
@@ -160156,6 +178409,211 @@
 </parameter>
 </method>
 </class>
+<class name="ZoomButtonsController"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.view.View.OnTouchListener">
+</implements>
+<constructor name="ZoomButtonsController"
+ type="android.widget.ZoomButtonsController"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="ownerView" type="android.view.View">
+</parameter>
+</constructor>
+<method name="getContainer"
+ return="android.view.ViewGroup"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getZoomControls"
+ return="android.view.View"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isAutoDismissed"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="isVisible"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="onTouch"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="v" type="android.view.View">
+</parameter>
+<parameter name="event" type="android.view.MotionEvent">
+</parameter>
+</method>
+<method name="setAutoDismissed"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="autoDismiss" type="boolean">
+</parameter>
+</method>
+<method name="setFocusable"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="focusable" type="boolean">
+</parameter>
+</method>
+<method name="setOnZoomListener"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="listener" type="android.widget.ZoomButtonsController.OnZoomListener">
+</parameter>
+</method>
+<method name="setVisible"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visible" type="boolean">
+</parameter>
+</method>
+<method name="setZoomInEnabled"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="enabled" type="boolean">
+</parameter>
+</method>
+<method name="setZoomOutEnabled"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="enabled" type="boolean">
+</parameter>
+</method>
+<method name="setZoomSpeed"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="speed" type="long">
+</parameter>
+</method>
+</class>
+<interface name="ZoomButtonsController.OnZoomListener"
+ abstract="true"
+ static="true"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<method name="onVisibilityChanged"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="visible" type="boolean">
+</parameter>
+</method>
+<method name="onZoom"
+ return="void"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="zoomIn" type="boolean">
+</parameter>
+</method>
+</interface>
 <class name="ZoomControls"
  extends="android.widget.LinearLayout"
  abstract="false"
@@ -163702,7 +182160,7 @@
 <method name="startMethodTracing"
  return="void"
  abstract="false"
- native="true"
+ native="false"
  synchronized="false"
  static="true"
  final="false"
diff --git a/api/current.xml b/api/current.xml
index ea70922..3e616a4 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -1663,7 +1663,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843406"
+ value="16843407"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -2664,7 +2664,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843407"
+ value="16843408"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -4200,6 +4200,17 @@
  visibility="public"
 >
 </field>
+<field name="includeInGlobalSearch"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843374"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="indeterminate"
  type="int"
  transient="false"
@@ -6268,6 +6279,17 @@
  visibility="public"
 >
 </field>
+<field name="queryAfterZeroResults"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843394"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="radioButtonStyle"
  type="int"
  transient="false"
@@ -6422,6 +6444,17 @@
  visibility="public"
 >
 </field>
+<field name="required"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843406"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="resizeable"
  type="int"
  transient="false"
@@ -6763,6 +6796,17 @@
  visibility="public"
 >
 </field>
+<field name="searchSettingsDescription"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843402"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="searchSuggestAuthority"
  type="int"
  transient="false"
@@ -6818,6 +6862,17 @@
  visibility="public"
 >
 </field>
+<field name="searchSuggestThreshold"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843373"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="secondaryProgress"
  type="int"
  transient="false"
@@ -7449,7 +7504,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843414"
+ value="16843415"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8362,7 +8417,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843408"
+ value="16843409"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8538,7 +8593,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843412"
+ value="16843413"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8549,7 +8604,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843413"
+ value="16843414"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8560,7 +8615,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843410"
+ value="16843411"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8571,7 +8626,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843411"
+ value="16843412"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -8780,7 +8835,7 @@
  type="int"
  transient="false"
  volatile="false"
- value="16843409"
+ value="16843410"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -23440,6 +23495,17 @@
  visibility="public"
 >
 </field>
+<field name="INTENT_ACTION_WEB_SEARCH_SETTINGS"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;android.search.action.WEB_SEARCH_SETTINGS&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="MENU_KEY"
  type="char"
  transient="false"
@@ -23473,6 +23539,17 @@
  visibility="public"
 >
 </field>
+<field name="SHORTCUT_MIME_TYPE"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;vnd.android.cursor.item/vnd.android.search.suggest&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_COLUMN_FORMAT"
  type="java.lang.String"
  transient="false"
@@ -23561,6 +23638,28 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_COLUMN_SHORTCUT_ID"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;suggest_shortcut_id&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;suggest_spinner_while_refreshing&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_COLUMN_TEXT_1"
  type="java.lang.String"
  transient="false"
@@ -23594,6 +23693,17 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_NEVER_MAKE_SHORTCUT"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;_-1&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="SUGGEST_URI_PATH_QUERY"
  type="java.lang.String"
  transient="false"
@@ -23605,6 +23715,17 @@
  visibility="public"
 >
 </field>
+<field name="SUGGEST_URI_PATH_SHORTCUT"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ value="&quot;search_suggest_shortcut&quot;"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="USER_QUERY"
  type="java.lang.String"
  transient="false"
@@ -26945,6 +27066,17 @@
  visibility="public"
 >
 </method>
+<method name="isYieldAllowed"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="newAssertQuery"
  return="android.content.ContentProviderOperation.Builder"
  abstract="false"
@@ -27171,6 +27303,19 @@
 <parameter name="values" type="android.content.ContentValues">
 </parameter>
 </method>
+<method name="withYieldAllowed"
+ return="android.content.ContentProviderOperation.Builder"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="yieldAllowed" type="boolean">
+</parameter>
+</method>
 </class>
 <class name="ContentProviderResult"
  extends="java.lang.Object"
@@ -33436,7 +33581,7 @@
  type="java.lang.String"
  transient="false"
  volatile="false"
- value="&quot;android.intent.action.POWER_CONNECTED&quot;"
+ value="&quot;android.intent.action.ACTION_POWER_CONNECTED&quot;"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -33447,7 +33592,7 @@
  type="java.lang.String"
  transient="false"
  volatile="false"
- value="&quot;android.intent.action.POWER_DISCONNECTED&quot;"
+ value="&quot;android.intent.action.ACTION_POWER_DISCONNECTED&quot;"
  static="true"
  final="true"
  deprecated="not deprecated"
@@ -35712,6 +35857,39 @@
 <parameter name="cause" type="java.lang.Throwable">
 </parameter>
 </constructor>
+<constructor name="OperationApplicationException"
+ type="android.content.OperationApplicationException"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="numSuccessfulYieldPoints" type="int">
+</parameter>
+</constructor>
+<constructor name="OperationApplicationException"
+ type="android.content.OperationApplicationException"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="message" type="java.lang.String">
+</parameter>
+<parameter name="numSuccessfulYieldPoints" type="int">
+</parameter>
+</constructor>
+<method name="getNumSuccessfulYieldPoints"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 </class>
 <class name="ReceiverCallNotAllowedException"
  extends="android.util.AndroidRuntimeException"
@@ -37578,6 +37756,134 @@
 >
 </field>
 </class>
+<class name="FeatureInfo"
+ extends="java.lang.Object"
+ abstract="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<implements name="android.os.Parcelable">
+</implements>
+<constructor name="FeatureInfo"
+ type="android.content.pm.FeatureInfo"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</constructor>
+<constructor name="FeatureInfo"
+ type="android.content.pm.FeatureInfo"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="orig" type="android.content.pm.FeatureInfo">
+</parameter>
+</constructor>
+<method name="describeContents"
+ return="int"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getGlEsVersion"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="writeToParcel"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="dest" type="android.os.Parcel">
+</parameter>
+<parameter name="parcelableFlags" type="int">
+</parameter>
+</method>
+<field name="CREATOR"
+ type="android.os.Parcelable.Creator"
+ transient="false"
+ volatile="false"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="FLAG_REQUIRED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="1"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="GL_ES_VERSION_UNDEFINED"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="0"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="flags"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="name"
+ type="java.lang.String"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+<field name="reqGlEsVersion"
+ type="int"
+ transient="false"
+ volatile="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
+</class>
 <class name="InstrumentationInfo"
  extends="android.content.pm.PackageItemInfo"
  abstract="false"
@@ -37839,6 +38145,17 @@
  visibility="public"
 >
 </field>
+<field name="reqFeatures"
+ type="android.content.pm.FeatureInfo[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="requestedPermissions"
  type="java.lang.String[]"
  transient="false"
@@ -38708,6 +39025,17 @@
 <exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException">
 </exception>
 </method>
+<method name="getSystemAvailableFeatures"
+ return="android.content.pm.FeatureInfo[]"
+ abstract="true"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getSystemSharedLibraryNames"
  return="java.lang.String[]"
  abstract="true"
@@ -47774,6 +48102,19 @@
  visibility="public"
 >
 </method>
+<method name="yieldIfContendedSafely"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sleepAfterYieldDelay" type="long">
+</parameter>
+</method>
 <field name="CREATE_IF_NECESSARY"
  type="int"
  transient="false"
@@ -122919,6 +123260,17 @@
 <exception name="PackageManager.NameNotFoundException" type="android.content.pm.PackageManager.NameNotFoundException">
 </exception>
 </method>
+<method name="getSystemAvailableFeatures"
+ return="android.content.pm.FeatureInfo[]"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getSystemSharedLibraryNames"
  return="java.lang.String[]"
  abstract="false"
@@ -310011,7 +310363,7 @@
  return="javax.net.ServerSocketFactory"
  abstract="false"
  native="false"
- synchronized="false"
+ synchronized="true"
  static="true"
  final="false"
  deprecated="not deprecated"
@@ -310801,7 +311153,7 @@
  return="javax.net.SocketFactory"
  abstract="false"
  native="false"
- synchronized="false"
+ synchronized="true"
  static="true"
  final="false"
  deprecated="not deprecated"
diff --git a/cmds/stagefright/Android.mk b/cmds/stagefright/Android.mk
index 697d67a..ef67611 100644
--- a/cmds/stagefright/Android.mk
+++ b/cmds/stagefright/Android.mk
@@ -38,23 +38,3 @@
 LOCAL_MODULE:= record
 
 include $(BUILD_EXECUTABLE)
-
-################################################################################
-
-# include $(CLEAR_VARS)
-# 
-# LOCAL_SRC_FILES:=         \
-#         play.cpp
-# 
-# LOCAL_SHARED_LIBRARIES := \
-# 	libstagefright
-# 
-# LOCAL_C_INCLUDES:= \
-# 	frameworks/base/media/libstagefright \
-# 	$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include
-# 
-# LOCAL_CFLAGS += -Wno-multichar
-# 
-# LOCAL_MODULE:= play
-# 
-# include $(BUILD_EXECUTABLE)
diff --git a/cmds/stagefright/play.cpp b/cmds/stagefright/play.cpp
deleted file mode 100644
index c6e778e..0000000
--- a/cmds/stagefright/play.cpp
+++ /dev/null
@@ -1,295 +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.
- */
-
-#include <binder/ProcessState.h>
-#include <media/stagefright/OMXClient.h>
-#include <media/stagefright/TimedEventQueue.h>
-#include <media/stagefright/MPEG4Extractor.h>
-#include <media/stagefright/MediaSource.h>
-#include <media/stagefright/MetaData.h>
-#include <media/stagefright/MmapSource.h>
-#include <media/stagefright/OMXDecoder.h>
-
-using namespace android;
-
-struct NewPlayer {
-    NewPlayer();
-    ~NewPlayer();
-
-    void setSource(const char *uri);
-    void start();
-    void pause();
-    void stop();
-
-private:
-    struct PlayerEvent : public TimedEventQueue::Event {
-        PlayerEvent(NewPlayer *player,
-                    void (NewPlayer::*method)(int64_t realtime_us))
-            : mPlayer(player),
-              mMethod(method) {
-        }
-
-        virtual void fire(TimedEventQueue *queue, int64_t realtime_us) {
-            (mPlayer->*mMethod)(realtime_us);
-        }
-
-    private:
-        NewPlayer *mPlayer;
-        void (NewPlayer::*mMethod)(int64_t realtime_us);
-
-        PlayerEvent(const PlayerEvent &);
-        PlayerEvent &operator=(const PlayerEvent &);
-    };
-
-    struct PlayVideoFrameEvent : public TimedEventQueue::Event {
-        PlayVideoFrameEvent(NewPlayer *player, MediaBuffer *buffer)
-            : mPlayer(player),
-              mBuffer(buffer) {
-        }
-
-        virtual ~PlayVideoFrameEvent() {
-            if (mBuffer != NULL) {
-                mBuffer->release();
-                mBuffer = NULL;
-            }
-        }
-
-        virtual void fire(TimedEventQueue *queue, int64_t realtime_us) {
-            mPlayer->onPlayVideoFrame(realtime_us, mBuffer);
-            mBuffer = NULL;
-        }
-
-    private:
-        NewPlayer *mPlayer;
-        MediaBuffer *mBuffer;
-
-        PlayVideoFrameEvent(const PlayVideoFrameEvent &);
-        PlayVideoFrameEvent &operator=(const PlayVideoFrameEvent &);
-    };
-
-    OMXClient mClient;
-
-    MPEG4Extractor *mExtractor;
-    MediaSource *mAudioSource;
-    OMXDecoder *mAudioDecoder;
-    MediaSource *mVideoSource;
-    OMXDecoder *mVideoDecoder;
-
-    int32_t mVideoWidth, mVideoHeight;
-
-    TimedEventQueue mQueue;
-    wp<TimedEventQueue::Event> mPlayVideoFrameEvent;
-
-    int64_t mMediaTimeUsStart;
-    int64_t mRealTimeUsStart;
-
-    void setAudioSource(MediaSource *source);
-    void setVideoSource(MediaSource *source);
-
-    int64_t approxRealTime(int64_t mediatime_us) const;
-
-    void onStart(int64_t realtime_us);
-    void onPause(int64_t realtime_us);
-    void onFetchVideoFrame(int64_t realtime_us);
-    void onPlayVideoFrame(int64_t realtime_us, MediaBuffer *buffer);
-
-    static int64_t getMediaBufferTimeUs(MediaBuffer *buffer);
-
-    NewPlayer(const NewPlayer &);
-    NewPlayer &operator=(const NewPlayer &);
-};
-
-NewPlayer::NewPlayer()
-    : mExtractor(NULL),
-      mAudioSource(NULL),
-      mAudioDecoder(NULL),
-      mVideoSource(NULL),
-      mVideoDecoder(NULL),
-      mVideoWidth(0),
-      mVideoHeight(0) {
-    status_t err = mClient.connect();
-    assert(err == OK);
-}
-
-NewPlayer::~NewPlayer() {
-    stop();
-
-    mClient.disconnect();
-}
-
-void NewPlayer::setSource(const char *uri) {
-    stop();
-
-    mExtractor = new MPEG4Extractor(new MmapSource(uri));
-
-    int num_tracks;
-    status_t err = mExtractor->countTracks(&num_tracks);
-    assert(err == OK);
-
-    for (int i = 0; i < num_tracks; ++i) {
-        const sp<MetaData> meta = mExtractor->getTrackMetaData(i);
-        assert(meta != NULL);
-
-        const char *mime;
-        if (!meta->findCString(kKeyMIMEType, &mime)) {
-            continue;
-        }
-
-        bool is_audio = false;
-        bool is_acceptable = false;
-        if (!strncasecmp(mime, "audio/", 6)) {
-            is_audio = true;
-            is_acceptable = (mAudioSource == NULL);
-        } else if (!strncasecmp(mime, "video/", 6)) {
-            is_acceptable = (mVideoSource == NULL);
-        }
-
-        if (!is_acceptable) {
-            continue;
-        }
-
-        MediaSource *source;
-        if (mExtractor->getTrack(i, &source) != OK) {
-            continue;
-        }
-
-        if (is_audio) {
-            setAudioSource(source);
-        } else {
-            setVideoSource(source);
-        }
-    }
-}
-
-void NewPlayer::setAudioSource(MediaSource *source) {
-    mAudioSource = source;
-
-    sp<MetaData> meta = source->getFormat();
-
-    mAudioDecoder = OMXDecoder::Create(&mClient, meta);
-    mAudioDecoder->setSource(source);
-}
-
-void NewPlayer::setVideoSource(MediaSource *source) {
-    mVideoSource = source;
-
-    sp<MetaData> meta = source->getFormat();
-
-    bool success = meta->findInt32(kKeyWidth, &mVideoWidth);
-    assert(success);
-
-    success = meta->findInt32(kKeyHeight, &mVideoHeight);
-    assert(success);
-
-    mVideoDecoder = OMXDecoder::Create(&mClient, meta);
-    mVideoDecoder->setSource(source);
-}
-
-void NewPlayer::start() {
-    mQueue.start();
-    mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onStart));
-}
-
-void NewPlayer::pause() {
-    mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onPause));
-}
-
-void NewPlayer::stop() {
-    mQueue.stop();
-
-    delete mVideoDecoder;
-    mVideoDecoder = NULL;
-    delete mVideoSource;
-    mVideoSource = NULL;
-    mVideoWidth = mVideoHeight = 0;
-
-    delete mAudioDecoder;
-    mAudioDecoder = NULL;
-    delete mAudioSource;
-    mAudioSource = NULL;
-
-    delete mExtractor;
-    mExtractor = NULL;
-}
-
-int64_t NewPlayer::approxRealTime(int64_t mediatime_us) const {
-    return mRealTimeUsStart + (mediatime_us - mMediaTimeUsStart);
-}
-
-void NewPlayer::onStart(int64_t realtime_us) {
-    mRealTimeUsStart = TimedEventQueue::getRealTimeUs();
-
-    if (mVideoDecoder != NULL) {
-        mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onFetchVideoFrame));
-    }
-}
-
-void NewPlayer::onFetchVideoFrame(int64_t realtime_us) {
-    MediaBuffer *buffer;
-    status_t err = mVideoDecoder->read(&buffer);
-    assert(err == OK);
-
-    int64_t mediatime_us = getMediaBufferTimeUs(buffer);
-
-    sp<TimedEventQueue::Event> event = new PlayVideoFrameEvent(this, buffer);
-    mPlayVideoFrameEvent = event;
-
-    mQueue.postTimedEvent(event, approxRealTime(mediatime_us));
-}
-
-// static
-int64_t NewPlayer::getMediaBufferTimeUs(MediaBuffer *buffer) {
-    int32_t units, scale;
-    bool success =
-        buffer->meta_data()->findInt32(kKeyTimeUnits, &units);
-    assert(success);
-    success =
-        buffer->meta_data()->findInt32(kKeyTimeScale, &scale);
-    assert(success);
-
-    return (int64_t)units * 1000000 / scale;
-}
-
-void NewPlayer::onPlayVideoFrame(int64_t realtime_us, MediaBuffer *buffer) {
-    LOGI("playing video frame (mediatime: %.2f sec)\n",
-         getMediaBufferTimeUs(buffer) / 1E6);
-    fflush(stdout);
-
-    buffer->release();
-    buffer = NULL;
-
-    mQueue.postEvent(new PlayerEvent(this, &NewPlayer::onFetchVideoFrame));
-}
-
-void NewPlayer::onPause(int64_t realtime_us) {
-}
-
-int main(int argc, char **argv) {
-    android::ProcessState::self()->startThreadPool();
-
-    if (argc != 2) {
-        fprintf(stderr, "usage: %s filename\n", argv[0]);
-        return 1;
-    }
-
-    NewPlayer player;
-    player.setSource(argv[1]);
-    player.start();
-    sleep(10);
-    player.stop();
-
-    return 0;
-}
diff --git a/cmds/stagefright/record.cpp b/cmds/stagefright/record.cpp
index cf2962b..4b44761 100644
--- a/cmds/stagefright/record.cpp
+++ b/cmds/stagefright/record.cpp
@@ -14,19 +14,16 @@
  * limitations under the License.
  */
 
-#undef NDEBUG
-#include <assert.h>
-
 #include <binder/ProcessState.h>
 #include <media/stagefright/CameraSource.h>
 #include <media/stagefright/MediaBufferGroup.h>
+#include <media/stagefright/MediaDebug.h>
 #include <media/stagefright/MetaData.h>
 #include <media/stagefright/MPEG4Extractor.h>
 #include <media/stagefright/MPEG4Writer.h>
 #include <media/stagefright/MmapSource.h>
 #include <media/stagefright/OMXClient.h>
 #include <media/stagefright/OMXCodec.h>
-#include <media/stagefright/OMXDecoder.h>
 
 using namespace android;
 
@@ -87,8 +84,6 @@
     DummySource &operator=(const DummySource &);
 };
 
-#define USE_OMX_CODEC   1
-
 sp<MediaSource> createSource(const char *filename) {
     sp<MediaSource> source;
 
@@ -100,7 +95,7 @@
     sp<MetaData> meta;
     for (size_t i = 0; i < num_tracks; ++i) {
         meta = extractor->getTrackMetaData(i);
-        assert(meta.get() != NULL);
+        CHECK(meta.get() != NULL);
 
         const char *mime;
         if (!meta->findCString(kKeyMIMEType, &mime)) {
@@ -128,7 +123,7 @@
     }
 
     OMXClient client;
-    assert(client.connect() == android::OK);
+    CHECK_EQ(client.connect(), OK);
 
 #if 0
     sp<MediaSource> source = createSource(argv[1]);
@@ -140,18 +135,13 @@
 
     sp<MetaData> meta = source->getFormat();
 
-#if USE_OMX_CODEC
     sp<OMXCodec> decoder = OMXCodec::Create(
             client.interface(), meta, false /* createEncoder */, source);
-#else
-    sp<OMXDecoder> decoder = OMXDecoder::Create(
-            &client, meta, false /* createEncoder */, source);
-#endif
 
     int width, height;
     bool success = meta->findInt32(kKeyWidth, &width);
     success = success && meta->findInt32(kKeyHeight, &height);
-    assert(success);
+    CHECK(success);
 #else
     int width = 320;
     int height = 240;
@@ -164,14 +154,9 @@
     enc_meta->setInt32(kKeyWidth, width);
     enc_meta->setInt32(kKeyHeight, height);
 
-#if USE_OMX_CODEC
     sp<OMXCodec> encoder =
         OMXCodec::Create(
                 client.interface(), enc_meta, true /* createEncoder */, decoder);
-#else
-    sp<OMXDecoder> encoder = OMXDecoder::Create(
-            &client, enc_meta, true /* createEncoder */, decoder);
-#endif
 
 #if 1
     sp<MPEG4Writer> writer = new MPEG4Writer("/sdcard/output.mp4");
@@ -184,7 +169,7 @@
     encoder->start();
 
     MediaBuffer *buffer;
-    while (encoder->read(&buffer) == ::OK) {
+    while (encoder->read(&buffer) == OK) {
         printf("got an output frame of size %d\n", buffer->range_length());
 
         buffer->release();
@@ -204,7 +189,7 @@
     for (int i = 0; i < 100; ++i) {
         MediaBuffer *buffer;
         status_t err = source->read(&buffer);
-        assert(err == OK);
+        CHECK_EQ(err, OK);
 
         printf("got a frame, data=%p, size=%d\n",
                buffer->data(), buffer->range_length());
diff --git a/cmds/stagefright/stagefright.cpp b/cmds/stagefright/stagefright.cpp
index ac6fb36..54c6a0c 100644
--- a/cmds/stagefright/stagefright.cpp
+++ b/cmds/stagefright/stagefright.cpp
@@ -33,7 +33,6 @@
 #include <media/stagefright/MmapSource.h>
 #include <media/stagefright/OMXClient.h>
 #include <media/stagefright/OMXCodec.h>
-#include <media/stagefright/OMXDecoder.h>
 
 #include "JPEGSource.h"
 
@@ -41,6 +40,7 @@
 
 static long gNumRepetitions;
 static long gMaxNumFrames;  // 0 means decode all available.
+static long gReproduceBug;  // if not -1.
 
 static int64_t getNowUs() {
     struct timeval tv;
@@ -49,18 +49,11 @@
     return (int64_t)tv.tv_usec + tv.tv_sec * 1000000;
 }
 
-#define USE_OMX_CODEC   1
-
 static void playSource(OMXClient *client, const sp<MediaSource> &source) {
     sp<MetaData> meta = source->getFormat();
 
-#if !USE_OMX_CODEC
-    sp<OMXDecoder> decoder = OMXDecoder::Create(
-            client, meta, false /* createEncoder */, source);
-#else
     sp<OMXCodec> decoder = OMXCodec::Create(
             client->interface(), meta, false /* createEncoder */, source);
-#endif
 
     if (decoder == NULL) {
         return;
@@ -100,6 +93,11 @@
             if (gMaxNumFrames > 0 && numFrames == gMaxNumFrames) {
                 break;
             }
+
+            if (gReproduceBug == 1 && numFrames == 40) {
+                printf("seeking past the end now.");
+                options.setSeekTo(0x7fffffffL);
+            }
         }
 
         printf("$");
@@ -124,6 +122,7 @@
     fprintf(stderr, "       -n repetitions\n");
     fprintf(stderr, "       -l(ist) components\n");
     fprintf(stderr, "       -m max-number-of-frames-to-decode in each pass\n");
+    fprintf(stderr, "       -b bug to reproduce\n");
 }
 
 int main(int argc, char **argv) {
@@ -133,9 +132,10 @@
     bool listComponents = false;
     gNumRepetitions = 1;
     gMaxNumFrames = 0;
+    gReproduceBug = -1;
 
     int res;
-    while ((res = getopt(argc, argv, "han:lm:")) >= 0) {
+    while ((res = getopt(argc, argv, "han:lm:b:")) >= 0) {
         switch (res) {
             case 'a':
             {
@@ -151,6 +151,7 @@
 
             case 'm':
             case 'n':
+            case 'b':
             {
                 char *end;
                 long x = strtol(optarg, &end, 10);
@@ -161,8 +162,11 @@
 
                 if (res == 'n') {
                     gNumRepetitions = x;
-                } else {
+                } else if (res == 'm') {
                     gMaxNumFrames = x;
+                } else {
+                    CHECK_EQ(res, 'b');
+                    gReproduceBug = x;
                 }
                 break;
             }
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 79bd6e7..8c422a2 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -211,8 +211,10 @@
             switch (message.what) {
                 case DO_ON_ACCESSIBILITY_EVENT :
                     AccessibilityEvent event = (AccessibilityEvent) message.obj;
-                    mTarget.onAccessibilityEvent(event);
-                    event.recycle();
+                    if (event != null){
+                      mTarget.onAccessibilityEvent(event);
+                      event.recycle();
+                    }
                     return;
                 case DO_ON_INTERRUPT :
                     mTarget.onInterrupt();
diff --git a/core/java/android/accounts/AccountAuthenticatorCache.java b/core/java/android/accounts/AccountAuthenticatorCache.java
index 2f52f40..82cadd5 100644
--- a/core/java/android/accounts/AccountAuthenticatorCache.java
+++ b/core/java/android/accounts/AccountAuthenticatorCache.java
@@ -21,6 +21,7 @@
 import android.content.res.TypedArray;
 import android.content.Context;
 import android.util.AttributeSet;
+import android.text.TextUtils;
 
 /**
  * A cache of services that export the {@link IAccountAuthenticator} interface. This cache
@@ -48,6 +49,9 @@
                     com.android.internal.R.styleable.AccountAuthenticator_label, 0);
             final int iconId = sa.getResourceId(
                     com.android.internal.R.styleable.AccountAuthenticator_icon, 0);
+            if (TextUtils.isEmpty(accountType)) {
+                return null;
+            }
             return new AuthenticatorDescription(accountType, packageName, labelId, iconId);
         } finally {
             sa.recycle();
diff --git a/core/java/android/accounts/AuthenticatorDescription.java b/core/java/android/accounts/AuthenticatorDescription.java
index f896bf8..672e648 100644
--- a/core/java/android/accounts/AuthenticatorDescription.java
+++ b/core/java/android/accounts/AuthenticatorDescription.java
@@ -10,6 +10,8 @@
     final public String packageName;
 
     public AuthenticatorDescription(String type, String packageName, int labelId, int iconId) {
+        if (type == null) throw new IllegalArgumentException("type cannot be null");
+        if (packageName == null) throw new IllegalArgumentException("packageName cannot be null");
         this.type = type;
         this.packageName = packageName;
         this.labelId = labelId;
@@ -17,6 +19,7 @@
     }
 
     public static AuthenticatorDescription newKey(String type) {
+        if (type == null) throw new IllegalArgumentException("type cannot be null");
         return new AuthenticatorDescription(type);
     }
 
diff --git a/core/java/android/app/ApplicationContext.java b/core/java/android/app/ApplicationContext.java
index 7c0d1d3..487cfda 100644
--- a/core/java/android/app/ApplicationContext.java
+++ b/core/java/android/app/ApplicationContext.java
@@ -40,6 +40,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ComponentInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageInstallObserver;
@@ -1623,6 +1624,15 @@
         }
 
         @Override
+        public FeatureInfo[] getSystemAvailableFeatures() {
+            try {
+                return mPM.getSystemAvailableFeatures();
+            } catch (RemoteException e) {
+                throw new RuntimeException("Package manager has died", e);
+            }
+        }
+        
+        @Override
         public int checkPermission(String permName, String pkgName) {
             try {
                 return mPM.checkPermission(permName, pkgName);
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl
index 7741668..4d1e254 100644
--- a/core/java/android/app/IWallpaperManager.aidl
+++ b/core/java/android/app/IWallpaperManager.aidl
@@ -16,6 +16,7 @@
 
 package android.app;
 
+import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
 import android.app.IWallpaperManagerCallback;
 import android.content.ComponentName;
@@ -36,7 +37,8 @@
     /**
      * Get the wallpaper.
      */
-    ParcelFileDescriptor getWallpaper(IWallpaperManagerCallback cb);
+    ParcelFileDescriptor getWallpaper(IWallpaperManagerCallback cb,
+            out Bundle outParams);
     
     /**
      * Clear the wallpaper.
diff --git a/core/java/android/app/SearchManager.java b/core/java/android/app/SearchManager.java
index e43834a..7e6efec 100644
--- a/core/java/android/app/SearchManager.java
+++ b/core/java/android/app/SearchManager.java
@@ -52,6 +52,8 @@
  * <li><a href="#HowSearchIsInvoked">How Search Is Invoked</a>
  * <li><a href="#ImplementingSearchForYourApp">Implementing Search for Your App</a>
  * <li><a href="#Suggestions">Search Suggestions</a>
+ * <li><a href="#ExposingSearchSuggestionsToQuickSearchBox">Exposing Search Suggestions to
+ * Quick Search Box</a></li>
  * <li><a href="#ActionKeys">Action Keys</a>
  * <li><a href="#SearchabilityMetadata">Searchability Metadata</a>
  * <li><a href="#PassingSearchContext">Passing Search Context</a>
@@ -247,6 +249,12 @@
  * <li>Summaries of possible results</li>
  * </ul>
  * 
+ * <p>Once an application is configured to provide search suggestions, those same suggestions can
+ * easily be made available to the system-wide Quick Search Box, providing faster access to its
+ * content from one central prominent place. See
+ * <a href="#ExposingSearchSuggestionsToQuickSearchBox">Exposing Search Suggestions to Quick Search
+ * Box</a> for more details.
+ * 
  * <p>The primary form of suggestions is known as <i>queried suggestions</i> and is based on query
  * text that the user has already typed.  This would generally be based on partial matches in
  * the available data.  In certain situations - for example, when no query text has been typed yet -
@@ -481,6 +489,26 @@
  *             {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH}, optional otherwise.</td>
  *     </tr>
  *
+ *     <tr><th>{@link #SUGGEST_COLUMN_SHORTCUT_ID}</th>
+ *         <td>This column is used to indicate whether a search suggestion should be stored as a
+ *             shortcut, and whether it should be validated.  Shortcuts are usually formed when the
+ *             user clicks a suggestion from Quick Search Box.  If missing, the result will be
+ *             stored as a shortcut and never refreshed.  If set to
+ *             {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut.
+ *             Otherwise, the shortcut id will be used to check back for for an up to date
+ *             suggestion using {@link #SUGGEST_URI_PATH_SHORTCUT}. Read more about shortcut
+ *             refreshing in the section about
+ *             <a href="#ExposingSearchSuggestionsToQuickSearchBox">exposing search suggestions to
+ *             Quick Search Box</a>.</td>
+ *         <td align="center">No.  Only applicable to sources included in Quick Search Box.</td>
+ *     </tr>
+ *
+ *     <tr><th>{@link #SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING}</th>
+ *         <td>This column is used to specify that a spinner should be shown in lieu of an icon2
+ *             while the shortcut of this suggestion is being refreshed in Quick Search Box.</td>
+ *         <td align="center">No.  Only applicable to sources included in Quick Search Box.</td>
+ *     </tr>
+ * 
  *     <tr><th><i>Other Columns</i></th>
  *         <td>Finally, if you have defined any <a href="#ActionKeys">Action Keys</a> and you wish 
  *             for them to have suggestion-specific definitions, you'll need to define one 
@@ -554,6 +582,68 @@
  * query text is provided and the SUGGEST_COLUMN_INTENT_DATA values are not suitable for user 
  * inspection and editing.</li></ul>
  *
+ * <a name="ExposingSearchSuggestionsToQuickSearchBox"></a>
+ * <h3>Exposing Search Suggestions to Quick Search Box</h3>
+ * 
+ * <p>Once your application is set up to provide search suggestions, making them available to the
+ * globally accessable Quick Search Box is as easy as setting android:includeInGlobalSearch to
+ * "true" in your searchable metadata file.  Beyond that, here are some more details of how
+ * suggestions interact with Quick Search Box, and optional ways that you may customize suggestions
+ * for your application.
+ * 
+ * <p><b>Important Note:</b>  By default, your application will not be enabled as a suggestion
+ * provider (or "searchable item") in Quick Search Box. Once your app is installed, the user must
+ * enable it as a "searchable item" in the Search settings in order to receive your app's
+ * suggestions in Quick Search Box. You should consider how to message this to users of your app -
+ * perhaps with a note to the user the first time they launch the app about how to enable search
+ * suggestions. This gives your app a chance to be queried for suggestions as the user types into
+ * Quick Search Box, though exactly how or if your suggestions will be surfaced is decided by Quick
+ * Search Box.
+ *
+ * <p><b>Source Ranking:</b>  Once your application's search results are made available to Quick
+ * Search Box, how they surface to the user for a particular query will be determined as appropriate
+ * by Quick Search Box ranking. This may depend on how many other apps have results for that query,
+ * and how often the user has clicked on your results compared to the other apps - but there is no
+ * guarantee about how ranking will occur, or whether your app's suggestions will show at all for
+ * a given query.  In general, you can expect that providing quality results will increase the
+ * likelihood that your app's suggestions are provided in a prominent position, and apps that
+ * provide lower quality suggestions will be more likely to be ranked lower and/or not displayed.
+ *
+ * <p><b>Search Settings:</b>  Each app that is available to Quick Search Box has an entry in the
+ * system settings where the user can enable or disable the inclusion of its results.  Below the
+ * name of the application, each application may provide a brief description of what kind of
+ * information will be made available via a search settings description string pointed to by the
+ * android:searchSettingsDescription attribute in the searchable metadata. Note that the
+ * user will need to visit this settings menu to enable search suggestions for your app before your
+ * app will have a chance to provide search suggestions to Quick Search Box - see the section
+ * called "Important Note" above.
+ *
+ * <p><b>Shortcuts:</b>  Suggestions that are clicked on by the user may be automatically made into
+ * shortcuts, which are suggestions that have been copied from your provider in order to be quickly
+ * displayed without the need to re-query the original sources. Shortcutted suggestions may be
+ * displayed for the query that yielded the suggestion and for any prefixes of that query. You can
+ * request how to have your app's suggestions made into shortcuts, and whether they should be
+ * refreshed, using the {@link #SUGGEST_COLUMN_SHORTCUT_ID} column:
+ * <ul><li>Suggestions that do not include a shortcut id column will be made into shortcuts and
+ * never refreshed.  This makes sense for suggestions that refer to data that will never be changed
+ * or removed.</li>
+ * <li>Suggestions that include a shortcut id will be re-queried for a fresh version of the
+ * suggestion each time the shortcut is displayed.  The shortcut will be quickly displayed with
+ * whatever data was most recently available until the refresh query returns, after which the
+ * suggestion will be dynamically refreshed with the up to date information.  The shortcut refresh
+ * query will be sent to your suggestion provider with a uri of {@link #SUGGEST_URI_PATH_SHORTCUT}.
+ * The result should contain one suggestion using the same columns as the suggestion query, or be
+ * empty, indicating that the shortcut is no longer valid.  Shortcut ids make sense when referring
+ * to data that may change over time, such as a contact's presence status.  If a suggestion refers
+ * to data that could take longer to refresh, such as a network based refresh of a stock quote, you
+ * may include {@link #SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING} to show a progress spinner for the
+ * right hand icon until the refresh is complete.</li>
+ * <li>Finally, to prevent a suggestion from being copied into a shortcut, you may provide a
+ * shortcut id with a value of {@link #SUGGEST_NEVER_MAKE_SHORTCUT}.</li></ul>
+ * 
+ * Note that Quick Search Box will ultimately decide whether to shortcut your app's suggestions,
+ * considering these values as a strong request from your application.
+ * 
  * <a name="ActionKeys"></a>
  * <h3>Action Keys</h3>
  * 
@@ -726,7 +816,12 @@
  *                         and editing.</td>
  *                 </tr>
  *                 </tbody>
- *            </table></td>
+ *            </table>
+ *            Note that the icon of your app will likely be shown alongside any badge you specify,
+ *            to differentiate search in your app from Quick Search Box. The display of this icon
+ *            is not under the app's control.
+ *         </td>
+ *            
  *         <td align="center">No</td>
  *     </tr>
  *     
@@ -870,6 +965,47 @@
  *     </tbody>
  * </table>
  *
+ * <p>Elements of search metadata that configure search suggestions being available to Quick Search
+ * Box:
+ * <table border="2" width="85%" align="center" frame="hsides" rules="rows">
+ *
+ *     <thead>
+ *     <tr><th>Attribute</th> <th>Description</th> <th>Required?</th></tr>
+ *     </thead>
+ *
+ *     <tr><th>android:includeInGlobalSearch</th>
+ *         <td>If true, indicates the search suggestions provided by your application should be
+ *             included in the globally accessible Quick Search Box.  The attributes below are only
+ *             applicable if this is set to true.</td>
+ *         <td align="center">Yes</td>
+ *     </tr>
+ *
+ *     <tr><th>android:searchSettingsDescription</th>
+ *         <td>If provided, provides a brief description of the search suggestions that are provided
+ *             by your application to Quick Search Box, and will be displayed in the search settings
+ *             entry for your application.</td>
+ *         <td align="center">No</td>
+ *     </tr>
+ *
+ *     <tr><th>android:queryAfterZeroResults</th>
+ *         <td>Indicates whether a source should be invoked for supersets of queries it has
+ *             returned zero results for in the past.  For example, if a source returned zero
+ *             results for "bo", it would be ignored for "bob".  If set to false, this source
+ *             will only be ignored for a single session; the next time the search dialog is
+ *             invoked, all sources will be queried.  The default value is false.</td>
+ *         <td align="center">No</td>
+ *     </tr>
+ *
+ *     <tr><th>android:searchSuggestThreshold</th>
+ *         <td>Indicates the minimum number of characters needed to trigger a source from Quick
+ *             Search Box.  Only guarantees that a source will not be queried for anything shorter
+ *             than the threshold.  The default value is 0.</td>
+ *         <td align="center">No</td>
+ *     </tr>
+ *
+ *     </tbody>
+ * </table>
+ *
  * <p><b>Additional metadata for search action keys.</b>  For each action key that you would like to
  * define, you'll need to add an additional element defining that key, and using the attributes
  * discussed in <a href="#ActionKeys">Action Keys</a>.  A simple example is shown here:
@@ -1247,16 +1383,12 @@
      * result indicates the shortcut refers to a no longer valid sugggestion.
      *
      * @see #SUGGEST_COLUMN_SHORTCUT_ID
-     *
-     * @hide pending enabling of global search for third parties
      */
     public final static String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut";
     
     /**
      * MIME type for shortcut validation.  You'll use this in your suggestions content provider
      * in the getType() function.
-     *
-     * @hide pending enabling of global search for third parties
      */
     public final static String SHORTCUT_MIME_TYPE = 
             "vnd.android.cursor.item/vnd.android.search.suggest";
@@ -1269,7 +1401,7 @@
      * In addition to the columns below, the suggestion columns are used to pass along the full
      * suggestion so it can be shortcutted.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_AUTHORITY =
             "com.android.globalsearch.stats";
@@ -1277,21 +1409,21 @@
     /**
      * The path the write goes to.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_URI_PATH = "click";
 
     /**
      * The column storing the query for the click.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_COLUMN_QUERY = "query";
 
     /**
      * The column storing the component name of the application that was pivoted into.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SEARCH_CLICK_REPORT_COLUMN_COMPONENT = "component";
 
@@ -1376,7 +1508,7 @@
      *  {@link #COMPONENT_NAME_KEY}. For use by the global search system only - if other providers
      *  attempt to use this column, the value will be overwritten by global search.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide
      */
     public final static String SUGGEST_COLUMN_INTENT_COMPONENT_NAME = "suggest_intent_component";
     /**
@@ -1401,8 +1533,6 @@
      * {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut.
      * Otherwise, the shortcut id will be used to check back for an up to date suggestion using
      * {@link #SUGGEST_URI_PATH_SHORTCUT}.
-     *
-     * @hide pending reenabling of global search for third parties
      */
     public final static String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";
 
@@ -1411,7 +1541,7 @@
      * cursor item's background color if it needs a non-default background color. A non-zero value
      * indicates a valid background color to override the default.
      *
-     * @hide an implementation detail not part of the public api
+     * @hide For internal use, not part of the public API.
      */
     public final static String SUGGEST_COLUMN_BACKGROUND_COLOR = "suggest_background_color";
     
@@ -1419,8 +1549,6 @@
      * Column name for suggestions cursor. <i>Optional.</i> This column is used to specify
      * that a spinner should be shown in lieu of an icon2 while the shortcut of this suggestion
      * is being refreshed.
-     *
-     * @hide pending reenabling of global search for third parties
      */
     public final static String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING =
             "suggest_spinner_while_refreshing";
@@ -1428,8 +1556,6 @@
     /**
      * Column value for suggestion column {@link #SUGGEST_COLUMN_SHORTCUT_ID} when a suggestion
      * should not be stored as a shortcut in global search.
-     *
-     * @hide pending reenabling of global search for third parties
      */
     public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1";
 
@@ -1476,8 +1602,6 @@
      * Intent action for starting a web search provider's settings activity.
      * Web search providers should handle this intent if they have provider-specific
      * settings to implement.
-     *
-     * @hide implementation detail only relevent to web search providers
      */
     public final static String INTENT_ACTION_WEB_SEARCH_SETTINGS
             = "android.search.action.WEB_SEARCH_SETTINGS";
@@ -1492,7 +1616,8 @@
     
     /**
      * Intent action broadcasted to inform that the search settings have changed in some way.
-     * Either searchables have been enabled or disabled.
+     * Either searchables have been enabled or disabled, or a different web search provider
+     * has been chosen.
      */
     public final static String INTENT_ACTION_SEARCH_SETTINGS_CHANGED
             = "android.search.action.SETTINGS_CHANGED";
@@ -1501,7 +1626,7 @@
      * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION},
      * the search dialog will take no action.
      *
-     * @hide an implentation detail not part of the public api
+     * @hide
      */
     public final static String INTENT_ACTION_NONE = "android.search.action.ZILCH";
     
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index c5ca0a3..7669306 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -21,13 +21,18 @@
 import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.ViewRoot;
 
@@ -51,7 +56,7 @@
     
     static class Globals extends IWallpaperManagerCallback.Stub {
         private IWallpaperManager mService;
-        private Drawable mWallpaper;
+        private Bitmap mWallpaper;
         
         Globals() {
             IBinder b = ServiceManager.getService(Context.WALLPAPER_SERVICE);
@@ -69,7 +74,7 @@
             }
         }
         
-        public Drawable peekWallpaper(Context context) {
+        public Bitmap peekWallpaperBitmap(Context context) {
             synchronized (this) {
                 if (mWallpaper != null) {
                     return mWallpaper;
@@ -79,18 +84,82 @@
             }
         }
         
-        private Drawable getCurrentWallpaperLocked(Context context) {
+        private Bitmap getCurrentWallpaperLocked(Context context) {
             try {
-                ParcelFileDescriptor fd = mService.getWallpaper(this);
+                Bundle params = new Bundle();
+                ParcelFileDescriptor fd = mService.getWallpaper(this, params);
                 if (fd != null) {
-                    Bitmap bm = BitmapFactory.decodeFileDescriptor(
-                            fd.getFileDescriptor(), null, null);
-                    if (bm != null) {
-                        // For now clear the density until we figure out how
-                        // to deal with it for wallpapers.
-                        bm.setDensity(0);
-                        return new BitmapDrawable(context.getResources(), bm);
+                    int width = params.getInt("width", 0);
+                    int height = params.getInt("height", 0);
+                    
+                    if (width <= 0 || height <= 0) {
+                        // Degenerate case: no size requested, just load
+                        // bitmap as-is.
+                        Bitmap bm = BitmapFactory.decodeFileDescriptor(
+                                fd.getFileDescriptor(), null, null);
+                        try {
+                            fd.close();
+                        } catch (IOException e) {
+                        }
+                        if (bm != null) {
+                            bm.setDensity(DisplayMetrics.DENSITY_DEVICE);
+                        }
+                        return bm;
                     }
+                    
+                    // Load the bitmap with full color depth, to preserve
+                    // quality for later processing.
+                    BitmapFactory.Options options = new BitmapFactory.Options();
+                    options.inDither = false;
+                    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+                    Bitmap bm = BitmapFactory.decodeFileDescriptor(
+                            fd.getFileDescriptor(), null, options);
+                    try {
+                        fd.close();
+                    } catch (IOException e) {
+                    }
+                    if (bm == null) {
+                        return bm;
+                    }
+                    bm.setDensity(DisplayMetrics.DENSITY_DEVICE);
+                    
+                    // This is the final bitmap we want to return.
+                    Bitmap newbm = Bitmap.createBitmap(width, height,
+                            bm.getConfig());
+                    newbm.setDensity(DisplayMetrics.DENSITY_DEVICE);
+                    Canvas c = new Canvas(newbm);
+                    c.setDensity(DisplayMetrics.DENSITY_DEVICE);
+                    Rect targetRect = new Rect();
+                    targetRect.left = targetRect.top = 0;
+                    targetRect.right = bm.getWidth();
+                    targetRect.bottom = bm.getHeight();
+                    
+                    int deltaw = width - targetRect.right;
+                    int deltah = height - targetRect.bottom;
+                    
+                    if (deltaw > 0 || deltah > 0) {
+                        // We need to scale up so it covers the entire
+                        // area.
+                        float scale = 1.0f;
+                        if (deltaw > deltah) {
+                            scale = width / (float)targetRect.right;
+                        } else {
+                            scale = height / (float)targetRect.bottom;
+                        }
+                        targetRect.right = (int)(targetRect.right*scale);
+                        targetRect.bottom = (int)(targetRect.bottom*scale);
+                        deltaw = width - targetRect.right;
+                        deltah = height - targetRect.bottom;
+                    }
+                    
+                    targetRect.offset(deltaw/2, deltah/2);
+                    Paint paint = new Paint();
+                    paint.setFilterBitmap(true);
+                    paint.setDither(true);
+                    c.drawBitmap(bm, null, targetRect, paint);
+                    
+                    bm.recycle();
+                    return newbm;
                 }
             } catch (RemoteException e) {
             }
@@ -149,7 +218,8 @@
      * null pointer if these is none.
      */
     public Drawable peekDrawable() {
-        return getGlobals().peekWallpaper(mContext);
+        Bitmap bm = getGlobals().peekWallpaperBitmap(mContext);
+        return bm != null ? new BitmapDrawable(mContext.getResources(), bm) : null;
     }
 
     /**
diff --git a/core/java/android/content/AbstractThreadedSyncAdapter.java b/core/java/android/content/AbstractThreadedSyncAdapter.java
index b01fc08..d17775e 100644
--- a/core/java/android/content/AbstractThreadedSyncAdapter.java
+++ b/core/java/android/content/AbstractThreadedSyncAdapter.java
@@ -64,6 +64,10 @@
         mAutoInitialize = autoInitialize;
     }
 
+    public Context getContext() {
+        return mContext;
+    }
+
     class ISyncAdapterImpl extends ISyncAdapter.Stub {
         public void startSync(ISyncContext syncContext, String authority, Account account,
                 Bundle extras) {
@@ -105,8 +109,10 @@
             // check it and when we use it
             synchronized (mSyncThreadLock) {
                 if (mSyncThread != null
-                        && mSyncThread.mSyncContext.getISyncContext() == syncContext) {
-                    mSyncThread.interrupt();
+                        && mSyncThread.mSyncContext.getISyncContext().asBinder()
+                        == syncContext.asBinder()) {
+                    // TODO: figure out why canceling causes a hang
+//                    mSyncThread.interrupt();
                 }
             }
         }
diff --git a/core/java/android/content/ContentProviderOperation.java b/core/java/android/content/ContentProviderOperation.java
index f5a4b75..238792b 100644
--- a/core/java/android/content/ContentProviderOperation.java
+++ b/core/java/android/content/ContentProviderOperation.java
@@ -44,6 +44,7 @@
     private final Integer mExpectedCount;
     private final ContentValues mValuesBackReferences;
     private final Map<Integer, Integer> mSelectionArgsBackReferences;
+    private final boolean mYieldAllowed;
 
     /**
      * Creates a {@link ContentProviderOperation} by copying the contents of a
@@ -58,6 +59,7 @@
         mExpectedCount = builder.mExpectedCount;
         mSelectionArgsBackReferences = builder.mSelectionArgsBackReferences;
         mValuesBackReferences = builder.mValuesBackReferences;
+        mYieldAllowed = builder.mYieldAllowed;
     }
 
     private ContentProviderOperation(Parcel source) {
@@ -68,7 +70,6 @@
         mSelectionArgs = source.readInt() != 0 ? source.readStringArray() : null;
         mExpectedCount = source.readInt() != 0 ? source.readInt() : null;
         mValuesBackReferences = source.readInt() != 0
-
                 ? ContentValues.CREATOR.createFromParcel(source)
                 : null;
         mSelectionArgsBackReferences = source.readInt() != 0
@@ -80,6 +81,7 @@
                 mSelectionArgsBackReferences.put(source.readInt(), source.readInt());
             }
         }
+        mYieldAllowed = source.readInt() != 0;
     }
 
     public void writeToParcel(Parcel dest, int flags) {
@@ -125,6 +127,7 @@
         } else {
             dest.writeInt(0);
         }
+        dest.writeInt(mYieldAllowed ? 1 : 0);
     }
 
     /**
@@ -167,6 +170,10 @@
         return mUri;
     }
 
+    public boolean isYieldAllowed() {
+        return mYieldAllowed;
+    }
+
     /** @hide exposed for unit tests */
     public int getType() {
         return mType;
@@ -375,6 +382,7 @@
         private Integer mExpectedCount;
         private ContentValues mValuesBackReferences;
         private Map<Integer, Integer> mSelectionArgsBackReferences;
+        private boolean mYieldAllowed;
 
         /** Create a {@link Builder} of a given type. The uri must not be null. */
         private Builder(int type, Uri uri) {
@@ -544,5 +552,10 @@
             mExpectedCount = count;
             return this;
         }
+
+        public Builder withYieldAllowed(boolean yieldAllowed) {
+            mYieldAllowed = yieldAllowed;
+            return this;
+        }
     }
 }
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 9dedca6..59529be 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -1382,7 +1382,7 @@
      * by the system.
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    public static final String ACTION_POWER_CONNECTED = "android.intent.action.POWER_CONNECTED";
+    public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED";
     /**
      * Broadcast Action:  External power has been removed from the device.
      * This is intended for applications that wish to register specifically to this notification.
@@ -1395,13 +1395,13 @@
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_POWER_DISCONNECTED =
-            "android.intent.action.POWER_DISCONNECTED";
+            "android.intent.action.ACTION_POWER_DISCONNECTED";
     /**
      * Broadcast Action:  Device is shutting down.
      * This is broadcast when the device is being shut down (completely turned
      * off, not sleeping).  Once the broadcast is complete, the final shutdown
      * will proceed and all unsaved data lost.  Apps will not normally need
-     * to handle this, since the forground activity will be paused as well.
+     * to handle this, since the foreground activity will be paused as well.
      * 
      * <p class="note">This is a protected intent that can only be sent
      * by the system.
@@ -2128,12 +2128,14 @@
      * of activity B, then C and D will be finished and B receive the given
      * Intent, resulting in the stack now being: A, B.
      *
-     * <p>The currently running instance of task B in the above example will
+     * <p>The currently running instance of activity B in the above example will
      * either receive the new intent you are starting here in its
      * onNewIntent() method, or be itself finished and restarted with the
      * new intent.  If it has declared its launch mode to be "multiple" (the
-     * default) it will be finished and re-created; for all other launch modes
-     * it will receive the Intent in the current instance.
+     * default) and you have not set {@link #FLAG_ACTIVITY_SINGLE_TOP} in
+     * the same intent, then it will be finished and re-created; for all other
+     * launch modes or if {@link #FLAG_ACTIVITY_SINGLE_TOP} is set then this
+     * Intent will be delivered to the current instance's onNewIntent().
      *
      * <p>This launch mode can also be used to good effect in conjunction with
      * {@link #FLAG_ACTIVITY_NEW_TASK}: if used to start the root activity
diff --git a/core/java/android/content/OperationApplicationException.java b/core/java/android/content/OperationApplicationException.java
index d4101bf..2fc19bb 100644
--- a/core/java/android/content/OperationApplicationException.java
+++ b/core/java/android/content/OperationApplicationException.java
@@ -21,16 +21,34 @@
  * constraints.
  */
 public class OperationApplicationException extends Exception {
+    private final int mNumSuccessfulYieldPoints;
+
     public OperationApplicationException() {
         super();
+        mNumSuccessfulYieldPoints = 0;
     }
     public OperationApplicationException(String message) {
         super(message);
+        mNumSuccessfulYieldPoints = 0;
     }
     public OperationApplicationException(String message, Throwable cause) {
         super(message, cause);
+        mNumSuccessfulYieldPoints = 0;
     }
     public OperationApplicationException(Throwable cause) {
         super(cause);
+        mNumSuccessfulYieldPoints = 0;
+    }
+    public OperationApplicationException(int numSuccessfulYieldPoints) {
+        super();
+        mNumSuccessfulYieldPoints = numSuccessfulYieldPoints;
+    }
+    public OperationApplicationException(String message, int numSuccessfulYieldPoints) {
+        super(message);
+        mNumSuccessfulYieldPoints = numSuccessfulYieldPoints;
+    }
+
+    public int getNumSuccessfulYieldPoints() {
+        return mNumSuccessfulYieldPoints;
     }
 }
diff --git a/core/java/android/content/pm/ConfigurationInfo.java b/core/java/android/content/pm/ConfigurationInfo.java
index fb7a47f..8edd436 100755
--- a/core/java/android/content/pm/ConfigurationInfo.java
+++ b/core/java/android/content/pm/ConfigurationInfo.java
@@ -22,9 +22,9 @@
 /**
  * Information you can retrieve about hardware configuration preferences
  * declared by an application. This corresponds to information collected from the
- * AndroidManifest.xml's &lt;uses-configuration&gt; and the   &lt;uses-feature&gt;tags.
+ * AndroidManifest.xml's &lt;uses-configuration&gt; and &lt;uses-feature&gt; tags.
  */
-public class ConfigurationInfo implements Parcelable {    
+public class ConfigurationInfo implements Parcelable {
     /**
      * The kind of touch screen attached to the device.
      * One of: {@link android.content.res.Configuration#TOUCHSCREEN_NOTOUCH},
@@ -92,13 +92,13 @@
     }
 
     public String toString() {
-        return "ApplicationHardwarePreferences{"
+        return "ConfigurationInfo{"
             + Integer.toHexString(System.identityHashCode(this))
-            + ", touchscreen = " + reqTouchScreen + "}"
-            + ", inputMethod = " + reqKeyboardType + "}"
-            + ", navigation = " + reqNavigation + "}"
-            + ", reqInputFeatures = " + reqInputFeatures + "}"
-            + ", reqGlEsVersion = " + reqGlEsVersion + "}";
+            + " touchscreen = " + reqTouchScreen
+            + " inputMethod = " + reqKeyboardType
+            + " navigation = " + reqNavigation
+            + " reqInputFeatures = " + reqInputFeatures
+            + " reqGlEsVersion = " + reqGlEsVersion + "}";
     }
 
     public int describeContents() {
diff --git a/core/java/android/content/pm/FeatureInfo.aidl b/core/java/android/content/pm/FeatureInfo.aidl
new file mode 100755
index 0000000..d84a84c
--- /dev/null
+++ b/core/java/android/content/pm/FeatureInfo.aidl
@@ -0,0 +1,19 @@
+/*
+** Copyright 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.
+*/
+
+package android.content.pm;
+
+parcelable FeatureInfo;
diff --git a/core/java/android/content/pm/FeatureInfo.java b/core/java/android/content/pm/FeatureInfo.java
new file mode 100644
index 0000000..57d61fd
--- /dev/null
+++ b/core/java/android/content/pm/FeatureInfo.java
@@ -0,0 +1,101 @@
+package android.content.pm;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.Parcelable.Creator;
+
+/**
+ * A single feature that can be requested by an application. This corresponds
+ * to information collected from the
+ * AndroidManifest.xml's &lt;uses-feature&gt; tag.
+ */
+public class FeatureInfo implements Parcelable {
+    /**
+     * The name of this feature, for example "android.hardware.camera".  If
+     * this is null, then this is an OpenGL ES version feature as described
+     * in {@link #reqGlEsVersion}.
+     */
+    public String name;
+    
+    /**
+     * Default value for {@link #reqGlEsVersion};
+     */
+    public static final int GL_ES_VERSION_UNDEFINED = 0;
+    
+    /**
+     * The GLES version used by an application. The upper order 16 bits represent the
+     * major version and the lower order 16 bits the minor version.  Only valid
+     * if {@link #name} is null.
+     */
+    public int reqGlEsVersion;
+
+    /**
+     * Set on {@link #flags} if this feature has been required by the application.
+     */
+    public static final int FLAG_REQUIRED = 0x0001;
+    
+    /**
+     * Additional flags.  May be zero or more of {@link #FLAG_REQUIRED}.
+     */
+    public int flags;
+    
+    public FeatureInfo() {
+    }
+
+    public FeatureInfo(FeatureInfo orig) {
+        name = orig.name;
+        reqGlEsVersion = orig.reqGlEsVersion;
+        flags = orig.flags;
+    }
+
+    public String toString() {
+        if (name != null) {
+            return "FeatureInfo{"
+                    + Integer.toHexString(System.identityHashCode(this))
+                    + " " + name + " fl=0x" + Integer.toHexString(flags) + "}";
+        } else {
+            return "FeatureInfo{"
+                    + Integer.toHexString(System.identityHashCode(this))
+                    + " glEsVers=" + getGlEsVersion()
+                    + " fl=0x" + Integer.toHexString(flags) + "}";
+        }
+    }
+
+    public int describeContents() {
+        return 0;
+    }
+
+    public void writeToParcel(Parcel dest, int parcelableFlags) {
+        dest.writeString(name);
+        dest.writeInt(reqGlEsVersion);
+        dest.writeInt(flags);
+    }
+
+    public static final Creator<FeatureInfo> CREATOR =
+        new Creator<FeatureInfo>() {
+        public FeatureInfo createFromParcel(Parcel source) {
+            return new FeatureInfo(source);
+        }
+        public FeatureInfo[] newArray(int size) {
+            return new FeatureInfo[size];
+        }
+    };
+
+    private FeatureInfo(Parcel source) {
+        name = source.readString();
+        reqGlEsVersion = source.readInt();
+        flags = source.readInt();
+    }
+
+    /**
+     * This method extracts the major and minor version of reqGLEsVersion attribute
+     * and returns it as a string. Say reqGlEsVersion value of 0x00010002 is returned
+     * as 1.2
+     * @return String representation of the reqGlEsVersion attribute
+     */
+    public String getGlEsVersion() {
+        int major = ((reqGlEsVersion & 0xffff0000) >> 16);
+        int minor = reqGlEsVersion & 0x0000ffff;
+        return String.valueOf(major)+"."+String.valueOf(minor);
+    }
+}
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 4fc4fb9..c322951 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -22,6 +22,7 @@
 import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageInstallObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageDataObserver;
@@ -276,6 +277,12 @@
      */
     String[] getSystemSharedLibraryNames();
 
+    /**
+     * Get a list of features that are available on the
+     * system.
+     */
+    FeatureInfo[] getSystemAvailableFeatures();
+
     void enterSafeMode();
     boolean isSafeMode();
     void systemReady();
diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java
index d9326f2..a8ce889 100644
--- a/core/java/android/content/pm/PackageInfo.java
+++ b/core/java/android/content/pm/PackageInfo.java
@@ -127,6 +127,11 @@
      */
     public ConfigurationInfo[] configPreferences;
 
+    /**
+     * The features that this application has said it requires.
+     */
+    public FeatureInfo[] reqFeatures;
+    
     public PackageInfo() {
     }
 
@@ -162,6 +167,7 @@
         dest.writeStringArray(requestedPermissions);
         dest.writeTypedArray(signatures, parcelableFlags);
         dest.writeTypedArray(configPreferences, parcelableFlags);
+        dest.writeTypedArray(reqFeatures, parcelableFlags);
     }
 
     public static final Parcelable.Creator<PackageInfo> CREATOR
@@ -195,5 +201,6 @@
         requestedPermissions = source.createStringArray();
         signatures = source.createTypedArray(Signature.CREATOR);
         configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
+        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
     }
 }
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index fca005c..825eb85 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -159,8 +159,10 @@
     
     /**
      * {@link PackageInfo} flag: return information about
-     * hardware preferences
-     * {@link PackageInfo#configPreferences}
+     * hardware preferences in
+     * {@link PackageInfo#configPreferences PackageInfo.configPreferences} and
+     * requested features in {@link PackageInfo#reqFeatures
+     * PackageInfo.reqFeatures}. 
      */
     public static final int GET_CONFIGURATIONS = 0x00004000;
 
@@ -400,6 +402,14 @@
     public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16;
 
     /**
+     * Installation return code: this is passed to the {@link IPackageInstallObserver} by
+     * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
+     * the new package uses a feature that is not available.
+     * @hide
+     */
+    public static final int INSTALL_FAILED_MISSING_FEATURE = -17;
+
+    /**
      * Installation parse return code: this is passed to the {@link IPackageInstallObserver} by
      * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)}
      * if the parser was given a path that is not a file, or does not end with the expected
@@ -980,6 +990,16 @@
     public abstract String[] getSystemSharedLibraryNames();
 
     /**
+     * Get a list of features that are available on the
+     * system.
+     * 
+     * @return An array of FeatureInfo classes describing the features
+     * that are available on the system, or null if there are none(!!).
+     * 
+     */
+    public abstract FeatureInfo[] getSystemAvailableFeatures();
+
+    /**
      * Determine the best action to perform for a given Intent.  This is how
      * {@link Intent#resolveActivity} finds an activity if a class has not
      * been explicitly specified.
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 33f4b52..4399df4 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -184,9 +184,12 @@
             int N = p.configPreferences.size();
             if (N > 0) {
                 pi.configPreferences = new ConfigurationInfo[N];
-                for (int i=0; i<N; i++) {
-                    pi.configPreferences[i] = p.configPreferences.get(i);
-                }
+                p.configPreferences.toArray(pi.configPreferences);
+            }
+            N = p.reqFeatures != null ? p.reqFeatures.size() : 0;
+            if (N > 0) {
+                pi.reqFeatures = new FeatureInfo[N];
+                p.reqFeatures.toArray(pi.reqFeatures);
             }
         }
         if ((flags&PackageManager.GET_ACTIVITIES) != 0) {
@@ -268,10 +271,12 @@
             }
         }
         if ((flags&PackageManager.GET_SIGNATURES) != 0) {
-            int N = p.mSignatures.length;
-            if (N > 0) {
-                pi.signatures = new Signature[N];
-                System.arraycopy(p.mSignatures, 0, pi.signatures, 0, N);
+            if (p.mSignatures != null) {
+                int N = p.mSignatures.length;
+                if (N > 0) {
+                    pi.signatures = new Signature[N];
+                    System.arraycopy(p.mSignatures, 0, pi.signatures, 0, N);
+                }
             }
         }
         return pi;
@@ -758,14 +763,32 @@
                 XmlUtils.skipCurrentTag(parser);
 
             } else if (tagName.equals("uses-feature")) {
-                ConfigurationInfo cPref = new ConfigurationInfo();
+                FeatureInfo fi = new FeatureInfo();
                 sa = res.obtainAttributes(attrs,
                         com.android.internal.R.styleable.AndroidManifestUsesFeature);
-                cPref.reqGlEsVersion = sa.getInt(
-                        com.android.internal.R.styleable.AndroidManifestUsesFeature_glEsVersion,
-                        ConfigurationInfo.GL_ES_VERSION_UNDEFINED);
+                fi.name = sa.getNonResourceString(
+                        com.android.internal.R.styleable.AndroidManifestUsesFeature_name);
+                if (fi.name == null) {
+                    fi.reqGlEsVersion = sa.getInt(
+                            com.android.internal.R.styleable.AndroidManifestUsesFeature_glEsVersion,
+                            FeatureInfo.GL_ES_VERSION_UNDEFINED);
+                }
+                if (sa.getBoolean(
+                        com.android.internal.R.styleable.AndroidManifestUsesFeature_required,
+                        true)) {
+                    fi.flags |= FeatureInfo.FLAG_REQUIRED;
+                }
                 sa.recycle();
-                pkg.configPreferences.add(cPref);
+                if (pkg.reqFeatures == null) {
+                    pkg.reqFeatures = new ArrayList<FeatureInfo>();
+                }
+                pkg.reqFeatures.add(fi);
+                
+                if (fi.name == null) {
+                    ConfigurationInfo cPref = new ConfigurationInfo();
+                    cPref.reqGlEsVersion = fi.reqGlEsVersion;
+                    pkg.configPreferences.add(cPref);
+                }
 
                 XmlUtils.skipCurrentTag(parser);
 
@@ -944,11 +967,6 @@
             }
         }
         
-        if (pkg.usesLibraries.size() > 0) {
-            pkg.usesLibraryFiles = new String[pkg.usesLibraries.size()];
-            pkg.usesLibraries.toArray(pkg.usesLibraryFiles);
-        }
-        
         if (supportsSmallScreens < 0 || (supportsSmallScreens > 0
                 && pkg.applicationInfo.targetSdkVersion
                         >= android.os.Build.VERSION_CODES.DONUT)) {
@@ -1434,11 +1452,28 @@
 
                 String lname = sa.getNonResourceString(
                         com.android.internal.R.styleable.AndroidManifestUsesLibrary_name);
+                boolean req = sa.getBoolean(
+                        com.android.internal.R.styleable.AndroidManifestUsesLibrary_required,
+                        true);
 
                 sa.recycle();
 
-                if (lname != null && !owner.usesLibraries.contains(lname)) {
-                    owner.usesLibraries.add(lname.intern());
+                if (lname != null) {
+                    if (req) {
+                        if (owner.usesLibraries == null) {
+                            owner.usesLibraries = new ArrayList<String>();
+                        }
+                        if (!owner.usesLibraries.contains(lname)) {
+                            owner.usesLibraries.add(lname.intern());
+                        }
+                    } else {
+                        if (owner.usesOptionalLibraries == null) {
+                            owner.usesOptionalLibraries = new ArrayList<String>();
+                        }
+                        if (!owner.usesOptionalLibraries.contains(lname)) {
+                            owner.usesOptionalLibraries.add(lname.intern());
+                        }
+                    }
                 }
 
                 XmlUtils.skipCurrentTag(parser);
@@ -2416,7 +2451,8 @@
 
         public ArrayList<String> protectedBroadcasts;
         
-        public final ArrayList<String> usesLibraries = new ArrayList<String>();
+        public ArrayList<String> usesLibraries = null;
+        public ArrayList<String> usesOptionalLibraries = null;
         public String[] usesLibraryFiles = null;
 
         // We store the application meta-data independently to avoid multiple unwanted references
@@ -2464,6 +2500,11 @@
         public final ArrayList<ConfigurationInfo> configPreferences =
                 new ArrayList<ConfigurationInfo>();
 
+        /*
+         *  Applications requested features
+         */
+        public ArrayList<FeatureInfo> reqFeatures = null;
+
         public Package(String _name) {
             packageName = _name;
             applicationInfo.packageName = _name;
diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java
index 6143b6c..5d7af69d 100644
--- a/core/java/android/database/sqlite/SQLiteDatabase.java
+++ b/core/java/android/database/sqlite/SQLiteDatabase.java
@@ -519,7 +519,8 @@
      */
     @Deprecated
     public boolean yieldIfContended() {
-        return yieldIfContendedHelper(false /* do not check yielding */);
+        return yieldIfContendedHelper(false /* do not check yielding */,
+                -1 /* sleepAfterYieldDelay */);
     }
 
     /**
@@ -527,14 +528,29 @@
      * successful so far. Do not call setTransactionSuccessful before calling this. When this
      * returns a new transaction will have been created but not marked as successful. This assumes
      * that there are no nested transactions (beginTransaction has only been called once) and will
-     * through an exception if that is not the case.
+     * throw an exception if that is not the case.
      * @return true if the transaction was yielded
      */
     public boolean yieldIfContendedSafely() {
-        return yieldIfContendedHelper(true /* check yielding */);
+        return yieldIfContendedHelper(true /* check yielding */, -1 /* sleepAfterYieldDelay*/);
     }
 
-    private boolean yieldIfContendedHelper(boolean checkFullyYielded) {
+    /**
+     * Temporarily end the transaction to let other threads run. The transaction is assumed to be
+     * successful so far. Do not call setTransactionSuccessful before calling this. When this
+     * returns a new transaction will have been created but not marked as successful. This assumes
+     * that there are no nested transactions (beginTransaction has only been called once) and will
+     * throw an exception if that is not the case.
+     * @param sleepAfterYieldDelay if > 0, sleep this long before starting a new transaction if
+     *   the lock was actually yielded. This will allow other background threads to make some
+     *   more progress than they would if we started the transaction immediately.
+     * @return true if the transaction was yielded
+     */
+    public boolean yieldIfContendedSafely(long sleepAfterYieldDelay) {
+        return yieldIfContendedHelper(true /* check yielding */, sleepAfterYieldDelay);
+    }
+
+    private boolean yieldIfContendedHelper(boolean checkFullyYielded, long sleepAfterYieldDelay) {
         if (mLock.getQueueLength() == 0) {
             // Reset the lock acquire time since we know that the thread was willing to yield
             // the lock at this time.
@@ -550,6 +566,13 @@
                         "Db locked more than once. yielfIfContended cannot yield");
             }
         }
+        if (sleepAfterYieldDelay > 0) {
+            try {
+                Thread.sleep(sleepAfterYieldDelay);
+            } catch (InterruptedException e) {
+                Thread.interrupted();
+            }
+        }
         beginTransaction();
         return true;
     }
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 53b2aa8..e48f539 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -20,6 +20,7 @@
 import android.content.ContentProviderClient;
 import android.content.ContentProviderOperation;
 import android.content.ContentResolver;
+import android.content.ContentUris;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -27,7 +28,6 @@
 import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.os.RemoteException;
-import android.provider.ContactsContract.CommonDataKinds.GroupMembership;
 import android.text.TextUtils;
 
 import java.io.ByteArrayInputStream;
@@ -216,6 +216,12 @@
          * <P>Type: INTEGER</P>
          */
         public static final String HAS_PHONE_NUMBER = "has_phone_number";
+
+        /**
+         * An opaque value that contains hints on how to find the contact if
+         * its row id changed as a result of a sync or aggregation.
+         */
+        public static final String LOOKUP_KEY = "lookup";
     }
 
     /**
@@ -235,40 +241,102 @@
         public static final Uri CONTENT_URI = Uri.withAppendedPath(AUTHORITY_URI, "contacts");
 
         /**
+         * A content:// style URI for this table that should be used to create
+         * shortcuts or otherwise create long-term links to contacts. This URI
+         * should always be followed by a "/" and the contact's {@link #LOOKUP_KEY}.
+         * It can optionally also have a "/" and last known contact ID appended after
+         * that. This "complete" format is an important optimization and is highly recommended.
+         * <p>
+         * As long as the contact's row ID remains the same, this URI is
+         * equivalent to {@link #CONTENT_URI}. If the contact's row ID changes
+         * as a result of a sync or aggregation, this URI will look up the
+         * contact using indirect information (sync IDs or constituent raw
+         * contacts).
+         * <p>
+         * Lookup key should be appended unencoded - it is stored in the encoded
+         * form, ready for use in a URI.
+         */
+        public static final Uri CONTENT_LOOKUP_URI = Uri.withAppendedPath(CONTENT_URI,
+                "lookup");
+
+        /**
+         * Computes a complete lookup URI (see {@link #CONTENT_LOOKUP_URI}).
+         * Pass either a basic content URI with a contact ID to obtain an
+         * equivalent lookup URI. Pass a possibly stale lookup URI to get a fresh
+         * lookup URI for the same contact.
+         * <p>
+         * Returns null if the contact cannot be found.
+         */
+        public static Uri getLookupUri(ContentResolver resolver, Uri contentUri) {
+            Cursor c = resolver.query(contentUri,
+                    new String[]{Contacts.LOOKUP_KEY, Contacts._ID}, null, null, null);
+            if (c == null) {
+                return null;
+            }
+
+            try {
+                if (c.moveToFirst()) {
+                    String lookupKey = c.getString(0);
+                    long contactId = c.getLong(1);
+                    return ContentUris.withAppendedId(
+                            Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey),
+                            contactId);
+                }
+            } finally {
+                c.close();
+            }
+            return null;
+        }
+
+        /**
          * The content:// style URI for this table joined with useful data from
          * {@link Data}.
+         *
+         * @deprecated Please use plain CONTENT_URI for the same result
          */
-        public static final Uri CONTENT_SUMMARY_URI = Uri.withAppendedPath(AUTHORITY_URI,
-                "contacts_summary");
+        @Deprecated
+        public static final Uri CONTENT_SUMMARY_URI = CONTENT_URI;
 
         /**
          * The content:// style URI used for "type-to-filter" functionality on the
-         * {@link #CONTENT_SUMMARY_URI} URI. The filter string will be used to match
+         * {@link #CONTENT_URI} URI. The filter string will be used to match
          * various parts of the contact name. The filter argument should be passed
          * as an additional path segment after this URI.
          */
-        public static final Uri CONTENT_SUMMARY_FILTER_URI = Uri.withAppendedPath(
-                CONTENT_SUMMARY_URI, "filter");
+        public static final Uri CONTENT_FILTER_URI = Uri.withAppendedPath(
+                CONTENT_URI, "filter");
+
+        @Deprecated
+        public static final Uri CONTENT_SUMMARY_FILTER_URI = CONTENT_FILTER_URI;
 
         /**
          * The content:// style URI for this table joined with useful data from
          * {@link Data}, filtered to include only starred contacts
          * and the most frequently contacted contacts.
          */
-        public static final Uri CONTENT_SUMMARY_STREQUENT_URI = Uri.withAppendedPath(
-                CONTENT_SUMMARY_URI, "strequent");
+        public static final Uri CONTENT_STREQUENT_URI = Uri.withAppendedPath(
+                CONTENT_URI, "strequent");
+
+        @Deprecated
+        public static final Uri CONTENT_SUMMARY_STREQUENT_URI = CONTENT_STREQUENT_URI;
 
         /**
          * The content:// style URI used for "type-to-filter" functionality on the
-         * {@link #CONTENT_SUMMARY_STREQUENT_URI} URI. The filter string will be used to match
+         * {@link #CONTENT_STREQUENT_URI} URI. The filter string will be used to match
          * various parts of the contact name. The filter argument should be passed
          * as an additional path segment after this URI.
          */
-        public static final Uri CONTENT_SUMMARY_STREQUENT_FILTER_URI = Uri.withAppendedPath(
-                CONTENT_SUMMARY_STREQUENT_URI, "filter");
+        public static final Uri CONTENT_STREQUENT_FILTER_URI = Uri.withAppendedPath(
+                CONTENT_STREQUENT_URI, "filter");
 
-        public static final Uri CONTENT_SUMMARY_GROUP_URI = Uri.withAppendedPath(
-                CONTENT_SUMMARY_URI, "group");
+        @Deprecated
+        public static final Uri CONTENT_SUMMARY_STREQUENT_FILTER_URI = CONTENT_STREQUENT_FILTER_URI;
+
+        public static final Uri CONTENT_GROUP_URI = Uri.withAppendedPath(
+                CONTENT_URI, "group");
+
+        @Deprecated
+        public static final Uri CONTENT_SUMMARY_GROUP_URI = CONTENT_GROUP_URI;
         /**
          * The MIME type of {@link #CONTENT_URI} providing a directory of
          * people.
@@ -1029,6 +1097,7 @@
             public static final int TYPE_HOME = 1;
             public static final int TYPE_WORK = 2;
             public static final int TYPE_OTHER = 3;
+            public static final int TYPE_MOBILE = 4;
 
             /**
              * The display name for the email address
@@ -1633,7 +1702,7 @@
 
         /**
          * Read-only count of {@link Contacts} from a specific source that have
-         * no {@link GroupMembership} entries.
+         * no {@link CommonDataKinds.GroupMembership} entries.
          * <p>
          * Type: INTEGER
          */
@@ -1641,7 +1710,7 @@
 
         /**
          * Read-only count of {@link Contacts} from a specific source that have
-         * no {@link GroupMembership} entries, and also have phone numbers.
+         * no {@link CommonDataKinds.GroupMembership} entries, and also have phone numbers.
          * <p>
          * Type: INTEGER
          */
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 9e3008b..77d1740 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2968,15 +2968,33 @@
                 "gtalk_youtube_video_url";
 
         /**
+         * Chat message lifetime (for pruning old chat messages).
+         */
+        public static final String GTALK_CHAT_MESSAGE_LIFETIME =
+                "gtalk_chat_message_lifetime";
+
+        /**
+         * OTR message lifetime (for pruning old otr messages).
+         */
+        public static final String GTALK_OTR_MESSAGE_LIFETIME =
+                "gtalk_otr_message_lifetime";
+
+        /**
+         * Chat expiration time, i.e., time since last message in the chat (for pruning old chats).
+         */
+        public static final String GTALK_CHAT_EXPIRATION_TIME =
+                "gtalk_chat_expiration_time";
+
+        /**
          * This is the url for getting the app token for server-to-device push messaging.
          */
         public static final String PUSH_MESSAGING_REGISTRATION_URL =
                 "push_messaging_registration_url";
 
-	/**
-	 * Use android://&lt;it&gt; routing infos for Google Sync Server subcriptions.
-	 */
-	public static final String GSYNC_USE_RMQ2_ROUTING_INFO = "gsync_use_rmq2_routing_info";
+        /**
+         * Use android://&lt;it&gt; routing infos for Google Sync Server subcriptions.
+         */
+        public static final String GSYNC_USE_RMQ2_ROUTING_INFO = "gsync_use_rmq2_routing_info";
 
         /**
          * Enable use of ssl session caching.
diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java
index a2add73..c615957 100644
--- a/core/java/android/server/search/Searchables.java
+++ b/core/java/android/server/search/Searchables.java
@@ -26,7 +26,6 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
-import android.content.pm.ApplicationInfo;
 import android.os.Bundle;
 import android.util.Log;
 
@@ -231,16 +230,14 @@
                         : webSearchInfoList.get(ii - search_count);
                 ActivityInfo ai = info.activityInfo;
                 // Check first to avoid duplicate entries.
-                if (newSearchablesMap.containsKey(new ComponentName(ai.packageName, ai.name))) {
-                    continue;
-                }
-                SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai);
-                if (searchable != null) {
-                    newSearchablesList.add(searchable);
-                    newSearchablesMap.put(searchable.getSearchActivity(), searchable);
-                    if (searchable.shouldIncludeInGlobalSearch()
-                            && isWhitelistedForGlobalSearch(pm, searchable.getSearchActivity())) {
-                        newSearchablesInGlobalSearchList.add(searchable);
+                if (newSearchablesMap.get(new ComponentName(ai.packageName, ai.name)) == null) {
+                    SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai);
+                    if (searchable != null) {
+                        newSearchablesList.add(searchable);
+                        newSearchablesMap.put(searchable.getSearchActivity(), searchable);
+                        if (searchable.shouldIncludeInGlobalSearch()) {
+                            newSearchablesInGlobalSearchList.add(searchable);
+                        }
                     }
                 }
             }
@@ -292,25 +289,6 @@
     }
 
     /**
-     * Determines whether an activity may be included in quick search box.  For now this is
-     * restricted to system installed apps.
-     *
-     * TODO: remove when we are ready to enable global search for third party applications.
-     *
-     * @param pm The package manager.
-     * @param searchActivity The component of the search activity.
-     * @return True if the search activity may include its search suggestions in quick search box.
-     */
-    private boolean isWhitelistedForGlobalSearch(PackageManager pm, ComponentName searchActivity) {
-        try {
-            ActivityInfo ai = pm.getActivityInfo(searchActivity, 0);
-            return ((ai.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
-        } catch (PackageManager.NameNotFoundException e) {
-            return false;
-        }
-    }
-
-    /**
      * Checks if the given activity component is present in the system and if so makes it the
      * preferred activity for handling ACTION_WEB_SEARCH.
      * @param component Name of the component to check and set as preferred.
diff --git a/core/java/android/service/wallpaper/IWallpaperEngine.aidl b/core/java/android/service/wallpaper/IWallpaperEngine.aidl
index 9586e34..bbd9dde 100644
--- a/core/java/android/service/wallpaper/IWallpaperEngine.aidl
+++ b/core/java/android/service/wallpaper/IWallpaperEngine.aidl
@@ -20,5 +20,7 @@
  * @hide
  */
 oneway interface IWallpaperEngine {
+    void setDesiredSize(int width, int height);
+    void setVisibility(boolean visible);
 	void destroy();
 }
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 629e97e..2cdfc66 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -55,6 +55,7 @@
     
     private static final int DO_ATTACH = 10;
     private static final int DO_DETACH = 20;
+    private static final int DO_SET_DESIRED_SIZE = 30;
     
     private static final int MSG_UPDATE_SURFACE = 10000;
     private static final int MSG_VISIBILITY_CHANGED = 10010;
@@ -78,6 +79,8 @@
         IBinder mWindowToken;
         
         boolean mInitializing = true;
+        boolean mVisible;
+        boolean mDestroyed;
         
         // Current window state.
         boolean mCreated;
@@ -129,8 +132,15 @@
                 return mIsCreating;
             }
 
+            @Override
+            public void setFixedSize(int width, int height) {
+                throw new UnsupportedOperationException(
+                        "Wallpapers currently only support sizing from layout");
+            }
+            
             public void setKeepScreenOn(boolean screenOn) {
-                // Ignore.
+                throw new UnsupportedOperationException(
+                        "Wallpapers do not support keep screen on");
             }
             
         };
@@ -166,9 +176,13 @@
             
             @Override
             public void dispatchAppVisibility(boolean visible) {
-                Message msg = mCaller.obtainMessageI(MSG_VISIBILITY_CHANGED,
-                        visible ? 1 : 0);
-                mCaller.sendMessage(msg);
+                // We don't do this in preview mode; we'll let the preview
+                // activity tell us when to run.
+                if (!mIWallpaperEngine.mIsPreview) {
+                    Message msg = mCaller.obtainMessageI(MSG_VISIBILITY_CHANGED,
+                            visible ? 1 : 0);
+                    mCaller.sendMessage(msg);
+                }
             }
 
             @Override
@@ -212,6 +226,15 @@
         }
         
         /**
+         * Return whether the wallpaper is currently visible to the user,
+         * this is the last value supplied to
+         * {@link #onVisibilityChanged(boolean)}.
+         */
+        public boolean isVisible() {
+            return mVisible;
+        }
+        
+        /**
          * Returns true if this engine is running in preview mode -- that is,
          * it is being shown to the user before they select it as the actual
          * wallpaper.
@@ -280,6 +303,13 @@
         }
         
         /**
+         * Called when an application has changed the desired virtual size of
+         * the wallpaper.
+         */
+        public void onDesiredSizeChanged(int desiredWidth, int desiredHeight) {
+        }
+        
+        /**
          * Convenience for {@link SurfaceHolder.Callback#surfaceChanged
          * SurfaceHolder.Callback.surfaceChanged()}.
          */
@@ -301,6 +331,10 @@
         }
 
         void updateSurface(boolean forceRelayout, boolean forceReport) {
+            if (mDestroyed) {
+                Log.w(TAG, "Ignoring updateSurface: destroyed");
+            }
+            
             int myWidth = mSurfaceHolder.getRequestedWidth();
             if (myWidth <= 0) myWidth = ViewGroup.LayoutParams.FILL_PARENT;
             int myHeight = mSurfaceHolder.getRequestedHeight();
@@ -314,7 +348,7 @@
             if (forceRelayout || creating || formatChanged || sizeChanged
                     || typeChanged || flagsChanged) {
 
-                if (DEBUG) Log.i(TAG, "Changes: creating=" + creating
+                if (DEBUG) Log.v(TAG, "Changes: creating=" + creating
                         + " format=" + formatChanged + " size=" + sizeChanged);
 
                 try {
@@ -343,6 +377,8 @@
                     if (!mCreated) {
                         mLayout.type = mIWallpaperEngine.mWindowType;
                         mLayout.gravity = Gravity.LEFT|Gravity.TOP;
+                        mLayout.windowAnimations =
+                                com.android.internal.R.style.Animation_Wallpaper;
                         mSession.add(mWindow, mLayout, View.VISIBLE, mContentInsets);
                     }
                     
@@ -354,7 +390,7 @@
                             View.VISIBLE, false, mWinFrame, mContentInsets,
                             mVisibleInsets, mSurfaceHolder.mSurface);
 
-                    if (DEBUG) Log.i(TAG, "New surface: " + mSurfaceHolder.mSurface
+                    if (DEBUG) Log.v(TAG, "New surface: " + mSurfaceHolder.mSurface
                             + ", frame=" + mWinFrame);
                     
                     int w = mWinFrame.width();
@@ -384,6 +420,8 @@
 
                         if (!mCreated) {
                             mIsCreating = true;
+                            if (DEBUG) Log.v(TAG, "onSurfaceCreated("
+                                    + mSurfaceHolder + "): " + this);
                             onSurfaceCreated(mSurfaceHolder);
                             if (callbacks != null) {
                                 for (SurfaceHolder.Callback c : callbacks) {
@@ -399,6 +437,10 @@
                                         + " formatChanged=" + formatChanged
                                         + " sizeChanged=" + sizeChanged, e);
                             }
+                            if (DEBUG) Log.v(TAG, "onSurfaceChanged("
+                                    + mSurfaceHolder + ", " + mFormat
+                                    + ", " + mCurWidth + ", " + mCurHeight
+                                    + "): " + this);
                             onSurfaceChanged(mSurfaceHolder, mFormat,
                                     mCurWidth, mCurHeight);
                             if (callbacks != null) {
@@ -425,26 +467,73 @@
         
         void attach(IWallpaperEngineWrapper wrapper) {
             if (DEBUG) Log.v(TAG, "attach: " + this + " wrapper=" + wrapper);
+            if (mDestroyed) {
+                return;
+            }
+            
             mIWallpaperEngine = wrapper;
             mCaller = wrapper.mCaller;
             mConnection = wrapper.mConnection;
             mWindowToken = wrapper.mWindowToken;
-            // XXX temp -- should run in size from layout (screen) mode.
-            mSurfaceHolder.setFixedSize(mIWallpaperEngine.mReqWidth,
-                    mIWallpaperEngine.mReqHeight);
-            //mSurfaceHolder.setSizeFromLayout();
+            mSurfaceHolder.setSizeFromLayout();
             mInitializing = true;
             mSession = ViewRoot.getWindowSession(getMainLooper());
             mWindow.setSession(mSession);
             
+            if (DEBUG) Log.v(TAG, "onCreate(): " + this);
             onCreate(mSurfaceHolder);
             
             mInitializing = false;
             updateSurface(false, false);
         }
         
+        void doDesiredSizeChanged(int desiredWidth, int desiredHeight) {
+            if (!mDestroyed) {
+                if (DEBUG) Log.v(TAG, "onDesiredSizeChanged("
+                        + desiredWidth + "," + desiredHeight + "): " + this);
+                onDesiredSizeChanged(desiredWidth, desiredHeight);
+            }
+        }
+        
+        void doVisibilityChanged(boolean visible) {
+            if (!mDestroyed) {
+                mVisible = visible;
+                if (DEBUG) Log.v(TAG, "onVisibilityChanged(" + visible
+                        + "): " + this);
+                onVisibilityChanged(visible);
+            }
+        }
+        
+        void doOffsetsChanged() {
+            if (mDestroyed) {
+                return;
+            }
+            
+            float xOffset;
+            float yOffset;
+            synchronized (mLock) {
+                xOffset = mPendingXOffset;
+                yOffset = mPendingYOffset;
+                mOffsetMessageEnqueued = false;
+            }
+            if (DEBUG) Log.v(TAG, "Offsets change in " + this
+                    + ": " + xOffset + "," + yOffset);
+            final int availw = mIWallpaperEngine.mReqWidth-mCurWidth;
+            final int xPixels = availw > 0 ? -(int)(availw*xOffset+.5f) : 0;
+            final int availh = mIWallpaperEngine.mReqHeight-mCurHeight;
+            final int yPixels = availh > 0 ? -(int)(availh*yOffset+.5f) : 0;
+            onOffsetsChanged(xOffset, yOffset, xPixels, yPixels);
+        }
+        
         void detach() {
-            onDestroy();
+            mDestroyed = true;
+            
+            if (mVisible) {
+                mVisible = false;
+                if (DEBUG) Log.v(TAG, "onVisibilityChanged(false): " + this);
+                onVisibilityChanged(false);
+            }
+            
             if (mDestroyReportNeeded) {
                 mDestroyReportNeeded = false;
                 SurfaceHolder.Callback callbacks[];
@@ -456,7 +545,14 @@
                 for (SurfaceHolder.Callback c : callbacks) {
                     c.surfaceDestroyed(mSurfaceHolder);
                 }
+                if (DEBUG) Log.v(TAG, "onSurfaceDestroyed("
+                        + mSurfaceHolder + "): " + this);
+                onSurfaceDestroyed(mSurfaceHolder);
             }
+            
+            if (DEBUG) Log.v(TAG, "onDestroy(): " + this);
+            onDestroy();
+            
             if (mCreated) {
                 try {
                     mSession.remove(mWindow);
@@ -492,16 +588,21 @@
             mReqWidth = reqWidth;
             mReqHeight = reqHeight;
             
-            try {
-                conn.attachEngine(this);
-            } catch (RemoteException e) {
-                destroy();
-            }
-            
             Message msg = mCaller.obtainMessage(DO_ATTACH);
             mCaller.sendMessage(msg);
         }
         
+        public void setDesiredSize(int width, int height) {
+            Message msg = mCaller.obtainMessageII(DO_SET_DESIRED_SIZE, width, height);
+            mCaller.sendMessage(msg);
+        }
+        
+        public void setVisibility(boolean visible) {
+            Message msg = mCaller.obtainMessageI(MSG_VISIBILITY_CHANGED,
+                    visible ? 1 : 0);
+            mCaller.sendMessage(msg);
+        }
+
         public void destroy() {
             Message msg = mCaller.obtainMessage(DO_DETACH);
             mCaller.sendMessage(msg);
@@ -510,6 +611,12 @@
         public void executeMessage(Message message) {
             switch (message.what) {
                 case DO_ATTACH: {
+                    try {
+                        mConnection.attachEngine(this);
+                    } catch (RemoteException e) {
+                        Log.w(TAG, "Wallpaper host disappeared", e);
+                        return;
+                    }
                     Engine engine = onCreateEngine();
                     mEngine = engine;
                     engine.attach(this);
@@ -519,29 +626,20 @@
                     mEngine.detach();
                     return;
                 }
+                case DO_SET_DESIRED_SIZE: {
+                    mEngine.doDesiredSizeChanged(message.arg1, message.arg2);
+                    return;
+                }
                 case MSG_UPDATE_SURFACE:
                     mEngine.updateSurface(true, false);
                     break;
                 case MSG_VISIBILITY_CHANGED:
                     if (DEBUG) Log.v(TAG, "Visibility change in " + mEngine
                             + ": " + message.arg1);
-                    mEngine.onVisibilityChanged(message.arg1 != 0);
+                    mEngine.doVisibilityChanged(message.arg1 != 0);
                     break;
                 case MSG_WALLPAPER_OFFSETS: {
-                    float xOffset;
-                    float yOffset;
-                    synchronized (mEngine.mLock) {
-                        xOffset = mEngine.mPendingXOffset;
-                        yOffset = mEngine.mPendingYOffset;
-                        mEngine.mOffsetMessageEnqueued = false;
-                    }
-                    if (DEBUG) Log.v(TAG, "Offsets change in " + mEngine
-                            + ": " + xOffset + "," + yOffset);
-                    final int availw = mReqWidth-mEngine.mCurWidth;
-                    final int xPixels = availw > 0 ? -(int)(availw*xOffset+.5f) : 0;
-                    final int availh = mReqHeight-mEngine.mCurHeight;
-                    final int yPixels = availh > 0 ? -(int)(availh*yOffset+.5f) : 0;
-                    mEngine.onOffsetsChanged(xOffset, yOffset, xPixels, yPixels);
+                    mEngine.doOffsetsChanged();
                 } break;
                 case MSG_WINDOW_RESIZED: {
                     final boolean reportDraw = message.arg1 != 0;
diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java
index fe3f47f..fafe00f 100644
--- a/core/java/android/view/ViewRoot.java
+++ b/core/java/android/view/ViewRoot.java
@@ -1292,6 +1292,11 @@
             // TODO: we should ask the window manager to do something!
             // for now we just do nothing
             return;
+        } catch (IllegalArgumentException e) {
+            Log.e("ViewRoot", "IllegalArgumentException locking surface", e);
+            // TODO: we should ask the window manager to do something!
+            // for now we just do nothing
+            return;
         }
 
         try {
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index ea08f33..dd4b65f 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -355,6 +355,8 @@
     public final int OFF_BECAUSE_OF_USER = 1;
     /** Screen turned off because of timeout */
     public final int OFF_BECAUSE_OF_TIMEOUT = 2;
+    /** Screen turned off because of proximity sensor */
+    public final int OFF_BECAUSE_OF_PROXIMITY_SENSOR = 3;
 
     /**
      * Magic constant to {@link IWindowManager#setRotation} to not actually
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index 050a886..3c306bb 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -360,11 +360,13 @@
             // default to "en"
             buffer.append("en");
         }
-        
-        final String model = Build.MODEL;
-        if (model.length() > 0) {
-            buffer.append("; ");
-            buffer.append(model);
+        // add the model for the release build
+        if ("REL".equals(Build.VERSION.CODENAME)) {
+            final String model = Build.MODEL;
+            if (model.length() > 0) {
+                buffer.append("; ");
+                buffer.append(model);
+            }
         }
         final String id = Build.ID;
         if (id.length() > 0) {
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 196c66b..e39e3f1 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -1935,6 +1935,7 @@
         int mHeight;
         int mTextWrapWidth;
         float mScale;
+        boolean mIgnoreHeight;
     }
 
     /**
@@ -1969,6 +1970,7 @@
             data.mTextWrapWidth = mInZoomOverview ? Math.round(viewWidth
                     / mLastScale) : newWidth;
             data.mScale = mActualScale;
+            data.mIgnoreHeight = mZoomScale != 0 && !mHeightCanMeasure;
             mWebViewCore.sendMessage(EventHub.VIEW_SIZE_CHANGED, data);
             mLastWidthSent = newWidth;
             mLastHeightSent = newHeight;
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 25cb249..f474f15 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -418,7 +418,8 @@
         should this be called nativeSetViewPortSize?
     */
     private native void nativeSetSize(int width, int height, int screenWidth,
-            float scale, int realScreenWidth, int screenHeight);
+            float scale, int realScreenWidth, int screenHeight,
+            boolean ignoreHeight);
 
     private native int nativeGetContentMinPrefWidth();
 
@@ -918,7 +919,8 @@
                             WebView.ViewSizeData data =
                                     (WebView.ViewSizeData) msg.obj;
                             viewSizeChanged(data.mWidth, data.mHeight,
-                                    data.mTextWrapWidth, data.mScale);
+                                    data.mTextWrapWidth, data.mScale,
+                                    data.mIgnoreHeight);
                             break;
                         }
                         case SET_SCROLL_OFFSET:
@@ -1411,7 +1413,8 @@
     private float mCurrentViewScale = 1.0f;
 
     // notify webkit that our virtual view size changed size (after inv-zoom)
-    private void viewSizeChanged(int w, int h, int textwrapWidth, float scale) {
+    private void viewSizeChanged(int w, int h, int textwrapWidth, float scale,
+            boolean ignoreHeight) {
         if (DebugFlags.WEB_VIEW_CORE) {
             Log.v(LOGTAG, "viewSizeChanged w=" + w + "; h=" + h
                     + "; textwrapWidth=" + textwrapWidth + "; scale=" + scale);
@@ -1447,7 +1450,7 @@
             }
         }
         nativeSetSize(width, width == w ? h : Math.round((float) width * h / w),
-                textwrapWidth, scale, w, h);
+                textwrapWidth, scale, w, h, ignoreHeight);
         // Remember the current width and height
         boolean needInvalidate = (mCurrentViewWidth == 0);
         mCurrentViewWidth = w;
@@ -1905,6 +1908,7 @@
             // true. It is safe to use mWidth for mTextWrapWidth.
             data.mTextWrapWidth = data.mWidth;
             data.mScale = -1.0f;
+            data.mIgnoreHeight = false;
             mEventHub.sendMessageAtFrontOfQueue(Message.obtain(null,
                     EventHub.VIEW_SIZE_CHANGED, data));
         } else if (mSettings.getUseWideViewPort()) {
@@ -1926,6 +1930,7 @@
                         / mCurrentViewWidth;
                 data.mTextWrapWidth = Math.round(webViewWidth
                         / mRestoreState.mTextWrapScale);
+                data.mIgnoreHeight = false;
                 mEventHub.sendMessageAtFrontOfQueue(Message.obtain(null,
                         EventHub.VIEW_SIZE_CHANGED, data));
             }
diff --git a/core/java/com/android/internal/app/NetInitiatedActivity.java b/core/java/com/android/internal/app/NetInitiatedActivity.java
new file mode 100755
index 0000000..98fb236
--- /dev/null
+++ b/core/java/com/android/internal/app/NetInitiatedActivity.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2007 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.app;
+
+import android.app.AlertDialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IMountService;
+import android.os.Message;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.widget.Toast;
+import android.util.Log;
+import android.location.LocationManager;
+import com.android.internal.location.GpsLocationProvider;
+import com.android.internal.location.GpsNetInitiatedHandler;
+
+/**
+ * This activity is shown to the user for him/her to accept or deny network-initiated
+ * requests. It uses the alert dialog style. It will be launched from a notification.
+ */
+public class NetInitiatedActivity extends AlertActivity implements DialogInterface.OnClickListener {
+
+    private static final String TAG = "NetInitiatedActivity";
+
+    private static final boolean DEBUG = true;
+    private static final boolean VERBOSE = false;
+
+    private static final int POSITIVE_BUTTON = AlertDialog.BUTTON1;
+    private static final int NEGATIVE_BUTTON = AlertDialog.BUTTON2;
+
+    // Dialog button text
+    public static final String BUTTON_TEXT_ACCEPT = "Accept";
+    public static final String BUTTON_TEXT_DENY = "Deny";
+
+    // Received ID from intent, -1 when no notification is in progress
+    private int notificationId = -1;
+
+    /** Used to detect when NI request is received */
+    private BroadcastReceiver mNetInitiatedReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (DEBUG) Log.d(TAG, "NetInitiatedReceiver onReceive: " + intent.getAction());
+            if (intent.getAction() == GpsNetInitiatedHandler.ACTION_NI_VERIFY) {
+                handleNIVerify(intent);
+            }
+        }
+    };
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Set up the "dialog"
+        final Intent intent = getIntent();
+        final AlertController.AlertParams p = mAlertParams;
+        p.mIconId = com.android.internal.R.drawable.ic_dialog_usb;
+        p.mTitle = intent.getStringExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_TITLE);
+        p.mMessage = intent.getStringExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_MESSAGE);
+        p.mPositiveButtonText = BUTTON_TEXT_ACCEPT;
+        p.mPositiveButtonListener = this;
+        p.mNegativeButtonText = BUTTON_TEXT_DENY;
+        p.mNegativeButtonListener = this;
+
+        notificationId = intent.getIntExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_NOTIF_ID, -1);
+        if (DEBUG) Log.d(TAG, "onCreate, notifId: " + notificationId);
+
+        setupAlert();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        if (DEBUG) Log.d(TAG, "onResume");
+        registerReceiver(mNetInitiatedReceiver, new IntentFilter(GpsNetInitiatedHandler.ACTION_NI_VERIFY));
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if (DEBUG) Log.d(TAG, "onPause");
+        unregisterReceiver(mNetInitiatedReceiver);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void onClick(DialogInterface dialog, int which) {
+        if (which == POSITIVE_BUTTON) {
+            sendUserResponse(GpsNetInitiatedHandler.GPS_NI_RESPONSE_ACCEPT);
+        }
+        if (which == NEGATIVE_BUTTON) {
+            sendUserResponse(GpsNetInitiatedHandler.GPS_NI_RESPONSE_DENY);
+        }
+
+        // No matter what, finish the activity
+        finish();
+        notificationId = -1;
+    }
+
+    // Respond to NI Handler under GpsLocationProvider, 1 = accept, 2 = deny
+    private void sendUserResponse(int response) {
+        if (DEBUG) Log.d(TAG, "sendUserResponse, response: " + response);
+        LocationManager locationManager = (LocationManager)
+            this.getSystemService(Context.LOCATION_SERVICE);
+        locationManager.sendNiResponse(notificationId, response);
+    }
+
+    private void handleNIVerify(Intent intent) {
+        int notifId = intent.getIntExtra(GpsNetInitiatedHandler.NI_INTENT_KEY_NOTIF_ID, -1);
+        notificationId = notifId;
+
+        if (DEBUG) Log.d(TAG, "handleNIVerify action: " + intent.getAction());
+    }
+
+    private void showNIError() {
+        Toast.makeText(this, "NI error" /* com.android.internal.R.string.usb_storage_error_message */,
+                Toast.LENGTH_LONG).show();
+    }
+}
diff --git a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
index c4eb31f..5357469 100644
--- a/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
+++ b/core/java/com/android/internal/service/wallpaper/ImageWallpaper.java
@@ -33,52 +33,50 @@
  */
 public class ImageWallpaper extends WallpaperService {
     WallpaperManager mWallpaperManager;
-    ImageWallpaper.DrawableEngine mEngine;
-    private WallpaperObserver mReceiver;
 
     @Override
     public void onCreate() {
         super.onCreate();
         mWallpaperManager = (WallpaperManager) getSystemService(WALLPAPER_SERVICE);
-        IntentFilter filter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
-        mReceiver = new WallpaperObserver();
-        registerReceiver(mReceiver, filter);
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        unregisterReceiver(mReceiver);
     }
 
     public Engine onCreateEngine() {
-        mEngine = new DrawableEngine();
-        return mEngine;
-    }
-
-    class WallpaperObserver extends BroadcastReceiver {
-        public void onReceive(Context context, Intent intent) {
-            mEngine.updateWallpaper();
-            mEngine.drawFrame();
-        }
+        return new DrawableEngine();
     }
 
     class DrawableEngine extends Engine {
         private final Object mLock = new Object();
         private final Rect mBounds = new Rect();
+        private WallpaperObserver mReceiver;
         Drawable mBackground;
         float mXOffset;
         float mYOffset;
 
+        class WallpaperObserver extends BroadcastReceiver {
+            public void onReceive(Context context, Intent intent) {
+                updateWallpaper();
+                drawFrame();
+            }
+        }
+
         @Override
         public void onCreate(SurfaceHolder surfaceHolder) {
             super.onCreate(surfaceHolder);
+            IntentFilter filter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
+            mReceiver = new WallpaperObserver();
+            registerReceiver(mReceiver, filter);
             updateWallpaper();
             surfaceHolder.setSizeFromLayout();
             //setTouchEventsEnabled(true);
         }
 
         @Override
+        public void onDestroy() {
+            super.onDestroy();
+            unregisterReceiver(mReceiver);
+        }
+
+        @Override
         public void onVisibilityChanged(boolean visible) {
             drawFrame();
         }
diff --git a/core/jni/android_location_GpsLocationProvider.cpp b/core/jni/android_location_GpsLocationProvider.cpp
index 90a0487..c329602 100755
--- a/core/jni/android_location_GpsLocationProvider.cpp
+++ b/core/jni/android_location_GpsLocationProvider.cpp
@@ -16,16 +16,18 @@
 
 #define LOG_TAG "GpsLocationProvider"
 
+//#define LOG_NDDEBUG 0
+
 #include "JNIHelp.h"
 #include "jni.h"
 #include "hardware_legacy/gps.h"
+#include "hardware_legacy/gps_ni.h"
 #include "utils/Log.h"
 #include "utils/misc.h"
 
 #include <string.h>
 #include <pthread.h>
 
-
 static pthread_mutex_t sEventMutex = PTHREAD_MUTEX_INITIALIZER;
 static pthread_cond_t sEventCond = PTHREAD_COND_INITIALIZER;
 static jmethodID method_reportLocation;
@@ -34,16 +36,19 @@
 static jmethodID method_reportAGpsStatus;
 static jmethodID method_reportNmea;
 static jmethodID method_xtraDownloadRequest;
+static jmethodID method_reportNiNotification;
 
 static const GpsInterface* sGpsInterface = NULL;
 static const GpsXtraInterface* sGpsXtraInterface = NULL;
 static const AGpsInterface* sAGpsInterface = NULL;
+static const GpsNiInterface* sGpsNiInterface = NULL;
 
 // data written to by GPS callbacks
 static GpsLocation  sGpsLocation;
 static GpsStatus    sGpsStatus;
 static GpsSvStatus  sGpsSvStatus;
 static AGpsStatus   sAGpsStatus;
+static GpsNiNotification  sGpsNiNotification;
 
 // buffer for NMEA data
 #define NMEA_SENTENCE_LENGTH    100
@@ -62,6 +67,7 @@
 static GpsSvStatus  sGpsSvStatusCopy;
 static AGpsStatus   sAGpsStatusCopy;
 static NmeaSentence sNmeaBufferCopy[NMEA_SENTENCE_LENGTH];
+static GpsNiNotification  sGpsNiNotificationCopy;
 
 enum CallbackType {
     kLocation = 1,
@@ -71,6 +77,7 @@
     kXtraDownloadRequest = 16,
     kDisableRequest = 32,
     kNmeaAvailable = 64,
+    kNiNotification = 128,
 }; 
 static int sPendingCallbacks;
 
@@ -160,6 +167,20 @@
     pthread_mutex_unlock(&sEventMutex);
 }
 
+static void
+gps_ni_notify_callback(GpsNiNotification *notification)
+{
+   LOGD("gps_ni_notify_callback: notif=%d", notification->notification_id);
+
+   pthread_mutex_lock(&sEventMutex);
+
+   sPendingCallbacks |= kNiNotification;
+   memcpy(&sGpsNiNotification, notification, sizeof(GpsNiNotification));
+
+   pthread_cond_signal(&sEventCond);
+   pthread_mutex_unlock(&sEventMutex);
+}
+
 GpsXtraCallbacks sGpsXtraCallbacks = {
     download_request_callback,
 };
@@ -168,6 +189,10 @@
     agps_status_callback,
 };
 
+GpsNiCallbacks sGpsNiCallbacks = {
+    gps_ni_notify_callback,
+};
+
 static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env, jclass clazz) {
     method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V");
     method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V");
@@ -175,6 +200,7 @@
     method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(II)V");
     method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(IJ)V");
     method_xtraDownloadRequest = env->GetMethodID(clazz, "xtraDownloadRequest", "()V");
+    method_reportNiNotification = env->GetMethodID(clazz, "reportNiNotification", "(IIIIILjava/lang/String;Ljava/lang/String;IILjava/lang/String;)V");
 }
 
 static jboolean android_location_GpsLocationProvider_is_supported(JNIEnv* env, jclass clazz) {
@@ -194,6 +220,12 @@
         sAGpsInterface = (const AGpsInterface*)sGpsInterface->get_extension(AGPS_INTERFACE);
     if (sAGpsInterface)
         sAGpsInterface->init(&sAGpsCallbacks);
+
+    if (!sGpsNiInterface)
+       sGpsNiInterface = (const GpsNiInterface*)sGpsInterface->get_extension(GPS_NI_INTERFACE);
+    if (sGpsNiInterface)
+       sGpsNiInterface->init(&sGpsNiCallbacks);
+
     return true;
 }
 
@@ -210,7 +242,7 @@
     sGpsInterface->cleanup();
 }
 
-static jboolean android_location_GpsLocationProvider_start(JNIEnv* env, jobject obj, jint positionMode, 
+static jboolean android_location_GpsLocationProvider_start(JNIEnv* env, jobject obj, jint positionMode,
         jboolean singleFix, jint fixFrequency)
 {
     int result = sGpsInterface->set_position_mode(positionMode, (singleFix ? 0 : fixFrequency));
@@ -235,7 +267,7 @@
 {
     pthread_mutex_lock(&sEventMutex);
     pthread_cond_wait(&sEventCond, &sEventMutex);
-    
+
     // copy and clear the callback flags
     int pendingCallbacks = sPendingCallbacks;
     sPendingCallbacks = 0;
@@ -254,18 +286,20 @@
         memcpy(&sAGpsStatusCopy, &sAGpsStatus, sizeof(sAGpsStatusCopy));
     if (pendingCallbacks & kNmeaAvailable)
         memcpy(&sNmeaBufferCopy, &sNmeaBuffer, nmeaSentenceCount * sizeof(sNmeaBuffer[0]));
+    if (pendingCallbacks & kNiNotification)
+        memcpy(&sGpsNiNotificationCopy, &sGpsNiNotification, sizeof(sGpsNiNotificationCopy));
     pthread_mutex_unlock(&sEventMutex);   
 
-    if (pendingCallbacks & kLocation) { 
+    if (pendingCallbacks & kLocation) {
         env->CallVoidMethod(obj, method_reportLocation, sGpsLocationCopy.flags,
                 (jdouble)sGpsLocationCopy.latitude, (jdouble)sGpsLocationCopy.longitude,
-                (jdouble)sGpsLocationCopy.altitude, 
-                (jfloat)sGpsLocationCopy.speed, (jfloat)sGpsLocationCopy.bearing, 
+                (jdouble)sGpsLocationCopy.altitude,
+                (jfloat)sGpsLocationCopy.speed, (jfloat)sGpsLocationCopy.bearing,
                 (jfloat)sGpsLocationCopy.accuracy, (jlong)sGpsLocationCopy.timestamp);
     }
     if (pendingCallbacks & kStatus) {
         env->CallVoidMethod(obj, method_reportStatus, sGpsStatusCopy.status);
-    }  
+    }
     if (pendingCallbacks & kSvStatus) {
         env->CallVoidMethod(obj, method_reportSvStatus);
     }
@@ -277,16 +311,34 @@
             env->CallVoidMethod(obj, method_reportNmea, i, sNmeaBuffer[i].timestamp);
         }
     }
-    if (pendingCallbacks & kXtraDownloadRequest) {    
+    if (pendingCallbacks & kXtraDownloadRequest) {
         env->CallVoidMethod(obj, method_xtraDownloadRequest);
     }
     if (pendingCallbacks & kDisableRequest) {
         // don't need to do anything - we are just poking so wait_for_event will return.
     }
+    if (pendingCallbacks & kNiNotification) {
+       LOGD("android_location_GpsLocationProvider_wait_for_event: sent notification callback.");
+       jstring reqId = env->NewStringUTF(sGpsNiNotificationCopy.requestor_id);
+       jstring text = env->NewStringUTF(sGpsNiNotificationCopy.text);
+       jstring extras = env->NewStringUTF(sGpsNiNotificationCopy.extras);
+       env->CallVoidMethod(obj, method_reportNiNotification,
+             sGpsNiNotificationCopy.notification_id,
+             sGpsNiNotificationCopy.ni_type,
+             sGpsNiNotificationCopy.notify_flags,
+             sGpsNiNotificationCopy.timeout,
+             sGpsNiNotificationCopy.default_response,
+             reqId,
+             text,
+             sGpsNiNotificationCopy.requestor_id_encoding,
+             sGpsNiNotificationCopy.text_encoding,
+             extras
+       );
+    }
 }
 
-static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, jobject obj, 
-        jintArray prnArray, jfloatArray snrArray, jfloatArray elevArray, jfloatArray azumArray, 
+static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, jobject obj,
+        jintArray prnArray, jfloatArray snrArray, jfloatArray elevArray, jfloatArray azumArray,
         jintArray maskArray)
 {
     // this should only be called from within a call to reportStatus, so we don't need to lock here
@@ -358,7 +410,7 @@
     return (sGpsXtraInterface != NULL);
 }
 
-static void android_location_GpsLocationProvider_inject_xtra_data(JNIEnv* env, jobject obj, 
+static void android_location_GpsLocationProvider_inject_xtra_data(JNIEnv* env, jobject obj,
         jbyteArray data, jint length)
 {
     jbyte* bytes = env->GetByteArrayElements(data, 0);
@@ -415,6 +467,16 @@
     }
 }
 
+static void android_location_GpsLocationProvider_send_ni_response(JNIEnv* env, jobject obj,
+      jint notifId, jint response)
+{
+   if (!sGpsNiInterface)
+      sGpsNiInterface = (const GpsNiInterface*)sGpsInterface->get_extension(GPS_NI_INTERFACE);
+   if (sGpsNiInterface) {
+      sGpsNiInterface->respond(notifId, response);
+   }
+}
+
 static JNINativeMethod sMethods[] = {
      /* name, signature, funcPtr */
     {"class_init_native", "()V", (void *)android_location_GpsLocationProvider_class_init_native},
@@ -436,6 +498,7 @@
     {"native_agps_data_conn_closed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_closed},
     {"native_agps_data_conn_failed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_failed},
     {"native_set_agps_server", "(ILjava/lang/String;I)V", (void*)android_location_GpsLocationProvider_set_agps_server},
+    {"native_send_ni_response", "(II)V", (void*)android_location_GpsLocationProvider_send_ni_response},
 };
 
 int register_android_location_GpsLocationProvider(JNIEnv* env)
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 35042f1d..1ea5fa3 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -898,7 +898,7 @@
     <permission android:name="android.permission.BIND_WALLPAPER"
         android:label="@string/permlab_bindWallpaper"
         android:description="@string/permdesc_bindWallpaper"
-        android:protectionLevel="signature" />
+        android:protectionLevel="signatureOrSystem" />
 
     <!-- Allows low-level access to setting the orientation (actually
          rotation) of the screen.  Not for use by normal applications. -->
@@ -1011,6 +1011,12 @@
         android:description="@string/permdesc_callPrivileged"
         android:protectionLevel="signatureOrSystem" />
 
+    <!-- Allows an application to perform CDMA OTA provisioning @hide -->
+    <permission android:name="android.permission.PERFORM_CDMA_PROVISIONING"
+        android:label="@string/permlab_performCdmaProvisioning"
+        android:description="@string/permdesc_performCdmaProvisioning"
+        android:protectionLevel="signatureOrSystem" />
+
     <!-- Allows enabling/disabling location update notifications from
          the radio. Not for use by normal applications. -->
     <permission android:name="android.permission.CONTROL_LOCATION_UPDATES"
@@ -1157,6 +1163,10 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+        <activity android:name="com.android.internal.app.NetInitiatedActivity"
+                android:theme="@style/Theme.Dialog.Alert"
+                android:excludeFromRecents="true">
+        </activity>
 
         <service android:name="com.android.server.LoadAverageService"
                 android:exported="true" />
diff --git a/core/res/res/anim/wallpaper_activity_close_enter.xml b/core/res/res/anim/wallpaper_activity_close_enter.xml
index fc6e332..9e9bd80 100644
--- a/core/res/res/anim/wallpaper_activity_close_enter.xml
+++ b/core/res/res/anim/wallpaper_activity_close_enter.xml
@@ -27,4 +27,6 @@
            android:duration="@android:integer/config_mediumAnimTime" />
 	<translate android:fromXDelta="-150%" android:toXDelta="0"
         android:duration="@android:integer/config_mediumAnimTime"/>
+    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
+            android:duration="@android:integer/config_mediumAnimTime" />
 </set>
diff --git a/core/res/res/anim/wallpaper_activity_close_exit.xml b/core/res/res/anim/wallpaper_activity_close_exit.xml
index edd00fd..badbbf0 100644
--- a/core/res/res/anim/wallpaper_activity_close_exit.xml
+++ b/core/res/res/anim/wallpaper_activity_close_exit.xml
@@ -26,4 +26,6 @@
            android:duration="@android:integer/config_mediumAnimTime" />
 	<translate android:fromXDelta="0%" android:toXDelta="100%"
         android:duration="@android:integer/config_mediumAnimTime"/>
+    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
+            android:duration="@android:integer/config_mediumAnimTime"/>
 </set>
diff --git a/core/res/res/anim/wallpaper_activity_open_enter.xml b/core/res/res/anim/wallpaper_activity_open_enter.xml
index 5b44d97..e60bac2 100644
--- a/core/res/res/anim/wallpaper_activity_open_enter.xml
+++ b/core/res/res/anim/wallpaper_activity_open_enter.xml
@@ -26,4 +26,6 @@
            android:duration="@android:integer/config_mediumAnimTime" />
     <translate android:fromXDelta="100%" android:toXDelta="0"
             android:duration="@android:integer/config_mediumAnimTime"/>
+    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
+            android:duration="@android:integer/config_mediumAnimTime" />
 </set>
diff --git a/core/res/res/anim/wallpaper_activity_open_exit.xml b/core/res/res/anim/wallpaper_activity_open_exit.xml
index fa39bee..01abbb7 100644
--- a/core/res/res/anim/wallpaper_activity_open_exit.xml
+++ b/core/res/res/anim/wallpaper_activity_open_exit.xml
@@ -27,4 +27,6 @@
            android:duration="@android:integer/config_mediumAnimTime" />
     <translate android:fromXDelta="0" android:toXDelta="-150%"
             android:duration="@android:integer/config_mediumAnimTime"/>
+    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
+            android:duration="@android:integer/config_mediumAnimTime"/>
 </set>
diff --git a/core/res/res/anim/wallpaper_enter.xml b/core/res/res/anim/wallpaper_enter.xml
new file mode 100644
index 0000000..981f5f6
--- /dev/null
+++ b/core/res/res/anim/wallpaper_enter.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/res/anim/options_panel_exit.xml
+**
+** Copyright 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.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:interpolator="@anim/decelerate_interpolator">
+    <scale android:fromXScale="3.0" android:toXScale="1.0"
+           android:fromYScale="3.0" android:toYScale="1.0"
+           android:pivotX="50%" android:pivotY="50%"
+           android:duration="@android:integer/config_longAnimTime" />
+    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
+            android:duration="@android:integer/config_longAnimTime" />
+</set>
diff --git a/core/res/res/anim/wallpaper_exit.xml b/core/res/res/anim/wallpaper_exit.xml
new file mode 100644
index 0000000..2306071
--- /dev/null
+++ b/core/res/res/anim/wallpaper_exit.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/res/anim/options_panel_exit.xml
+**
+** Copyright 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.
+*/
+-->
+
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+        android:interpolator="@anim/accelerate_interpolator">
+    <scale android:fromXScale="1.0" android:toXScale="3.0"
+           android:fromYScale="1.0" android:toYScale="3.0"
+           android:pivotX="50%" android:pivotY="50%"
+           android:duration="@android:integer/config_longAnimTime" />
+    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
+            android:duration="@android:integer/config_longAnimTime"/>
+</set>
diff --git a/core/res/res/drawable-hdpi/activity_title_bar.9.png b/core/res/res/drawable-hdpi/activity_title_bar.9.png
new file mode 100644
index 0000000..48d60c4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/activity_title_bar.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/arrow_down_float.png b/core/res/res/drawable-hdpi/arrow_down_float.png
new file mode 100644
index 0000000..2466c8f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/arrow_down_float.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/arrow_up_float.png b/core/res/res/drawable-hdpi/arrow_up_float.png
new file mode 100644
index 0000000..d1301c3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/arrow_up_float.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_background.png b/core/res/res/drawable-hdpi/battery_charge_background.png
new file mode 100644
index 0000000..19023a9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_fill_empty.9.png b/core/res/res/drawable-hdpi/battery_charge_fill_empty.9.png
new file mode 100644
index 0000000..c4e70a8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_fill_empty.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_fill_full.9.png b/core/res/res/drawable-hdpi/battery_charge_fill_full.9.png
new file mode 100644
index 0000000..ac66f5a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_fill_full.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_charge_fill_warning.9.png b/core/res/res/drawable-hdpi/battery_charge_fill_warning.9.png
new file mode 100644
index 0000000..32d99c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_charge_fill_warning.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/battery_low_battery.png b/core/res/res/drawable-hdpi/battery_low_battery.png
new file mode 100644
index 0000000..d894f7b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/battery_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/blank_tile.png b/core/res/res/drawable-hdpi/blank_tile.png
new file mode 100644
index 0000000..e2a386c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/blank_tile.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/bottom_bar.png b/core/res/res/drawable-hdpi/bottom_bar.png
new file mode 100644
index 0000000..1f38f3c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/bottom_bar.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_buttonless_off.png b/core/res/res/drawable-hdpi/btn_check_buttonless_off.png
new file mode 100644
index 0000000..baf9010
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_buttonless_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_buttonless_on.png b/core/res/res/drawable-hdpi/btn_check_buttonless_on.png
new file mode 100644
index 0000000..2a77e4c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_buttonless_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_label_background.9.png b/core/res/res/drawable-hdpi/btn_check_label_background.9.png
new file mode 100644
index 0000000..97e6806
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off.png b/core/res/res/drawable-hdpi/btn_check_off.png
new file mode 100644
index 0000000..aad9ef7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disable.png b/core/res/res/drawable-hdpi/btn_check_off_disable.png
new file mode 100644
index 0000000..eaee9e0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png b/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
new file mode 100644
index 0000000..6d2c293
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_pressed.png b/core/res/res/drawable-hdpi/btn_check_off_pressed.png
new file mode 100644
index 0000000..1c442e9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_off_selected.png b/core/res/res/drawable-hdpi/btn_check_off_selected.png
new file mode 100644
index 0000000..b852b2c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on.png b/core/res/res/drawable-hdpi/btn_check_on.png
new file mode 100644
index 0000000..cd5c181
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disable.png b/core/res/res/drawable-hdpi/btn_check_on_disable.png
new file mode 100644
index 0000000..b4fc51a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png b/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
new file mode 100644
index 0000000..bf34647
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_pressed.png b/core/res/res/drawable-hdpi/btn_check_on_pressed.png
new file mode 100644
index 0000000..fa5c7a2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_check_on_selected.png b/core/res/res/drawable-hdpi/btn_check_on_selected.png
new file mode 100644
index 0000000..a6a21ad
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_disable.png b/core/res/res/drawable-hdpi/btn_circle_disable.png
new file mode 100644
index 0000000..d829716
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_disable_focused.png b/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
new file mode 100644
index 0000000..c1b5b6e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_normal.png b/core/res/res/drawable-hdpi/btn_circle_normal.png
new file mode 100644
index 0000000..bf3fb5a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_pressed.png b/core/res/res/drawable-hdpi/btn_circle_pressed.png
new file mode 100644
index 0000000..50e22e6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_circle_selected.png b/core/res/res/drawable-hdpi/btn_circle_selected.png
new file mode 100644
index 0000000..cfc68fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_circle_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_normal.png b/core/res/res/drawable-hdpi/btn_close_normal.png
new file mode 100644
index 0000000..df3d56c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_close_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_close_pressed.png b/core/res/res/drawable-hdpi/btn_close_pressed.png
new file mode 100644
index 0000000..ef88fe0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_close_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_code_lock_default.png b/core/res/res/drawable-hdpi/btn_code_lock_default.png
new file mode 100644
index 0000000..df3137f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_code_lock_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_code_lock_touched.png b/core/res/res/drawable-hdpi/btn_code_lock_touched.png
new file mode 100644
index 0000000..bf9e46a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_code_lock_touched.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal.9.png b/core/res/res/drawable-hdpi/btn_default_normal.9.png
new file mode 100644
index 0000000..329ce6e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png b/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
new file mode 100644
index 0000000..a518c6b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
new file mode 100644
index 0000000..71a05b7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_pressed.9.png b/core/res/res/drawable-hdpi/btn_default_pressed.9.png
new file mode 100644
index 0000000..d9d02bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_selected.9.png b/core/res/res/drawable-hdpi/btn_default_selected.9.png
new file mode 100644
index 0000000..ab7c612
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
new file mode 100644
index 0000000..baafed6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
new file mode 100644
index 0000000..175197b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
new file mode 100644
index 0000000..ec1feff
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png b/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
new file mode 100644
index 0000000..c1f9a0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_default_small_selected.9.png b/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
new file mode 100644
index 0000000..0ea3f40
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_disable.png b/core/res/res/drawable-hdpi/btn_dialog_disable.png
new file mode 100644
index 0000000..2fc5d1a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_normal.png b/core/res/res/drawable-hdpi/btn_dialog_normal.png
new file mode 100644
index 0000000..c4a1026
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_pressed.png b/core/res/res/drawable-hdpi/btn_dialog_pressed.png
new file mode 100644
index 0000000..846f8bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dialog_selected.png b/core/res/res/drawable-hdpi/btn_dialog_selected.png
new file mode 100644
index 0000000..659c289
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dialog_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png b/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
new file mode 100644
index 0000000..9392495
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dropdown_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png b/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
new file mode 100644
index 0000000..beaba45
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dropdown_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png b/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
new file mode 100644
index 0000000..ec51fc9e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_dropdown_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_erase_default.9.png b/core/res/res/drawable-hdpi/btn_erase_default.9.png
new file mode 100644
index 0000000..30984f4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_erase_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_erase_pressed.9.png b/core/res/res/drawable-hdpi/btn_erase_pressed.9.png
new file mode 100644
index 0000000..a8225e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_erase_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_erase_selected.9.png b/core/res/res/drawable-hdpi/btn_erase_selected.9.png
new file mode 100644
index 0000000..f020f77
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_erase_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_global_search_normal.9.png b/core/res/res/drawable-hdpi/btn_global_search_normal.9.png
new file mode 100644
index 0000000..5bec4f8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_global_search_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
new file mode 100644
index 0000000..5697369
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
new file mode 100644
index 0000000..9940245
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
new file mode 100644
index 0000000..5a26d83
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
new file mode 100644
index 0000000..089dbf3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
new file mode 100644
index 0000000..c10a3db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
new file mode 100644
index 0000000..9e83ace
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player.9.png b/core/res/res/drawable-hdpi/btn_media_player.9.png
new file mode 100644
index 0000000..bf16315
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_disabled.9.png b/core/res/res/drawable-hdpi/btn_media_player_disabled.9.png
new file mode 100644
index 0000000..d7b8ed5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_disabled_selected.9.png b/core/res/res/drawable-hdpi/btn_media_player_disabled_selected.9.png
new file mode 100644
index 0000000..1a35c31
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_pressed.9.png b/core/res/res/drawable-hdpi/btn_media_player_pressed.9.png
new file mode 100644
index 0000000..17dd3fc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_media_player_selected.9.png b/core/res/res/drawable-hdpi/btn_media_player_selected.9.png
new file mode 100644
index 0000000..a146d8f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_media_player_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_default.png b/core/res/res/drawable-hdpi/btn_minus_default.png
new file mode 100644
index 0000000..f2831af
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_disable.png b/core/res/res/drawable-hdpi/btn_minus_disable.png
new file mode 100644
index 0000000..24ce695
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_disable_focused.png b/core/res/res/drawable-hdpi/btn_minus_disable_focused.png
new file mode 100644
index 0000000..e92c2b1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_pressed.png b/core/res/res/drawable-hdpi/btn_minus_pressed.png
new file mode 100644
index 0000000..ba2ed26
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_minus_selected.png b/core/res/res/drawable-hdpi/btn_minus_selected.png
new file mode 100644
index 0000000..6b938b3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_minus_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_default.png b/core/res/res/drawable-hdpi/btn_plus_default.png
new file mode 100644
index 0000000..441d1fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_disable.png b/core/res/res/drawable-hdpi/btn_plus_disable.png
new file mode 100644
index 0000000..4e965c1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_disable_focused.png b/core/res/res/drawable-hdpi/btn_plus_disable_focused.png
new file mode 100644
index 0000000..0c938eb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_pressed.png b/core/res/res/drawable-hdpi/btn_plus_pressed.png
new file mode 100644
index 0000000..8dd5a68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_plus_selected.png b/core/res/res/drawable-hdpi/btn_plus_selected.png
new file mode 100644
index 0000000..8fe30ed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_plus_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_label_background.9.png b/core/res/res/drawable-hdpi/btn_radio_label_background.9.png
new file mode 100644
index 0000000..45c5c6a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off.png b/core/res/res/drawable-hdpi/btn_radio_off.png
new file mode 100644
index 0000000..c0b14aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_pressed.png b/core/res/res/drawable-hdpi/btn_radio_off_pressed.png
new file mode 100644
index 0000000..3189581
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_off_selected.png b/core/res/res/drawable-hdpi/btn_radio_off_selected.png
new file mode 100644
index 0000000..f337703
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on.png b/core/res/res/drawable-hdpi/btn_radio_on.png
new file mode 100644
index 0000000..c90d2eb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_pressed.png b/core/res/res/drawable-hdpi/btn_radio_on_pressed.png
new file mode 100644
index 0000000..d79450b8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_radio_on_selected.png b/core/res/res/drawable-hdpi/btn_radio_on_selected.png
new file mode 100644
index 0000000..db50c43
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_radio_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_off_normal.png b/core/res/res/drawable-hdpi/btn_rating_star_off_normal.png
new file mode 100644
index 0000000..d119807
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_off_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_off_pressed.png b/core/res/res/drawable-hdpi/btn_rating_star_off_pressed.png
new file mode 100644
index 0000000..6f76da3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_off_selected.png b/core/res/res/drawable-hdpi/btn_rating_star_off_selected.png
new file mode 100644
index 0000000..566090d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_on_normal.png b/core/res/res/drawable-hdpi/btn_rating_star_on_normal.png
new file mode 100644
index 0000000..c55c1f6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_on_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_on_pressed.png b/core/res/res/drawable-hdpi/btn_rating_star_on_pressed.png
new file mode 100644
index 0000000..89b8161
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_rating_star_on_selected.png b/core/res/res/drawable-hdpi/btn_rating_star_on_selected.png
new file mode 100644
index 0000000..1a76a26
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_rating_star_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_default.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_default.9.png
new file mode 100644
index 0000000..fe38843
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_pressed.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_pressed.9.png
new file mode 100644
index 0000000..e673b27
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_selected.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_selected.9.png
new file mode 100644
index 0000000..64b689d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_voice_default.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_voice_default.9.png
new file mode 100644
index 0000000..f65fa14
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_voice_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_voice_pressed.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_voice_pressed.9.png
new file mode 100644
index 0000000..17cc0dd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_voice_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_search_dialog_voice_selected.9.png b/core/res/res/drawable-hdpi/btn_search_dialog_voice_selected.9.png
new file mode 100644
index 0000000..0509e14
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_search_dialog_voice_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_disabled.png b/core/res/res/drawable-hdpi/btn_square_overlay_disabled.png
new file mode 100644
index 0000000..71a037e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_disabled_focused.png b/core/res/res/drawable-hdpi/btn_square_overlay_disabled_focused.png
new file mode 100644
index 0000000..a474605
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_disabled_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_normal.png b/core/res/res/drawable-hdpi/btn_square_overlay_normal.png
new file mode 100644
index 0000000..bf5da22
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_pressed.png b/core/res/res/drawable-hdpi/btn_square_overlay_pressed.png
new file mode 100644
index 0000000..52a302d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_square_overlay_selected.png b/core/res/res/drawable-hdpi/btn_square_overlay_selected.png
new file mode 100644
index 0000000..e065682
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_square_overlay_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off.png b/core/res/res/drawable-hdpi/btn_star_big_off.png
new file mode 100644
index 0000000..4be0f5d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_disable.png b/core/res/res/drawable-hdpi/btn_star_big_off_disable.png
new file mode 100644
index 0000000..faba665
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_disable_focused.png b/core/res/res/drawable-hdpi/btn_star_big_off_disable_focused.png
new file mode 100644
index 0000000..fc8aca4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_pressed.png b/core/res/res/drawable-hdpi/btn_star_big_off_pressed.png
new file mode 100644
index 0000000..b8c8e70
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_off_selected.png b/core/res/res/drawable-hdpi/btn_star_big_off_selected.png
new file mode 100644
index 0000000..86250bb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on.png b/core/res/res/drawable-hdpi/btn_star_big_on.png
new file mode 100644
index 0000000..4213050
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_disable.png b/core/res/res/drawable-hdpi/btn_star_big_on_disable.png
new file mode 100644
index 0000000..5629849
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_disable_focused.png b/core/res/res/drawable-hdpi/btn_star_big_on_disable_focused.png
new file mode 100644
index 0000000..cb9f79c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_pressed.png b/core/res/res/drawable-hdpi/btn_star_big_on_pressed.png
new file mode 100644
index 0000000..648cd1b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_big_on_selected.png b/core/res/res/drawable-hdpi/btn_star_big_on_selected.png
new file mode 100644
index 0000000..cb15673
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_big_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_star_label_background.9.png b/core/res/res/drawable-hdpi/btn_star_label_background.9.png
new file mode 100644
index 0000000..6008067
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_star_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_toggle_off.9.png b/core/res/res/drawable-hdpi/btn_toggle_off.9.png
new file mode 100644
index 0000000..9e141d8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_toggle_off.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_toggle_on.9.png b/core/res/res/drawable-hdpi/btn_toggle_on.9.png
new file mode 100644
index 0000000..dba2fa5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_toggle_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_disabled.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_disabled.9.png
new file mode 100644
index 0000000..6441f4d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_disabled_focused.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_disabled_focused.9.png
new file mode 100644
index 0000000..cfb0613
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_normal.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_normal.9.png
new file mode 100644
index 0000000..b30f834
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_pressed.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_pressed.9.png
new file mode 100644
index 0000000..4ff9910
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_down_selected.9.png b/core/res/res/drawable-hdpi/btn_zoom_down_selected.9.png
new file mode 100644
index 0000000..5542695
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_page_normal.png b/core/res/res/drawable-hdpi/btn_zoom_page_normal.png
new file mode 100644
index 0000000..15d60a0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_page_press.png b/core/res/res/drawable-hdpi/btn_zoom_page_press.png
new file mode 100644
index 0000000..28f437e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_page_press.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_disabled.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_disabled.9.png
new file mode 100644
index 0000000..9813201
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_disabled_focused.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_disabled_focused.9.png
new file mode 100644
index 0000000..8710c72
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_normal.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_normal.9.png
new file mode 100644
index 0000000..763d271
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_pressed.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_pressed.9.png
new file mode 100644
index 0000000..b77936a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/btn_zoom_up_selected.9.png b/core/res/res/drawable-hdpi/btn_zoom_up_selected.9.png
new file mode 100644
index 0000000..a8e4af1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/btn_zoom_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/button_onoff_indicator_off.png b/core/res/res/drawable-hdpi/button_onoff_indicator_off.png
new file mode 100644
index 0000000..9af36e9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/button_onoff_indicator_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/button_onoff_indicator_on.png b/core/res/res/drawable-hdpi/button_onoff_indicator_on.png
new file mode 100644
index 0000000..bde297e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/button_onoff_indicator_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/call_contact.png b/core/res/res/drawable-hdpi/call_contact.png
new file mode 100644
index 0000000..57fea24
--- /dev/null
+++ b/core/res/res/drawable-hdpi/call_contact.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/checkbox_off_background.png b/core/res/res/drawable-hdpi/checkbox_off_background.png
new file mode 100644
index 0000000..a8e4785
--- /dev/null
+++ b/core/res/res/drawable-hdpi/checkbox_off_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/checkbox_on_background.png b/core/res/res/drawable-hdpi/checkbox_on_background.png
new file mode 100644
index 0000000..800d3d5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/checkbox_on_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/clock_dial.png b/core/res/res/drawable-hdpi/clock_dial.png
new file mode 100644
index 0000000..9de29bc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/clock_dial.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/clock_hand_hour.png b/core/res/res/drawable-hdpi/clock_hand_hour.png
new file mode 100644
index 0000000..9f7e5c0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/clock_hand_hour.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/clock_hand_minute.png b/core/res/res/drawable-hdpi/clock_hand_minute.png
new file mode 100644
index 0000000..2eec380
--- /dev/null
+++ b/core/res/res/drawable-hdpi/clock_hand_minute.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/code_lock_bottom.9.png b/core/res/res/drawable-hdpi/code_lock_bottom.9.png
new file mode 100644
index 0000000..e72d0f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/code_lock_bottom.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/code_lock_left.9.png b/core/res/res/drawable-hdpi/code_lock_left.9.png
new file mode 100644
index 0000000..76ff1f5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/code_lock_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/code_lock_top.9.png b/core/res/res/drawable-hdpi/code_lock_top.9.png
new file mode 100644
index 0000000..20af255
--- /dev/null
+++ b/core/res/res/drawable-hdpi/code_lock_top.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/compass_arrow.png b/core/res/res/drawable-hdpi/compass_arrow.png
new file mode 100644
index 0000000..6dbd900
--- /dev/null
+++ b/core/res/res/drawable-hdpi/compass_arrow.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/compass_base.png b/core/res/res/drawable-hdpi/compass_base.png
new file mode 100644
index 0000000..298fc09
--- /dev/null
+++ b/core/res/res/drawable-hdpi/compass_base.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/create_contact.png b/core/res/res/drawable-hdpi/create_contact.png
new file mode 100644
index 0000000..19d59b4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/create_contact.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/dark_header.9.png b/core/res/res/drawable-hdpi/dark_header.9.png
new file mode 100644
index 0000000..a2fa569
--- /dev/null
+++ b/core/res/res/drawable-hdpi/dark_header.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/dialog_divider_horizontal_light.9.png b/core/res/res/drawable-hdpi/dialog_divider_horizontal_light.9.png
new file mode 100644
index 0000000..441ef32
--- /dev/null
+++ b/core/res/res/drawable-hdpi/dialog_divider_horizontal_light.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png b/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
new file mode 100644
index 0000000..c7803a2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png b/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
new file mode 100644
index 0000000..d8d8aa9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
new file mode 100644
index 0000000..63859f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
new file mode 100644
index 0000000..ced2832
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dim_dark.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dim_dark.9.png
new file mode 100644
index 0000000..63859f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dim_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_textfield.9.png b/core/res/res/drawable-hdpi/divider_horizontal_textfield.9.png
new file mode 100644
index 0000000..23b0b51
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_horizontal_textfield.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_vertical_bright.9.png b/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
new file mode 100644
index 0000000..128a4de
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_background_focus_yellow.9.png b/core/res/res/drawable-hdpi/editbox_background_focus_yellow.9.png
new file mode 100644
index 0000000..70cd52b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_background_focus_yellow.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_background_normal.9.png b/core/res/res/drawable-hdpi/editbox_background_normal.9.png
new file mode 100644
index 0000000..ce12b3b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_dropdown_background.9.png b/core/res/res/drawable-hdpi/editbox_dropdown_background.9.png
new file mode 100644
index 0000000..e7967d5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/editbox_dropdown_background_dark.9.png b/core/res/res/drawable-hdpi/editbox_dropdown_background_dark.9.png
new file mode 100644
index 0000000..4cce373
--- /dev/null
+++ b/core/res/res/drawable-hdpi/editbox_dropdown_background_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_angel.png b/core/res/res/drawable-hdpi/emo_im_angel.png
new file mode 100644
index 0000000..10742a6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_angel.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_cool.png b/core/res/res/drawable-hdpi/emo_im_cool.png
new file mode 100644
index 0000000..e3c8654
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_cool.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_crying.png b/core/res/res/drawable-hdpi/emo_im_crying.png
new file mode 100644
index 0000000..b23791c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_crying.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_foot_in_mouth.png b/core/res/res/drawable-hdpi/emo_im_foot_in_mouth.png
new file mode 100644
index 0000000..050b7be
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_foot_in_mouth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_happy.png b/core/res/res/drawable-hdpi/emo_im_happy.png
new file mode 100644
index 0000000..69e3bed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_happy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_kissing.png b/core/res/res/drawable-hdpi/emo_im_kissing.png
new file mode 100644
index 0000000..0cca68e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_kissing.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_laughing.png b/core/res/res/drawable-hdpi/emo_im_laughing.png
new file mode 100644
index 0000000..8406ad0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_laughing.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_lips_are_sealed.png b/core/res/res/drawable-hdpi/emo_im_lips_are_sealed.png
new file mode 100644
index 0000000..222f175
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_lips_are_sealed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_money_mouth.png b/core/res/res/drawable-hdpi/emo_im_money_mouth.png
new file mode 100644
index 0000000..d711bfb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_money_mouth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_sad.png b/core/res/res/drawable-hdpi/emo_im_sad.png
new file mode 100644
index 0000000..40017f1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_sad.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_surprised.png b/core/res/res/drawable-hdpi/emo_im_surprised.png
new file mode 100644
index 0000000..4b2af7a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_surprised.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_tongue_sticking_out.png b/core/res/res/drawable-hdpi/emo_im_tongue_sticking_out.png
new file mode 100644
index 0000000..42ac80d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_tongue_sticking_out.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_undecided.png b/core/res/res/drawable-hdpi/emo_im_undecided.png
new file mode 100644
index 0000000..2cf5bd2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_undecided.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_winking.png b/core/res/res/drawable-hdpi/emo_im_winking.png
new file mode 100644
index 0000000..a3a0876
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_winking.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_wtf.png b/core/res/res/drawable-hdpi/emo_im_wtf.png
new file mode 100644
index 0000000..86c4bda
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_wtf.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/emo_im_yelling.png b/core/res/res/drawable-hdpi/emo_im_yelling.png
new file mode 100644
index 0000000..cfd991a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/emo_im_yelling.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_ic_maximized.9.png b/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
new file mode 100644
index 0000000..4dcb984
--- /dev/null
+++ b/core/res/res/drawable-hdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/expander_ic_minimized.9.png b/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
new file mode 100644
index 0000000..45b7322
--- /dev/null
+++ b/core/res/res/drawable-hdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/focused_application_background_static.png b/core/res/res/drawable-hdpi/focused_application_background_static.png
new file mode 100644
index 0000000..6872f26
--- /dev/null
+++ b/core/res/res/drawable-hdpi/focused_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/frame_gallery_thumb.9.png b/core/res/res/drawable-hdpi/frame_gallery_thumb.9.png
new file mode 100644
index 0000000..8edbd3f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/frame_gallery_thumb.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/frame_gallery_thumb_pressed.9.png b/core/res/res/drawable-hdpi/frame_gallery_thumb_pressed.9.png
new file mode 100644
index 0000000..986e6d5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/frame_gallery_thumb_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/frame_gallery_thumb_selected.9.png b/core/res/res/drawable-hdpi/frame_gallery_thumb_selected.9.png
new file mode 100644
index 0000000..95f3ab5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/frame_gallery_thumb_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_selected_default.9.png b/core/res/res/drawable-hdpi/gallery_selected_default.9.png
new file mode 100644
index 0000000..99403aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_selected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_selected_focused.9.png b/core/res/res/drawable-hdpi/gallery_selected_focused.9.png
new file mode 100644
index 0000000..3aa2e17
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_selected_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_selected_pressed.9.png b/core/res/res/drawable-hdpi/gallery_selected_pressed.9.png
new file mode 100644
index 0000000..8f1e752
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_selected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_unselected_default.9.png b/core/res/res/drawable-hdpi/gallery_unselected_default.9.png
new file mode 100644
index 0000000..855dca1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_unselected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/gallery_unselected_pressed.9.png b/core/res/res/drawable-hdpi/gallery_unselected_pressed.9.png
new file mode 100644
index 0000000..5ec400c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/gallery_unselected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/grid_selector_background_focus.9.png b/core/res/res/drawable-hdpi/grid_selector_background_focus.9.png
new file mode 100644
index 0000000..be2aeed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/grid_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/grid_selector_background_pressed.9.png b/core/res/res/drawable-hdpi/grid_selector_background_pressed.9.png
new file mode 100644
index 0000000..27e455a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/grid_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/highlight_disabled.9.png b/core/res/res/drawable-hdpi/highlight_disabled.9.png
new file mode 100644
index 0000000..46f755d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/highlight_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/highlight_pressed.9.png b/core/res/res/drawable-hdpi/highlight_pressed.9.png
new file mode 100644
index 0000000..91d7db1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/highlight_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/highlight_selected.9.png b/core/res/res/drawable-hdpi/highlight_selected.9.png
new file mode 100644
index 0000000..6e92dd5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/highlight_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_round_more_disabled.png b/core/res/res/drawable-hdpi/ic_btn_round_more_disabled.png
new file mode 100644
index 0000000..0125944
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_round_more_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_round_more_normal.png b/core/res/res/drawable-hdpi/ic_btn_round_more_normal.png
new file mode 100644
index 0000000..33d7f89
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_round_more_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_search.png b/core/res/res/drawable-hdpi/ic_btn_search.png
new file mode 100644
index 0000000..23eebf5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_search.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_speak_now.png b/core/res/res/drawable-hdpi/ic_btn_speak_now.png
new file mode 100644
index 0000000..6dc01fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_speak_now.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_disabled.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
new file mode 100644
index 0000000..19fe4d4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_normal.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_normal.png
new file mode 100644
index 0000000..c5a0594
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_fit_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_disabled.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
new file mode 100644
index 0000000..e5b22e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_normal.png b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_normal.png
new file mode 100644
index 0000000..0612d01
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_btn_square_browser_zoom_page_overview_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_bullet_key_permission.png b/core/res/res/drawable-hdpi/ic_bullet_key_permission.png
new file mode 100644
index 0000000..98d95dc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_bullet_key_permission.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_contact_picture.png b/core/res/res/drawable-hdpi/ic_contact_picture.png
new file mode 100644
index 0000000..a60565a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_contact_picture.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_delete.png b/core/res/res/drawable-hdpi/ic_delete.png
new file mode 100644
index 0000000..f3e53d7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_alert.png b/core/res/res/drawable-hdpi/ic_dialog_alert.png
new file mode 100644
index 0000000..7f905ba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_alert.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_dialer.png b/core/res/res/drawable-hdpi/ic_dialog_dialer.png
new file mode 100644
index 0000000..2ded243
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_dialer.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_email.png b/core/res/res/drawable-hdpi/ic_dialog_email.png
new file mode 100644
index 0000000..faea271
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_email.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_info.png b/core/res/res/drawable-hdpi/ic_dialog_info.png
new file mode 100644
index 0000000..efee1ef
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_info.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_map.png b/core/res/res/drawable-hdpi/ic_dialog_map.png
new file mode 100644
index 0000000..f102b08
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_map.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_menu_generic.png b/core/res/res/drawable-hdpi/ic_dialog_menu_generic.png
new file mode 100644
index 0000000..ef8a877
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_menu_generic.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_time.png b/core/res/res/drawable-hdpi/ic_dialog_time.png
new file mode 100644
index 0000000..337a43a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_time.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_dialog_usb.png b/core/res/res/drawable-hdpi/ic_dialog_usb.png
new file mode 100644
index 0000000..e69e14a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_dialog_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_emergency.png b/core/res/res/drawable-hdpi/ic_emergency.png
new file mode 100644
index 0000000..a2dd372
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_emergency.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_input_add.png b/core/res/res/drawable-hdpi/ic_input_add.png
new file mode 100644
index 0000000..d26ebac
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_input_add.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_input_delete.png b/core/res/res/drawable-hdpi/ic_input_delete.png
new file mode 100644
index 0000000..f35f89f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_input_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_input_get.png b/core/res/res/drawable-hdpi/ic_input_get.png
new file mode 100644
index 0000000..e2b665a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_input_get.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_launcher_android.png b/core/res/res/drawable-hdpi/ic_launcher_android.png
new file mode 100644
index 0000000..d70b8ca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_launcher_android.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_airplane_mode.png b/core/res/res/drawable-hdpi/ic_lock_airplane_mode.png
new file mode 100644
index 0000000..610f9d0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_airplane_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_airplane_mode_off.png b/core/res/res/drawable-hdpi/ic_lock_airplane_mode_off.png
new file mode 100644
index 0000000..cd50647
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_airplane_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_alarm.png b/core/res/res/drawable-hdpi/ic_lock_idle_alarm.png
new file mode 100644
index 0000000..3f3af06
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_charging.png b/core/res/res/drawable-hdpi/ic_lock_idle_charging.png
new file mode 100644
index 0000000..42572ee
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_charging.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_lock.png b/core/res/res/drawable-hdpi/ic_lock_idle_lock.png
new file mode 100644
index 0000000..11163d8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_lock.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_idle_low_battery.png b/core/res/res/drawable-hdpi/ic_lock_idle_low_battery.png
new file mode 100644
index 0000000..30ff905
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_idle_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_lock.png b/core/res/res/drawable-hdpi/ic_lock_lock.png
new file mode 100644
index 0000000..0fc79e1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_lock.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_power_off.png b/core/res/res/drawable-hdpi/ic_lock_power_off.png
new file mode 100644
index 0000000..2f120c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_power_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_silent_mode.png b/core/res/res/drawable-hdpi/ic_lock_silent_mode.png
new file mode 100644
index 0000000..00e1960
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_silent_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_lock_silent_mode_off.png b/core/res/res/drawable-hdpi/ic_lock_silent_mode_off.png
new file mode 100644
index 0000000..6b4ce89
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_lock_silent_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position.png
new file mode 100644
index 0000000..bc9160d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim1.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim1.png
new file mode 100644
index 0000000..d3d9339
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim2.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim2.png
new file mode 100644
index 0000000..e32c223
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim3.png b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim3.png
new file mode 100644
index 0000000..cf2db7c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_maps_indicator_current_position_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_ff.png b/core/res/res/drawable-hdpi/ic_media_ff.png
new file mode 100644
index 0000000..b0dc05b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_ff.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_next.png b/core/res/res/drawable-hdpi/ic_media_next.png
new file mode 100644
index 0000000..2552f4e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_next.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_pause.png b/core/res/res/drawable-hdpi/ic_media_pause.png
new file mode 100644
index 0000000..d4670c2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_pause.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_play.png b/core/res/res/drawable-hdpi/ic_media_play.png
new file mode 100644
index 0000000..e67ec80
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_play.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_previous.png b/core/res/res/drawable-hdpi/ic_media_previous.png
new file mode 100644
index 0000000..05eba71
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_previous.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_media_rew.png b/core/res/res/drawable-hdpi/ic_media_rew.png
new file mode 100644
index 0000000..88eed2e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_media_rew.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_account_list.png b/core/res/res/drawable-hdpi/ic_menu_account_list.png
new file mode 100644
index 0000000..f858d2c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_account_list.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_add.png b/core/res/res/drawable-hdpi/ic_menu_add.png
new file mode 100644
index 0000000..65cc01e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_add.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_agenda.png b/core/res/res/drawable-hdpi/ic_menu_agenda.png
new file mode 100644
index 0000000..6bb5cc8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_agenda.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_allfriends.png b/core/res/res/drawable-hdpi/ic_menu_allfriends.png
new file mode 100644
index 0000000..8d11ca1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_allfriends.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_always_landscape_portrait.png b/core/res/res/drawable-hdpi/ic_menu_always_landscape_portrait.png
new file mode 100644
index 0000000..7ae1760a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_always_landscape_portrait.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_archive.png b/core/res/res/drawable-hdpi/ic_menu_archive.png
new file mode 100644
index 0000000..9ca5c62
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_archive.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_attachment.png b/core/res/res/drawable-hdpi/ic_menu_attachment.png
new file mode 100644
index 0000000..8f11153
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_attachment.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_back.png b/core/res/res/drawable-hdpi/ic_menu_back.png
new file mode 100644
index 0000000..a6cd712
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_back.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_block.png b/core/res/res/drawable-hdpi/ic_menu_block.png
new file mode 100644
index 0000000..e1f9c2c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_block.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_blocked_user.png b/core/res/res/drawable-hdpi/ic_menu_blocked_user.png
new file mode 100644
index 0000000..3dd9a4a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_blocked_user.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_call.png b/core/res/res/drawable-hdpi/ic_menu_call.png
new file mode 100644
index 0000000..2ccc087
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_camera.png b/core/res/res/drawable-hdpi/ic_menu_camera.png
new file mode 100644
index 0000000..5a3850f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_camera.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_cc.png b/core/res/res/drawable-hdpi/ic_menu_cc.png
new file mode 100644
index 0000000..47905a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_cc.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_chat_dashboard.png b/core/res/res/drawable-hdpi/ic_menu_chat_dashboard.png
new file mode 100644
index 0000000..dde6741
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_chat_dashboard.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_clear_playlist.png b/core/res/res/drawable-hdpi/ic_menu_clear_playlist.png
new file mode 100644
index 0000000..e6be48b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_clear_playlist.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_close_clear_cancel.png b/core/res/res/drawable-hdpi/ic_menu_close_clear_cancel.png
new file mode 100644
index 0000000..a54ea9d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_close_clear_cancel.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_compass.png b/core/res/res/drawable-hdpi/ic_menu_compass.png
new file mode 100644
index 0000000..104270f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_compass.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_compose.png b/core/res/res/drawable-hdpi/ic_menu_compose.png
new file mode 100644
index 0000000..6ad379e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_compose.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_crop.png b/core/res/res/drawable-hdpi/ic_menu_crop.png
new file mode 100644
index 0000000..0d4c9fe
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_crop.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_day.png b/core/res/res/drawable-hdpi/ic_menu_day.png
new file mode 100644
index 0000000..84429aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_day.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_delete.png b/core/res/res/drawable-hdpi/ic_menu_delete.png
new file mode 100644
index 0000000..2aed26a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_delete.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_directions.png b/core/res/res/drawable-hdpi/ic_menu_directions.png
new file mode 100644
index 0000000..23f6eb3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_directions.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_edit.png b/core/res/res/drawable-hdpi/ic_menu_edit.png
new file mode 100644
index 0000000..602dd10
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_edit.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_emoticons.png b/core/res/res/drawable-hdpi/ic_menu_emoticons.png
new file mode 100644
index 0000000..2fab515
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_emoticons.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_end_conversation.png b/core/res/res/drawable-hdpi/ic_menu_end_conversation.png
new file mode 100644
index 0000000..c05a207
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_end_conversation.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_forward.png b/core/res/res/drawable-hdpi/ic_menu_forward.png
new file mode 100644
index 0000000..606e6aa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_forward.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_friendslist.png b/core/res/res/drawable-hdpi/ic_menu_friendslist.png
new file mode 100644
index 0000000..a90e573
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_friendslist.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_gallery.png b/core/res/res/drawable-hdpi/ic_menu_gallery.png
new file mode 100644
index 0000000..76dfbc3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_gallery.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_goto.png b/core/res/res/drawable-hdpi/ic_menu_goto.png
new file mode 100644
index 0000000..a1acecb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_goto.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_help.png b/core/res/res/drawable-hdpi/ic_menu_help.png
new file mode 100644
index 0000000..4300e86
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_help.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_home.png b/core/res/res/drawable-hdpi/ic_menu_home.png
new file mode 100644
index 0000000..35cb52a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_home.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_info_details.png b/core/res/res/drawable-hdpi/ic_menu_info_details.png
new file mode 100644
index 0000000..7696ceb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_info_details.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_invite.png b/core/res/res/drawable-hdpi/ic_menu_invite.png
new file mode 100644
index 0000000..3cb129f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_invite.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_login.png b/core/res/res/drawable-hdpi/ic_menu_login.png
new file mode 100644
index 0000000..d23ebf0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_login.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_manage.png b/core/res/res/drawable-hdpi/ic_menu_manage.png
new file mode 100644
index 0000000..c7c4cbce
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_manage.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_mapmode.png b/core/res/res/drawable-hdpi/ic_menu_mapmode.png
new file mode 100644
index 0000000..c895ccb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_mapmode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_mark.png b/core/res/res/drawable-hdpi/ic_menu_mark.png
new file mode 100644
index 0000000..724d787
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_mark.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_month.png b/core/res/res/drawable-hdpi/ic_menu_month.png
new file mode 100644
index 0000000..3e55ae6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_month.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_more.png b/core/res/res/drawable-hdpi/ic_menu_more.png
new file mode 100644
index 0000000..ed4376f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_more.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_my_calendar.png b/core/res/res/drawable-hdpi/ic_menu_my_calendar.png
new file mode 100644
index 0000000..3d6ea1f3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_my_calendar.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_mylocation.png b/core/res/res/drawable-hdpi/ic_menu_mylocation.png
new file mode 100644
index 0000000..1bcb0cd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_mylocation.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_myplaces.png b/core/res/res/drawable-hdpi/ic_menu_myplaces.png
new file mode 100644
index 0000000..5f726d8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_myplaces.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_notifications.png b/core/res/res/drawable-hdpi/ic_menu_notifications.png
new file mode 100644
index 0000000..fb63937
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_notifications.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_play_clip.png b/core/res/res/drawable-hdpi/ic_menu_play_clip.png
new file mode 100644
index 0000000..ddde03a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_play_clip.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_preferences.png b/core/res/res/drawable-hdpi/ic_menu_preferences.png
new file mode 100644
index 0000000..64c42d2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_preferences.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_recent_history.png b/core/res/res/drawable-hdpi/ic_menu_recent_history.png
new file mode 100644
index 0000000..0dd1627
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_recent_history.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_refresh.png b/core/res/res/drawable-hdpi/ic_menu_refresh.png
new file mode 100644
index 0000000..53caccac
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_refresh.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_report_image.png b/core/res/res/drawable-hdpi/ic_menu_report_image.png
new file mode 100644
index 0000000..b6aa5d6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_report_image.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_revert.png b/core/res/res/drawable-hdpi/ic_menu_revert.png
new file mode 100644
index 0000000..11860a4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_revert.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_rotate.png b/core/res/res/drawable-hdpi/ic_menu_rotate.png
new file mode 100644
index 0000000..85115af
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_rotate.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_save.png b/core/res/res/drawable-hdpi/ic_menu_save.png
new file mode 100644
index 0000000..fc26c5d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_save.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_search.png b/core/res/res/drawable-hdpi/ic_menu_search.png
new file mode 100644
index 0000000..f78234e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_search.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_send.png b/core/res/res/drawable-hdpi/ic_menu_send.png
new file mode 100644
index 0000000..2567b58
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_send.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_set_as.png b/core/res/res/drawable-hdpi/ic_menu_set_as.png
new file mode 100644
index 0000000..7e79c15
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_set_as.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_share.png b/core/res/res/drawable-hdpi/ic_menu_share.png
new file mode 100644
index 0000000..b41b348
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_share.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_slideshow.png b/core/res/res/drawable-hdpi/ic_menu_slideshow.png
new file mode 100644
index 0000000..53b1a6f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_slideshow.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_sort_alphabetically.png b/core/res/res/drawable-hdpi/ic_menu_sort_alphabetically.png
new file mode 100644
index 0000000..5d68998
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_sort_alphabetically.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_sort_by_size.png b/core/res/res/drawable-hdpi/ic_menu_sort_by_size.png
new file mode 100644
index 0000000..c9388fd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_sort_by_size.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_star.png b/core/res/res/drawable-hdpi/ic_menu_star.png
new file mode 100644
index 0000000..21a2c4b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_star.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_start_conversation.png b/core/res/res/drawable-hdpi/ic_menu_start_conversation.png
new file mode 100644
index 0000000..d63d3a7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_start_conversation.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_stop.png b/core/res/res/drawable-hdpi/ic_menu_stop.png
new file mode 100644
index 0000000..7c99ed4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_stop.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_today.png b/core/res/res/drawable-hdpi/ic_menu_today.png
new file mode 100644
index 0000000..4a9352d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_today.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_upload.png b/core/res/res/drawable-hdpi/ic_menu_upload.png
new file mode 100644
index 0000000..d845112
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_upload.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_upload_you_tube.png b/core/res/res/drawable-hdpi/ic_menu_upload_you_tube.png
new file mode 100644
index 0000000..df5fa7f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_upload_you_tube.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_view.png b/core/res/res/drawable-hdpi/ic_menu_view.png
new file mode 100644
index 0000000..75155d4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_view.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_week.png b/core/res/res/drawable-hdpi/ic_menu_week.png
new file mode 100644
index 0000000..c216eca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_week.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_menu_zoom.png b/core/res/res/drawable-hdpi/ic_menu_zoom.png
new file mode 100644
index 0000000..9fa4d7e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_menu_zoom.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_notification_clear_all.png b/core/res/res/drawable-hdpi/ic_notification_clear_all.png
new file mode 100644
index 0000000..6bff858
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_notification_clear_all.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_notification_overlay.9.png b/core/res/res/drawable-hdpi/ic_notification_overlay.9.png
new file mode 100644
index 0000000..744178f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_partial_secure.png b/core/res/res/drawable-hdpi/ic_partial_secure.png
new file mode 100644
index 0000000..70bd08d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_partial_secure.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_disk_full.png b/core/res/res/drawable-hdpi/ic_popup_disk_full.png
new file mode 100644
index 0000000..b3c00a7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_reminder.png b/core/res/res/drawable-hdpi/ic_popup_reminder.png
new file mode 100644
index 0000000..9652dde
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_reminder.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_1.png b/core/res/res/drawable-hdpi/ic_popup_sync_1.png
new file mode 100644
index 0000000..a248f59
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_2.png b/core/res/res/drawable-hdpi/ic_popup_sync_2.png
new file mode 100644
index 0000000..756bfc6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_3.png b/core/res/res/drawable-hdpi/ic_popup_sync_3.png
new file mode 100644
index 0000000..e06825b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_4.png b/core/res/res/drawable-hdpi/ic_popup_sync_4.png
new file mode 100644
index 0000000..87ce8f6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_5.png b/core/res/res/drawable-hdpi/ic_popup_sync_5.png
new file mode 100644
index 0000000..635480c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_popup_sync_6.png b/core/res/res/drawable-hdpi/ic_popup_sync_6.png
new file mode 100644
index 0000000..b339eb2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_popup_sync_6.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_search_category_default.png b/core/res/res/drawable-hdpi/ic_search_category_default.png
new file mode 100644
index 0000000..4038129
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_search_category_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_secure.png b/core/res/res/drawable-hdpi/ic_secure.png
new file mode 100644
index 0000000..5fb62c2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_secure.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_text_dot.png b/core/res/res/drawable-hdpi/ic_text_dot.png
new file mode 100644
index 0000000..a7eaec5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_text_dot.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_vibrate.png b/core/res/res/drawable-hdpi/ic_vibrate.png
new file mode 100644
index 0000000..3d1e9a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume.png b/core/res/res/drawable-hdpi/ic_volume.png
new file mode 100644
index 0000000..ec555f1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_bluetooth_ad2p.png b/core/res/res/drawable-hdpi/ic_volume_bluetooth_ad2p.png
new file mode 100644
index 0000000..31851e1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_bluetooth_ad2p.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_bluetooth_in_call.png b/core/res/res/drawable-hdpi/ic_volume_bluetooth_in_call.png
new file mode 100644
index 0000000..108a9e1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_bluetooth_in_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_off.png b/core/res/res/drawable-hdpi/ic_volume_off.png
new file mode 100644
index 0000000..3ace6bf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_off_small.png b/core/res/res/drawable-hdpi/ic_volume_off_small.png
new file mode 100644
index 0000000..4b36677
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_off_small.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ic_volume_small.png b/core/res/res/drawable-hdpi/ic_volume_small.png
new file mode 100644
index 0000000..538e304
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ic_volume_small.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/icon_highlight_rectangle.9.png b/core/res/res/drawable-hdpi/icon_highlight_rectangle.9.png
new file mode 100644
index 0000000..a4da974
--- /dev/null
+++ b/core/res/res/drawable-hdpi/icon_highlight_rectangle.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/icon_highlight_square.9.png b/core/res/res/drawable-hdpi/icon_highlight_square.9.png
new file mode 100644
index 0000000..6f9a442
--- /dev/null
+++ b/core/res/res/drawable-hdpi/icon_highlight_square.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/ime_qwerty.png b/core/res/res/drawable-hdpi/ime_qwerty.png
new file mode 100644
index 0000000..f9967cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/ime_qwerty.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_green_up.png b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_green_up.png
new file mode 100644
index 0000000..6560696
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_green_up.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png
new file mode 100644
index 0000000..698c3ec
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_drag_direction_red_up.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png
new file mode 100644
index 0000000..0102a61
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_default.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png
new file mode 100644
index 0000000..82ad8f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_green.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png
new file mode 100644
index 0000000..f9d0d33
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_code_lock_point_area_red.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/indicator_input_error.png b/core/res/res/drawable-hdpi/indicator_input_error.png
new file mode 100644
index 0000000..213976c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/indicator_input_error.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_accessory_bg_landscape.9.png b/core/res/res/drawable-hdpi/keyboard_accessory_bg_landscape.9.png
new file mode 100644
index 0000000..5b0f6c5a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_accessory_bg_landscape.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_background.9.png b/core/res/res/drawable-hdpi/keyboard_background.9.png
new file mode 100644
index 0000000..7a03b8e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_key_feedback_background.9.png b/core/res/res/drawable-hdpi/keyboard_key_feedback_background.9.png
new file mode 100644
index 0000000..dc3e1f9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png b/core/res/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
new file mode 100644
index 0000000..c67ed53
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_popup_panel_background.9.png b/core/res/res/drawable-hdpi/keyboard_popup_panel_background.9.png
new file mode 100644
index 0000000..8e2461b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/keyboard_textfield_selected.9.png b/core/res/res/drawable-hdpi/keyboard_textfield_selected.9.png
new file mode 100644
index 0000000..61db22c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/keyboard_textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/light_header.9.png b/core/res/res/drawable-hdpi/light_header.9.png
new file mode 100644
index 0000000..27db59d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/light_header.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png b/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
new file mode 100644
index 0000000..c40233e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_focus.9.png b/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
new file mode 100644
index 0000000..d8e16b99
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png b/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
new file mode 100644
index 0000000..1676ca7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_longpress.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png b/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
new file mode 100644
index 0000000..ba79cf7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/loading_tile.png b/core/res/res/drawable-hdpi/loading_tile.png
new file mode 100644
index 0000000..691ca45
--- /dev/null
+++ b/core/res/res/drawable-hdpi/loading_tile.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/maps_google_logo.png b/core/res/res/drawable-hdpi/maps_google_logo.png
new file mode 100644
index 0000000..5956ee2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/maps_google_logo.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_background.9.png b/core/res/res/drawable-hdpi/menu_background.9.png
new file mode 100644
index 0000000..cbe62af
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png b/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
new file mode 100644
index 0000000..0812487
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_background_fill_parent_width.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_separator.9.png b/core/res/res/drawable-hdpi/menu_separator.9.png
new file mode 100644
index 0000000..3685b4e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_separator.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menu_submenu_background.9.png b/core/res/res/drawable-hdpi/menu_submenu_background.9.png
new file mode 100644
index 0000000..cbd4400
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menu_submenu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menuitem_background_focus.9.png b/core/res/res/drawable-hdpi/menuitem_background_focus.9.png
new file mode 100644
index 0000000..d8e16b99
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menuitem_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menuitem_background_pressed.9.png b/core/res/res/drawable-hdpi/menuitem_background_pressed.9.png
new file mode 100644
index 0000000..ba79cf7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menuitem_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_focused.9.png b/core/res/res/drawable-hdpi/menuitem_background_solid_focused.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_solid_focused.9.png
rename to core/res/res/drawable-hdpi/menuitem_background_solid_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_pressed.9.png b/core/res/res/drawable-hdpi/menuitem_background_solid_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_solid_pressed.9.png
rename to core/res/res/drawable-hdpi/menuitem_background_solid_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/menuitem_checkbox_on.png b/core/res/res/drawable-hdpi/menuitem_checkbox_on.png
new file mode 100644
index 0000000..e90f631
--- /dev/null
+++ b/core/res/res/drawable-hdpi/menuitem_checkbox_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/no_tile_128.png b/core/res/res/drawable-hdpi/no_tile_128.png
new file mode 100644
index 0000000..86b998d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/no_tile_128.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_background.9.png b/core/res/res/drawable-hdpi/panel_background.9.png
new file mode 100644
index 0000000..bfe5713
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_picture_frame_bg_focus_blue.9.png b/core/res/res/drawable-hdpi/panel_picture_frame_bg_focus_blue.9.png
new file mode 100644
index 0000000..fdafdf5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_picture_frame_bg_focus_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_picture_frame_bg_normal.9.png b/core/res/res/drawable-hdpi/panel_picture_frame_bg_normal.9.png
new file mode 100644
index 0000000..a654277
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_picture_frame_bg_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/panel_picture_frame_bg_pressed_blue.9.png b/core/res/res/drawable-hdpi/panel_picture_frame_bg_pressed_blue.9.png
new file mode 100644
index 0000000..73162a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/panel_picture_frame_bg_pressed_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pickerbox_background.png b/core/res/res/drawable-hdpi/pickerbox_background.png
new file mode 100644
index 0000000..9315a31
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pickerbox_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pickerbox_selected.9.png b/core/res/res/drawable-hdpi/pickerbox_selected.9.png
new file mode 100644
index 0000000..a88ec63
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pickerbox_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pickerbox_unselected.9.png b/core/res/res/drawable-hdpi/pickerbox_unselected.9.png
new file mode 100644
index 0000000..9f6b7cb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pickerbox_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/picture_emergency.png b/core/res/res/drawable-hdpi/picture_emergency.png
new file mode 100644
index 0000000..b0f10f9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/picture_emergency.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/picture_frame.9.png b/core/res/res/drawable-hdpi/picture_frame.9.png
new file mode 100644
index 0000000..c038b2a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/picture_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_bright.9.png b/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
new file mode 100644
index 0000000..cca47d3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_bottom_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_dark.9.png b/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
new file mode 100644
index 0000000..62a0bd0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_bottom_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_bottom_medium.9.png b/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
new file mode 100644
index 0000000..6ebb4f7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_bottom_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_bright.9.png b/core/res/res/drawable-hdpi/popup_center_bright.9.png
new file mode 100644
index 0000000..756e9ed
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_center_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_dark.9.png b/core/res/res/drawable-hdpi/popup_center_dark.9.png
new file mode 100644
index 0000000..77b4524
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_center_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_center_medium.9.png b/core/res/res/drawable-hdpi/popup_center_medium.9.png
new file mode 100644
index 0000000..de4be2a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_center_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_full_bright.9.png b/core/res/res/drawable-hdpi/popup_full_bright.9.png
new file mode 100644
index 0000000..6c30bec
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_full_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_full_dark.9.png b/core/res/res/drawable-hdpi/popup_full_dark.9.png
new file mode 100644
index 0000000..fc8c00e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_full_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_inline_error.9.png b/core/res/res/drawable-hdpi/popup_inline_error.9.png
new file mode 100644
index 0000000..b188d81
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_inline_error.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_inline_error_above.9.png b/core/res/res/drawable-hdpi/popup_inline_error_above.9.png
new file mode 100644
index 0000000..3d4e8ba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_inline_error_above.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_top_bright.9.png b/core/res/res/drawable-hdpi/popup_top_bright.9.png
new file mode 100644
index 0000000..ddd30ab
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_top_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/popup_top_dark.9.png b/core/res/res/drawable-hdpi/popup_top_dark.9.png
new file mode 100644
index 0000000..144d0fc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/popup_top_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_away.png b/core/res/res/drawable-hdpi/presence_away.png
new file mode 100644
index 0000000..d4aa66b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_busy.png b/core/res/res/drawable-hdpi/presence_busy.png
new file mode 100644
index 0000000..4b27853
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_invisible.png b/core/res/res/drawable-hdpi/presence_invisible.png
new file mode 100644
index 0000000..0e27fba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_offline.png b/core/res/res/drawable-hdpi/presence_offline.png
new file mode 100644
index 0000000..e511aa4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/presence_online.png b/core/res/res/drawable-hdpi/presence_online.png
new file mode 100644
index 0000000..d787d2f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/pressed_application_background_static.png b/core/res/res/drawable-hdpi/pressed_application_background_static.png
new file mode 100644
index 0000000..dae96e6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/pressed_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/progressbar_indeterminate1.png b/core/res/res/drawable-hdpi/progressbar_indeterminate1.png
new file mode 100644
index 0000000..ea88e32
--- /dev/null
+++ b/core/res/res/drawable-hdpi/progressbar_indeterminate1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/progressbar_indeterminate2.png b/core/res/res/drawable-hdpi/progressbar_indeterminate2.png
new file mode 100644
index 0000000..436c48c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/progressbar_indeterminate2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/progressbar_indeterminate3.png b/core/res/res/drawable-hdpi/progressbar_indeterminate3.png
new file mode 100644
index 0000000..ea88e32
--- /dev/null
+++ b/core/res/res/drawable-hdpi/progressbar_indeterminate3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/radiobutton_off_background.png b/core/res/res/drawable-hdpi/radiobutton_off_background.png
new file mode 100644
index 0000000..5ce33cd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/radiobutton_off_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/radiobutton_on_background.png b/core/res/res/drawable-hdpi/radiobutton_on_background.png
new file mode 100644
index 0000000..0f46071
--- /dev/null
+++ b/core/res/res/drawable-hdpi/radiobutton_on_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_big_half.png b/core/res/res/drawable-hdpi/rate_star_big_half.png
new file mode 100644
index 0000000..61906a5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_big_half.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_big_off.png b/core/res/res/drawable-hdpi/rate_star_big_off.png
new file mode 100644
index 0000000..a688a45
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_big_on.png b/core/res/res/drawable-hdpi/rate_star_big_on.png
new file mode 100644
index 0000000..77cb067
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_small_half.png b/core/res/res/drawable-hdpi/rate_star_small_half.png
new file mode 100644
index 0000000..6b2efd9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_small_half.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_small_off.png b/core/res/res/drawable-hdpi/rate_star_small_off.png
new file mode 100644
index 0000000..8422919
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_small_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/rate_star_small_on.png b/core/res/res/drawable-hdpi/rate_star_small_on.png
new file mode 100644
index 0000000..45e2324
--- /dev/null
+++ b/core/res/res/drawable-hdpi/rate_star_small_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/reticle.png b/core/res/res/drawable-hdpi/reticle.png
new file mode 100644
index 0000000..a3e8c1b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/reticle.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/screen_progress_frame.9.png b/core/res/res/drawable-hdpi/screen_progress_frame.9.png
new file mode 100644
index 0000000..3f9d738
--- /dev/null
+++ b/core/res/res/drawable-hdpi/screen_progress_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/screen_progress_inner.9.png b/core/res/res/drawable-hdpi/screen_progress_inner.9.png
new file mode 100644
index 0000000..10c7da5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/screen_progress_inner.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_accelerated_anim2.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_accelerated_anim2.9.png
new file mode 100644
index 0000000..b540cd3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/scrollbar_handle_accelerated_anim2.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_horizontal.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_horizontal.9.png
new file mode 100644
index 0000000..cd206e2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/scrollbar_handle_horizontal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/scrollbar_handle_vertical.9.png b/core/res/res/drawable-hdpi/scrollbar_handle_vertical.9.png
new file mode 100644
index 0000000..3ec0791
--- /dev/null
+++ b/core/res/res/drawable-hdpi/scrollbar_handle_vertical.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/search_dropdown_background.9.png b/core/res/res/drawable-hdpi/search_dropdown_background.9.png
new file mode 100644
index 0000000..e6945db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/search_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/search_plate.9.png b/core/res/res/drawable-hdpi/search_plate.9.png
new file mode 100644
index 0000000..561c9fa
--- /dev/null
+++ b/core/res/res/drawable-hdpi/search_plate.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/search_plate_global.9.png b/core/res/res/drawable-hdpi/search_plate_global.9.png
new file mode 100644
index 0000000..32c6dc3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/search_plate_global.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/seek_thumb_normal.png b/core/res/res/drawable-hdpi/seek_thumb_normal.png
new file mode 100644
index 0000000..cc83a7d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/seek_thumb_normal.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/seek_thumb_pressed.png b/core/res/res/drawable-hdpi/seek_thumb_pressed.png
new file mode 100644
index 0000000..15f79ea
--- /dev/null
+++ b/core/res/res/drawable-hdpi/seek_thumb_pressed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/seek_thumb_selected.png b/core/res/res/drawable-hdpi/seek_thumb_selected.png
new file mode 100644
index 0000000..8a7cf68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/seek_thumb_selected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/settings_header_raw.9.png b/core/res/res/drawable-hdpi/settings_header_raw.9.png
new file mode 100644
index 0000000..6857c0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/settings_header_raw.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_16.png b/core/res/res/drawable-hdpi/spinner_black_16.png
new file mode 100644
index 0000000..eb34867
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_16.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_20.png b/core/res/res/drawable-hdpi/spinner_black_20.png
new file mode 100644
index 0000000..dac06d7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_20.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_48.png b/core/res/res/drawable-hdpi/spinner_black_48.png
new file mode 100644
index 0000000..337f72a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_48.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_black_76.png b/core/res/res/drawable-hdpi/spinner_black_76.png
new file mode 100644
index 0000000..2edc3e7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_black_76.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_dropdown_background_down.9.png b/core/res/res/drawable-hdpi/spinner_dropdown_background_down.9.png
new file mode 100644
index 0000000..566543d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_dropdown_background_down.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_dropdown_background_up.9.png b/core/res/res/drawable-hdpi/spinner_dropdown_background_up.9.png
new file mode 100644
index 0000000..7b883cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_dropdown_background_up.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_normal.9.png b/core/res/res/drawable-hdpi/spinner_normal.9.png
new file mode 100644
index 0000000..b1f25f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_press.9.png b/core/res/res/drawable-hdpi/spinner_press.9.png
new file mode 100644
index 0000000..6aab271
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_press.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_select.9.png b/core/res/res/drawable-hdpi/spinner_select.9.png
new file mode 100644
index 0000000..9024d07
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_select.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_white_16.png b/core/res/res/drawable-hdpi/spinner_white_16.png
new file mode 100644
index 0000000..7914a68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_white_16.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_white_48.png b/core/res/res/drawable-hdpi/spinner_white_48.png
new file mode 100644
index 0000000..faee8ca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_white_48.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinner_white_76.png b/core/res/res/drawable-hdpi/spinner_white_76.png
new file mode 100644
index 0000000..cd26379
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinner_white_76.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_first.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_first.9.png
new file mode 100644
index 0000000..af80855
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_first.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_last.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_last.9.png
new file mode 100644
index 0000000..dc47275
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_last.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_middle.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_middle.9.png
new file mode 100644
index 0000000..007f279
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_middle.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/spinnerbox_arrow_single.9.png b/core/res/res/drawable-hdpi/spinnerbox_arrow_single.9.png
new file mode 100644
index 0000000..24592a3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/spinnerbox_arrow_single.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_big_off.png b/core/res/res/drawable-hdpi/star_big_off.png
new file mode 100644
index 0000000..ee6c942
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_big_on.png b/core/res/res/drawable-hdpi/star_big_on.png
new file mode 100644
index 0000000..17b4d73
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_off.png b/core/res/res/drawable-hdpi/star_off.png
new file mode 100644
index 0000000..e1897c7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_off.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/star_on.png b/core/res/res/drawable-hdpi/star_on.png
new file mode 100644
index 0000000..b7440ea
--- /dev/null
+++ b/core/res/res/drawable-hdpi/star_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_ecb_mode.png b/core/res/res/drawable-hdpi/stat_ecb_mode.png
new file mode 100644
index 0000000..91e6c1e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_ecb_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_alarm.png b/core/res/res/drawable-hdpi/stat_notify_alarm.png
new file mode 100644
index 0000000..adac8a9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_alarm.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_call_mute.png b/core/res/res/drawable-hdpi/stat_notify_call_mute.png
new file mode 100644
index 0000000..a43139b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_call_mute.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_chat.png b/core/res/res/drawable-hdpi/stat_notify_chat.png
new file mode 100644
index 0000000..7b837b3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_chat.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_disk_full.png b/core/res/res/drawable-hdpi/stat_notify_disk_full.png
new file mode 100644
index 0000000..2163fa7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_error.png b/core/res/res/drawable-hdpi/stat_notify_error.png
new file mode 100644
index 0000000..9853cda
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_error.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_missed_call.png b/core/res/res/drawable-hdpi/stat_notify_missed_call.png
new file mode 100644
index 0000000..a313360
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_more.png b/core/res/res/drawable-hdpi/stat_notify_more.png
new file mode 100644
index 0000000..bbbd59b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_more.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sdcard.png b/core/res/res/drawable-hdpi/stat_notify_sdcard.png
new file mode 100644
index 0000000..0161419
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sdcard.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sdcard_usb.png b/core/res/res/drawable-hdpi/stat_notify_sdcard_usb.png
new file mode 100644
index 0000000..23b2f0a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sdcard_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sim_toolkit.png b/core/res/res/drawable-hdpi/stat_notify_sim_toolkit.png
new file mode 100644
index 0000000..401fbb0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sim_toolkit.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sync.png b/core/res/res/drawable-hdpi/stat_notify_sync.png
new file mode 100644
index 0000000..dacfc3a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sync.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sync_anim0.png b/core/res/res/drawable-hdpi/stat_notify_sync_anim0.png
new file mode 100644
index 0000000..00e2ebb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sync_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_sync_error.png b/core/res/res/drawable-hdpi/stat_notify_sync_error.png
new file mode 100644
index 0000000..3083b44
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_sync_error.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_voicemail.png b/core/res/res/drawable-hdpi/stat_notify_voicemail.png
new file mode 100644
index 0000000..7f62e94
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png b/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
new file mode 100644
index 0000000..712e071
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_0.png b/core/res/res/drawable-hdpi/stat_sys_battery_0.png
new file mode 100644
index 0000000..171b8b5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_10.png b/core/res/res/drawable-hdpi/stat_sys_battery_10.png
new file mode 100644
index 0000000..77e8793
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_10.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_100.png b/core/res/res/drawable-hdpi/stat_sys_battery_100.png
new file mode 100644
index 0000000..d13d083
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_100.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_20.png b/core/res/res/drawable-hdpi/stat_sys_battery_20.png
new file mode 100644
index 0000000..c14dc07
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_20.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_40.png b/core/res/res/drawable-hdpi/stat_sys_battery_40.png
new file mode 100644
index 0000000..a3077b0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_40.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_60.png b/core/res/res/drawable-hdpi/stat_sys_battery_60.png
new file mode 100644
index 0000000..621e905
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_60.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_80.png b/core/res/res/drawable-hdpi/stat_sys_battery_80.png
new file mode 100644
index 0000000..29830e9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_80.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim0.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim0.png
new file mode 100644
index 0000000..61556c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim1.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim1.png
new file mode 100644
index 0000000..985dc0f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim2.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim2.png
new file mode 100644
index 0000000..b319d07
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim3.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim3.png
new file mode 100644
index 0000000..cbf21c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim4.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim4.png
new file mode 100644
index 0000000..51565c3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim5.png b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim5.png
new file mode 100644
index 0000000..bf41a89
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_charge_anim5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_battery_unknown.png b/core/res/res/drawable-hdpi/stat_sys_battery_unknown.png
new file mode 100644
index 0000000..8c5daba
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_battery_unknown.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth.png
new file mode 100644
index 0000000..7cf5962
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png
new file mode 100644
index 0000000..3e3f4f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_bluetooth_connected.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_connected_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_connected_3g.png
new file mode 100644
index 0000000..42af121
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_connected_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_connected_e.png b/core/res/res/drawable-hdpi/stat_sys_data_connected_e.png
new file mode 100644
index 0000000..6106dd4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_connected_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_connected_g.png b/core/res/res/drawable-hdpi/stat_sys_data_connected_g.png
new file mode 100644
index 0000000..cc6e2849
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_connected_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_in_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_in_3g.png
new file mode 100644
index 0000000..5848981
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_in_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_in_e.png b/core/res/res/drawable-hdpi/stat_sys_data_in_e.png
new file mode 100644
index 0000000..e4c6c2b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_in_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_in_g.png b/core/res/res/drawable-hdpi/stat_sys_data_in_g.png
new file mode 100644
index 0000000..05a910b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_in_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_inandout_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_inandout_3g.png
new file mode 100644
index 0000000..b4383e2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_inandout_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_inandout_e.png b/core/res/res/drawable-hdpi/stat_sys_data_inandout_e.png
new file mode 100644
index 0000000..78b04db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_inandout_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_inandout_g.png b/core/res/res/drawable-hdpi/stat_sys_data_inandout_g.png
new file mode 100644
index 0000000..9475159
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_inandout_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_out_3g.png b/core/res/res/drawable-hdpi/stat_sys_data_out_3g.png
new file mode 100644
index 0000000..2f49d60
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_out_3g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_out_e.png b/core/res/res/drawable-hdpi/stat_sys_data_out_e.png
new file mode 100644
index 0000000..433fa8d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_out_e.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_out_g.png b/core/res/res/drawable-hdpi/stat_sys_data_out_g.png
new file mode 100644
index 0000000..eb43a91
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_out_g.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_data_usb.png b/core/res/res/drawable-hdpi/stat_sys_data_usb.png
new file mode 100644
index 0000000..7a83544
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_data_usb.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim0.png b/core/res/res/drawable-hdpi/stat_sys_download_anim0.png
new file mode 100644
index 0000000..a907d79
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim1.png b/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
new file mode 100644
index 0000000..e9f42ad
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim2.png b/core/res/res/drawable-hdpi/stat_sys_download_anim2.png
new file mode 100644
index 0000000..d1682e0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim3.png b/core/res/res/drawable-hdpi/stat_sys_download_anim3.png
new file mode 100644
index 0000000..70e757b
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim4.png b/core/res/res/drawable-hdpi/stat_sys_download_anim4.png
new file mode 100644
index 0000000..3b2d7d1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_download_anim5.png b/core/res/res/drawable-hdpi/stat_sys_download_anim5.png
new file mode 100644
index 0000000..ced2bb2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_download_anim5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_gps_acquiring.png b/core/res/res/drawable-hdpi/stat_sys_gps_acquiring.png
new file mode 100644
index 0000000..fe7b2cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_gps_acquiring.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_gps_on.png b/core/res/res/drawable-hdpi/stat_sys_gps_on.png
new file mode 100644
index 0000000..6ab4720
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_gps_on.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_headset.png b/core/res/res/drawable-hdpi/stat_sys_headset.png
new file mode 100644
index 0000000..7a70aea
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_headset.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_no_sim.png b/core/res/res/drawable-hdpi/stat_sys_no_sim.png
new file mode 100644
index 0000000..48d1ca3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_no_sim.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call.png b/core/res/res/drawable-hdpi/stat_sys_phone_call.png
new file mode 100644
index 0000000..0aa15d6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_phone_call_bluetooth.png
new file mode 100644
index 0000000..a143f87
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call_forward.png b/core/res/res/drawable-hdpi/stat_sys_phone_call_forward.png
new file mode 100644
index 0000000..b1ab8ac
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_phone_call_on_hold.png b/core/res/res/drawable-hdpi/stat_sys_phone_call_on_hold.png
new file mode 100644
index 0000000..b881a67
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_0.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_0.png
new file mode 100644
index 0000000..938cca7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_0_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_0_cdma.png
new file mode 100644
index 0000000..5ddd177
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_1.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_1.png
new file mode 100644
index 0000000..6f82aa9
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_1_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_1_cdma.png
new file mode 100644
index 0000000..fa4265c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_2.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_2.png
new file mode 100644
index 0000000..db9752a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_2_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_2_cdma.png
new file mode 100644
index 0000000..c99af17
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_3.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_3.png
new file mode 100644
index 0000000..70594e5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_3_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_3_cdma.png
new file mode 100644
index 0000000..5e0235f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_4.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_4.png
new file mode 100644
index 0000000..d361263
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_r_signal_4_cdma.png b/core/res/res/drawable-hdpi/stat_sys_r_signal_4_cdma.png
new file mode 100644
index 0000000..8b110a3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_r_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_0_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_0_cdma.png
new file mode 100644
index 0000000..84b9f94
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_1_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_1_cdma.png
new file mode 100644
index 0000000..657b572
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_2_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_2_cdma.png
new file mode 100644
index 0000000..236d44e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_3_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_3_cdma.png
new file mode 100644
index 0000000..e140735
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ra_signal_4_cdma.png b/core/res/res/drawable-hdpi/stat_sys_ra_signal_4_cdma.png
new file mode 100644
index 0000000..0e4f854
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ra_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ringer_silent.png b/core/res/res/drawable-hdpi/stat_sys_ringer_silent.png
new file mode 100644
index 0000000..d5c301c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ringer_silent.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_ringer_vibrate.png b/core/res/res/drawable-hdpi/stat_sys_ringer_vibrate.png
new file mode 100644
index 0000000..21c1c08
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_ringer_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_0.png b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_0.png
new file mode 100644
index 0000000..f7f5757
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim0.png b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim0.png
new file mode 100644
index 0000000..5f01083
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim1.png b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim1.png
new file mode 100644
index 0000000..f7f5757
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_roaming_cdma_flash_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_0.png b/core/res/res/drawable-hdpi/stat_sys_signal_0.png
new file mode 100644
index 0000000..83ef6a3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_1.png b/core/res/res/drawable-hdpi/stat_sys_signal_1.png
new file mode 100644
index 0000000..a1ca717
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_2.png b/core/res/res/drawable-hdpi/stat_sys_signal_2.png
new file mode 100644
index 0000000..a478bd0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_3.png b/core/res/res/drawable-hdpi/stat_sys_signal_3.png
new file mode 100644
index 0000000..a3978de
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_4.png b/core/res/res/drawable-hdpi/stat_sys_signal_4.png
new file mode 100644
index 0000000..1b553e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_flightmode.png b/core/res/res/drawable-hdpi/stat_sys_signal_flightmode.png
new file mode 100644
index 0000000..6ee35fb
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_flightmode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_signal_null.png b/core/res/res/drawable-hdpi/stat_sys_signal_null.png
new file mode 100644
index 0000000..6b103f5
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_speakerphone.png b/core/res/res/drawable-hdpi/stat_sys_speakerphone.png
new file mode 100644
index 0000000..62eadb3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_speakerphone.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tty_mode.png b/core/res/res/drawable-hdpi/stat_sys_tty_mode.png
new file mode 100644
index 0000000..4e161c6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_tty_mode.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim0.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim0.png
new file mode 100644
index 0000000..4b7e942
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
new file mode 100644
index 0000000..a416350
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim2.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim2.png
new file mode 100644
index 0000000..8d199dd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
new file mode 100644
index 0000000..dfef071
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim4.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim4.png
new file mode 100644
index 0000000..abe56f1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_upload_anim5.png b/core/res/res/drawable-hdpi/stat_sys_upload_anim5.png
new file mode 100644
index 0000000..1e917c1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_upload_anim5.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_vp_phone_call.png b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call.png
new file mode 100644
index 0000000..d6b25d2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_bluetooth.png b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_bluetooth.png
new file mode 100644
index 0000000..a143f87
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_on_hold.png b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_on_hold.png
new file mode 100644
index 0000000..53608cf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_vp_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_warning.png b/core/res/res/drawable-hdpi/stat_sys_warning.png
new file mode 100644
index 0000000..8f7bd5d
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_warning.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_0.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_0.png
new file mode 100644
index 0000000..9a0aa21
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_1.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_1.png
new file mode 100644
index 0000000..39db490
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_2.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_2.png
new file mode 100644
index 0000000..5c0ae76
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_3.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_3.png
new file mode 100644
index 0000000..f7e0b38
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_wifi_signal_4.png b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_4.png
new file mode 100644
index 0000000..5ad5d12
--- /dev/null
+++ b/core/res/res/drawable-hdpi/stat_sys_wifi_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_background.png b/core/res/res/drawable-hdpi/status_bar_background.png
new file mode 100644
index 0000000..e6a865a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_close_on.9.png b/core/res/res/drawable-hdpi/status_bar_close_on.9.png
new file mode 100644
index 0000000..5acf638
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_header_background.9.png b/core/res/res/drawable-hdpi/status_bar_header_background.9.png
new file mode 100644
index 0000000..be36ff2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_header_background.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_app_background_normal.9.png b/core/res/res/drawable-hdpi/status_bar_item_app_background_normal.9.png
new file mode 100644
index 0000000..4fbfa4f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_app_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_background_focus.9.png b/core/res/res/drawable-hdpi/status_bar_item_background_focus.9.png
new file mode 100644
index 0000000..0876bc6
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_background_normal.9.png b/core/res/res/drawable-hdpi/status_bar_item_background_normal.9.png
new file mode 100644
index 0000000..c01c018
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/status_bar_item_background_pressed.9.png b/core/res/res/drawable-hdpi/status_bar_item_background_pressed.9.png
new file mode 100644
index 0000000..343e4ca
--- /dev/null
+++ b/core/res/res/drawable-hdpi/status_bar_item_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/statusbar_background.png b/core/res/res/drawable-hdpi/statusbar_background.png
new file mode 100644
index 0000000..c2b3a5e
--- /dev/null
+++ b/core/res/res/drawable-hdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/submenu_arrow_nofocus.png b/core/res/res/drawable-hdpi/submenu_arrow_nofocus.png
new file mode 100644
index 0000000..afc0891
--- /dev/null
+++ b/core/res/res/drawable-hdpi/submenu_arrow_nofocus.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_add.png b/core/res/res/drawable-hdpi/sym_action_add.png
new file mode 100644
index 0000000..6e028b2
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_add.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_call.png b/core/res/res/drawable-hdpi/sym_action_call.png
new file mode 100644
index 0000000..105f7d0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_call.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_chat.png b/core/res/res/drawable-hdpi/sym_action_chat.png
new file mode 100644
index 0000000..7fd34f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_chat.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_action_email.png b/core/res/res/drawable-hdpi/sym_action_email.png
new file mode 100644
index 0000000..1d933e4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_action_email.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_call_incoming.png b/core/res/res/drawable-hdpi/sym_call_incoming.png
new file mode 100644
index 0000000..83c75dc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_call_incoming.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_call_missed.png b/core/res/res/drawable-hdpi/sym_call_missed.png
new file mode 100644
index 0000000..abcbbbf
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_call_missed.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_call_outgoing.png b/core/res/res/drawable-hdpi/sym_call_outgoing.png
new file mode 100644
index 0000000..6cb8653
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_call_outgoing.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_contact_card.png b/core/res/res/drawable-hdpi/sym_contact_card.png
new file mode 100644
index 0000000..fe9c751
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_contact_card.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/sym_def_app_icon.png b/core/res/res/drawable-hdpi/sym_def_app_icon.png
new file mode 100644
index 0000000..4b5384f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/sym_def_app_icon.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_focus.9.png b/core/res/res/drawable-hdpi/tab_focus.9.png
new file mode 100644
index 0000000..0c3a9ee
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_focus_bar_left.9.png b/core/res/res/drawable-hdpi/tab_focus_bar_left.9.png
new file mode 100644
index 0000000..54e3022
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_focus_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_focus_bar_right.9.png b/core/res/res/drawable-hdpi/tab_focus_bar_right.9.png
new file mode 100644
index 0000000..34a85f0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_focus_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_press.9.png b/core/res/res/drawable-hdpi/tab_press.9.png
new file mode 100644
index 0000000..6b3c1c7
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_press.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_press_bar_left.9.png b/core/res/res/drawable-hdpi/tab_press_bar_left.9.png
new file mode 100644
index 0000000..f998532
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_press_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_press_bar_right.9.png b/core/res/res/drawable-hdpi/tab_press_bar_right.9.png
new file mode 100644
index 0000000..43515bd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_press_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected.9.png b/core/res/res/drawable-hdpi/tab_selected.9.png
new file mode 100644
index 0000000..b128b48
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected_bar_left.9.png b/core/res/res/drawable-hdpi/tab_selected_bar_left.9.png
new file mode 100644
index 0000000..a49ef68
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_selected_bar_right.9.png b/core/res/res/drawable-hdpi/tab_selected_bar_right.9.png
new file mode 100644
index 0000000..472f839
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_selected_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/tab_unselected.9.png b/core/res/res/drawable-hdpi/tab_unselected.9.png
new file mode 100644
index 0000000..ed9e311
--- /dev/null
+++ b/core/res/res/drawable-hdpi/tab_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_default.9.png b/core/res/res/drawable-hdpi/textfield_default.9.png
new file mode 100644
index 0000000..a2f022a
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_disabled.9.png b/core/res/res/drawable-hdpi/textfield_disabled.9.png
new file mode 100644
index 0000000..6a28cb4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_disabled_selected.9.png b/core/res/res/drawable-hdpi/textfield_disabled_selected.9.png
new file mode 100644
index 0000000..0de9cda
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_pressed.9.png b/core/res/res/drawable-hdpi/textfield_pressed.9.png
new file mode 100644
index 0000000..d5892c8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_search_default.9.png b/core/res/res/drawable-hdpi/textfield_search_default.9.png
new file mode 100644
index 0000000..db64da1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_search_default.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_search_pressed.9.png b/core/res/res/drawable-hdpi/textfield_search_pressed.9.png
new file mode 100644
index 0000000..cde51e4
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_search_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_search_selected.9.png b/core/res/res/drawable-hdpi/textfield_search_selected.9.png
new file mode 100644
index 0000000..f4bf352
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_search_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/textfield_selected.9.png b/core/res/res/drawable-hdpi/textfield_selected.9.png
new file mode 100644
index 0000000..7a072dd
--- /dev/null
+++ b/core/res/res/drawable-hdpi/textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_disabled.9.png b/core/res/res/drawable-hdpi/timepicker_down_disabled.9.png
new file mode 100644
index 0000000..73b6915
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_disabled_focused.9.png b/core/res/res/drawable-hdpi/timepicker_down_disabled_focused.9.png
new file mode 100644
index 0000000..046e60f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_normal.9.png b/core/res/res/drawable-hdpi/timepicker_down_normal.9.png
new file mode 100644
index 0000000..9baf7cc
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_pressed.9.png b/core/res/res/drawable-hdpi/timepicker_down_pressed.9.png
new file mode 100644
index 0000000..d95fdd3
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_down_selected.9.png b/core/res/res/drawable-hdpi/timepicker_down_selected.9.png
new file mode 100644
index 0000000..a84448f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_disabled.9.png b/core/res/res/drawable-hdpi/timepicker_input_disabled.9.png
new file mode 100644
index 0000000..aa17a98
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_normal.9.png b/core/res/res/drawable-hdpi/timepicker_input_normal.9.png
new file mode 100644
index 0000000..be78a58
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_pressed.9.png b/core/res/res/drawable-hdpi/timepicker_input_pressed.9.png
new file mode 100644
index 0000000..b28f66c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_input_selected.9.png b/core/res/res/drawable-hdpi/timepicker_input_selected.9.png
new file mode 100644
index 0000000..2e175e8
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_input_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_disabled.9.png b/core/res/res/drawable-hdpi/timepicker_up_disabled.9.png
new file mode 100644
index 0000000..348e48c
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_disabled_focused.9.png b/core/res/res/drawable-hdpi/timepicker_up_disabled_focused.9.png
new file mode 100644
index 0000000..93cf3a0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_normal.9.png b/core/res/res/drawable-hdpi/timepicker_up_normal.9.png
new file mode 100644
index 0000000..b4acced
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_pressed.9.png b/core/res/res/drawable-hdpi/timepicker_up_pressed.9.png
new file mode 100644
index 0000000..bd29510
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/timepicker_up_selected.9.png b/core/res/res/drawable-hdpi/timepicker_up_selected.9.png
new file mode 100644
index 0000000..a666998
--- /dev/null
+++ b/core/res/res/drawable-hdpi/timepicker_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/title_bar_portrait.9.png b/core/res/res/drawable-hdpi/title_bar_portrait.9.png
new file mode 100644
index 0000000..161432f
--- /dev/null
+++ b/core/res/res/drawable-hdpi/title_bar_portrait.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/title_bar_shadow.9.png b/core/res/res/drawable-hdpi/title_bar_shadow.9.png
new file mode 100644
index 0000000..e67f457
--- /dev/null
+++ b/core/res/res/drawable-hdpi/title_bar_shadow.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/title_bar_tall.png b/core/res/res/drawable-hdpi/title_bar_tall.png
new file mode 100644
index 0000000..f177440
--- /dev/null
+++ b/core/res/res/drawable-hdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/toast_frame.9.png b/core/res/res/drawable-hdpi/toast_frame.9.png
new file mode 100644
index 0000000..8f5d811
--- /dev/null
+++ b/core/res/res/drawable-hdpi/toast_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/unknown_image.png b/core/res/res/drawable-hdpi/unknown_image.png
new file mode 100644
index 0000000..76341db
--- /dev/null
+++ b/core/res/res/drawable-hdpi/unknown_image.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/zoom_plate.9.png b/core/res/res/drawable-hdpi/zoom_plate.9.png
new file mode 100644
index 0000000..e97dac1
--- /dev/null
+++ b/core/res/res/drawable-hdpi/zoom_plate.9.png
Binary files differ
diff --git a/core/res/res/drawable-land-hdpi/statusbar_background.png b/core/res/res/drawable-land-hdpi/statusbar_background.png
new file mode 100644
index 0000000..4a955c5
--- /dev/null
+++ b/core/res/res/drawable-land-hdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable-land-hdpi/title_bar_tall.png b/core/res/res/drawable-land-hdpi/title_bar_tall.png
new file mode 100644
index 0000000..96b5ffe
--- /dev/null
+++ b/core/res/res/drawable-land-hdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable-land/statusbar_background.png b/core/res/res/drawable-land-mdpi/statusbar_background.png
similarity index 100%
rename from core/res/res/drawable-land/statusbar_background.png
rename to core/res/res/drawable-land-mdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable-land/title_bar_tall.png b/core/res/res/drawable-land-mdpi/title_bar_tall.png
similarity index 100%
rename from core/res/res/drawable-land/title_bar_tall.png
rename to core/res/res/drawable-land-mdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable/activity_title_bar.9.png b/core/res/res/drawable-mdpi/activity_title_bar.9.png
similarity index 100%
rename from core/res/res/drawable/activity_title_bar.9.png
rename to core/res/res/drawable-mdpi/activity_title_bar.9.png
Binary files differ
diff --git a/core/res/res/drawable/arrow_down_float.png b/core/res/res/drawable-mdpi/arrow_down_float.png
similarity index 100%
rename from core/res/res/drawable/arrow_down_float.png
rename to core/res/res/drawable-mdpi/arrow_down_float.png
Binary files differ
diff --git a/core/res/res/drawable/arrow_up_float.png b/core/res/res/drawable-mdpi/arrow_up_float.png
similarity index 100%
rename from core/res/res/drawable/arrow_up_float.png
rename to core/res/res/drawable-mdpi/arrow_up_float.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_background.png b/core/res/res/drawable-mdpi/battery_charge_background.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_background.png
rename to core/res/res/drawable-mdpi/battery_charge_background.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_fill_empty.9.png b/core/res/res/drawable-mdpi/battery_charge_fill_empty.9.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_fill_empty.9.png
rename to core/res/res/drawable-mdpi/battery_charge_fill_empty.9.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_fill_full.9.png b/core/res/res/drawable-mdpi/battery_charge_fill_full.9.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_fill_full.9.png
rename to core/res/res/drawable-mdpi/battery_charge_fill_full.9.png
Binary files differ
diff --git a/core/res/res/drawable/battery_charge_fill_warning.9.png b/core/res/res/drawable-mdpi/battery_charge_fill_warning.9.png
similarity index 100%
rename from core/res/res/drawable/battery_charge_fill_warning.9.png
rename to core/res/res/drawable-mdpi/battery_charge_fill_warning.9.png
Binary files differ
diff --git a/core/res/res/drawable/battery_low_battery.png b/core/res/res/drawable-mdpi/battery_low_battery.png
similarity index 100%
rename from core/res/res/drawable/battery_low_battery.png
rename to core/res/res/drawable-mdpi/battery_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable/blank_tile.png b/core/res/res/drawable-mdpi/blank_tile.png
similarity index 100%
rename from core/res/res/drawable/blank_tile.png
rename to core/res/res/drawable-mdpi/blank_tile.png
Binary files differ
diff --git a/core/res/res/drawable/bottom_bar.png b/core/res/res/drawable-mdpi/bottom_bar.png
similarity index 100%
rename from core/res/res/drawable/bottom_bar.png
rename to core/res/res/drawable-mdpi/bottom_bar.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_buttonless_off.png b/core/res/res/drawable-mdpi/btn_check_buttonless_off.png
similarity index 100%
rename from core/res/res/drawable/btn_check_buttonless_off.png
rename to core/res/res/drawable-mdpi/btn_check_buttonless_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_buttonless_on.png b/core/res/res/drawable-mdpi/btn_check_buttonless_on.png
similarity index 100%
rename from core/res/res/drawable/btn_check_buttonless_on.png
rename to core/res/res/drawable-mdpi/btn_check_buttonless_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_label_background.9.png b/core/res/res/drawable-mdpi/btn_check_label_background.9.png
similarity index 100%
rename from core/res/res/drawable/btn_check_label_background.9.png
rename to core/res/res/drawable-mdpi/btn_check_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off.png b/core/res/res/drawable-mdpi/btn_check_off.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off.png
rename to core/res/res/drawable-mdpi/btn_check_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_disable.png b/core/res/res/drawable-mdpi/btn_check_off_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_disable.png
rename to core/res/res/drawable-mdpi/btn_check_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_disable_focused.png b/core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_check_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_pressed.png b/core/res/res/drawable-mdpi/btn_check_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_check_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_off_selected.png b/core/res/res/drawable-mdpi/btn_check_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_check_off_selected.png
rename to core/res/res/drawable-mdpi/btn_check_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on.png b/core/res/res/drawable-mdpi/btn_check_on.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on.png
rename to core/res/res/drawable-mdpi/btn_check_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_disable.png b/core/res/res/drawable-mdpi/btn_check_on_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_disable.png
rename to core/res/res/drawable-mdpi/btn_check_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_disable_focused.png b/core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_check_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_pressed.png b/core/res/res/drawable-mdpi/btn_check_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_check_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_check_on_selected.png b/core/res/res/drawable-mdpi/btn_check_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_check_on_selected.png
rename to core/res/res/drawable-mdpi/btn_check_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_disable.png b/core/res/res/drawable-mdpi/btn_circle_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_disable.png
rename to core/res/res/drawable-mdpi/btn_circle_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_disable_focused.png b/core/res/res/drawable-mdpi/btn_circle_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_circle_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_normal.png b/core/res/res/drawable-mdpi/btn_circle_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_normal.png
rename to core/res/res/drawable-mdpi/btn_circle_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_pressed.png b/core/res/res/drawable-mdpi/btn_circle_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_pressed.png
rename to core/res/res/drawable-mdpi/btn_circle_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_circle_selected.png b/core/res/res/drawable-mdpi/btn_circle_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_circle_selected.png
rename to core/res/res/drawable-mdpi/btn_circle_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_close_normal.png b/core/res/res/drawable-mdpi/btn_close_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_close_normal.png
rename to core/res/res/drawable-mdpi/btn_close_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_close_pressed.png b/core/res/res/drawable-mdpi/btn_close_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_close_pressed.png
rename to core/res/res/drawable-mdpi/btn_close_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_code_lock_default.png b/core/res/res/drawable-mdpi/btn_code_lock_default.png
similarity index 100%
rename from core/res/res/drawable/btn_code_lock_default.png
rename to core/res/res/drawable-mdpi/btn_code_lock_default.png
Binary files differ
diff --git a/core/res/res/drawable/btn_code_lock_touched.png b/core/res/res/drawable-mdpi/btn_code_lock_touched.png
similarity index 100%
rename from core/res/res/drawable/btn_code_lock_touched.png
rename to core/res/res/drawable-mdpi/btn_code_lock_touched.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_normal.9.png b/core/res/res/drawable-mdpi/btn_default_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_normal.9.png
rename to core/res/res/drawable-mdpi/btn_default_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_normal_disable.9.png b/core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_normal_disable.9.png
rename to core/res/res/drawable-mdpi/btn_default_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_normal_disable_focused.9.png b/core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_normal_disable_focused.9.png
rename to core/res/res/drawable-mdpi/btn_default_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_pressed.9.png b/core/res/res/drawable-mdpi/btn_default_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_default_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_selected.9.png b/core/res/res/drawable-mdpi/btn_default_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_selected.9.png
rename to core/res/res/drawable-mdpi/btn_default_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_normal.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_normal.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_normal_disable.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_normal_disable.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_normal_disable.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_normal_disable_focused.9.png b/core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_normal_disable_focused.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_normal_disable_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_pressed.9.png b/core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_default_small_selected.9.png b/core/res/res/drawable-mdpi/btn_default_small_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_default_small_selected.9.png
rename to core/res/res/drawable-mdpi/btn_default_small_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_disable.png b/core/res/res/drawable-mdpi/btn_dialog_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_disable.png
rename to core/res/res/drawable-mdpi/btn_dialog_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_normal.png b/core/res/res/drawable-mdpi/btn_dialog_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_normal.png
rename to core/res/res/drawable-mdpi/btn_dialog_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_pressed.png b/core/res/res/drawable-mdpi/btn_dialog_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_pressed.png
rename to core/res/res/drawable-mdpi/btn_dialog_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dialog_selected.png b/core/res/res/drawable-mdpi/btn_dialog_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_dialog_selected.png
rename to core/res/res/drawable-mdpi/btn_dialog_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dropdown_normal.9.png b/core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_dropdown_normal.9.png
rename to core/res/res/drawable-mdpi/btn_dropdown_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dropdown_pressed.9.png b/core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_dropdown_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_dropdown_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_dropdown_selected.9.png b/core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_dropdown_selected.9.png
rename to core/res/res/drawable-mdpi/btn_dropdown_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_erase_default.9.png b/core/res/res/drawable-mdpi/btn_erase_default.9.png
similarity index 100%
rename from core/res/res/drawable/btn_erase_default.9.png
rename to core/res/res/drawable-mdpi/btn_erase_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_erase_pressed.9.png b/core/res/res/drawable-mdpi/btn_erase_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_erase_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_erase_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_erase_selected.9.png b/core/res/res/drawable-mdpi/btn_erase_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_erase_selected.9.png
rename to core/res/res/drawable-mdpi/btn_erase_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_global_search_normal.9.png b/core/res/res/drawable-mdpi/btn_global_search_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_global_search_normal.9.png
rename to core/res/res/drawable-mdpi/btn_global_search_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_normal.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_normal.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_normal_off.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_normal_off.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_normal_on.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_normal_on.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_pressed.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_pressed_off.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_pressed_off.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_keyboard_key_pressed_on.9.png b/core/res/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
similarity index 100%
rename from core/res/res/drawable/btn_keyboard_key_pressed_on.9.png
rename to core/res/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player.9.png b/core/res/res/drawable-mdpi/btn_media_player.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player.9.png
rename to core/res/res/drawable-mdpi/btn_media_player.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_disabled.9.png b/core/res/res/drawable-mdpi/btn_media_player_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_disabled.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_disabled_selected.9.png b/core/res/res/drawable-mdpi/btn_media_player_disabled_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_disabled_selected.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_pressed.9.png b/core/res/res/drawable-mdpi/btn_media_player_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_media_player_selected.9.png b/core/res/res/drawable-mdpi/btn_media_player_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_media_player_selected.9.png
rename to core/res/res/drawable-mdpi/btn_media_player_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_default.png b/core/res/res/drawable-mdpi/btn_minus_default.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_default.png
rename to core/res/res/drawable-mdpi/btn_minus_default.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_disable.png b/core/res/res/drawable-mdpi/btn_minus_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_disable.png
rename to core/res/res/drawable-mdpi/btn_minus_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_disable_focused.png b/core/res/res/drawable-mdpi/btn_minus_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_minus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_pressed.png b/core/res/res/drawable-mdpi/btn_minus_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_pressed.png
rename to core/res/res/drawable-mdpi/btn_minus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_minus_selected.png b/core/res/res/drawable-mdpi/btn_minus_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_minus_selected.png
rename to core/res/res/drawable-mdpi/btn_minus_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_default.png b/core/res/res/drawable-mdpi/btn_plus_default.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_default.png
rename to core/res/res/drawable-mdpi/btn_plus_default.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_disable.png b/core/res/res/drawable-mdpi/btn_plus_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_disable.png
rename to core/res/res/drawable-mdpi/btn_plus_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_disable_focused.png b/core/res/res/drawable-mdpi/btn_plus_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_plus_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_pressed.png b/core/res/res/drawable-mdpi/btn_plus_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_pressed.png
rename to core/res/res/drawable-mdpi/btn_plus_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_plus_selected.png b/core/res/res/drawable-mdpi/btn_plus_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_plus_selected.png
rename to core/res/res/drawable-mdpi/btn_plus_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_label_background.9.png b/core/res/res/drawable-mdpi/btn_radio_label_background.9.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_label_background.9.png
rename to core/res/res/drawable-mdpi/btn_radio_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_off.png b/core/res/res/drawable-mdpi/btn_radio_off.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_off.png
rename to core/res/res/drawable-mdpi/btn_radio_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_off_pressed.png b/core/res/res/drawable-mdpi/btn_radio_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_radio_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_off_selected.png b/core/res/res/drawable-mdpi/btn_radio_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_off_selected.png
rename to core/res/res/drawable-mdpi/btn_radio_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_on.png b/core/res/res/drawable-mdpi/btn_radio_on.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_on.png
rename to core/res/res/drawable-mdpi/btn_radio_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_on_pressed.png b/core/res/res/drawable-mdpi/btn_radio_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_radio_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_radio_on_selected.png b/core/res/res/drawable-mdpi/btn_radio_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_radio_on_selected.png
rename to core/res/res/drawable-mdpi/btn_radio_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_off_normal.png b/core/res/res/drawable-mdpi/btn_rating_star_off_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_off_normal.png
rename to core/res/res/drawable-mdpi/btn_rating_star_off_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_off_pressed.png b/core/res/res/drawable-mdpi/btn_rating_star_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_rating_star_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_off_selected.png b/core/res/res/drawable-mdpi/btn_rating_star_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_off_selected.png
rename to core/res/res/drawable-mdpi/btn_rating_star_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_on_normal.png b/core/res/res/drawable-mdpi/btn_rating_star_on_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_on_normal.png
rename to core/res/res/drawable-mdpi/btn_rating_star_on_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_on_pressed.png b/core/res/res/drawable-mdpi/btn_rating_star_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_rating_star_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_rating_star_on_selected.png b/core/res/res/drawable-mdpi/btn_rating_star_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_rating_star_on_selected.png
rename to core/res/res/drawable-mdpi/btn_rating_star_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_default.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_default.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_default.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_pressed.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_selected.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_selected.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_voice_default.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_voice_default.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_voice_default.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_voice_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_voice_pressed.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_voice_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_voice_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_voice_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_search_dialog_voice_selected.9.png b/core/res/res/drawable-mdpi/btn_search_dialog_voice_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_search_dialog_voice_selected.9.png
rename to core/res/res/drawable-mdpi/btn_search_dialog_voice_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_disabled.png b/core/res/res/drawable-mdpi/btn_square_overlay_disabled.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_disabled.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_disabled_focused.png b/core/res/res/drawable-mdpi/btn_square_overlay_disabled_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_disabled_focused.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_disabled_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_normal.png b/core/res/res/drawable-mdpi/btn_square_overlay_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_normal.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_pressed.png b/core/res/res/drawable-mdpi/btn_square_overlay_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_pressed.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_square_overlay_selected.png b/core/res/res/drawable-mdpi/btn_square_overlay_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_square_overlay_selected.png
rename to core/res/res/drawable-mdpi/btn_square_overlay_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off.png b/core/res/res/drawable-mdpi/btn_star_big_off.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off.png
rename to core/res/res/drawable-mdpi/btn_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_disable.png b/core/res/res/drawable-mdpi/btn_star_big_off_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_disable.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_disable_focused.png b/core/res/res/drawable-mdpi/btn_star_big_off_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_pressed.png b/core/res/res/drawable-mdpi/btn_star_big_off_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_pressed.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_off_selected.png b/core/res/res/drawable-mdpi/btn_star_big_off_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_off_selected.png
rename to core/res/res/drawable-mdpi/btn_star_big_off_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on.png b/core/res/res/drawable-mdpi/btn_star_big_on.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on.png
rename to core/res/res/drawable-mdpi/btn_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_disable.png b/core/res/res/drawable-mdpi/btn_star_big_on_disable.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_disable.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_disable.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_disable_focused.png b/core/res/res/drawable-mdpi/btn_star_big_on_disable_focused.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_disable_focused.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_disable_focused.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_pressed.png b/core/res/res/drawable-mdpi/btn_star_big_on_pressed.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_pressed.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_big_on_selected.png b/core/res/res/drawable-mdpi/btn_star_big_on_selected.png
similarity index 100%
rename from core/res/res/drawable/btn_star_big_on_selected.png
rename to core/res/res/drawable-mdpi/btn_star_big_on_selected.png
Binary files differ
diff --git a/core/res/res/drawable/btn_star_label_background.9.png b/core/res/res/drawable-mdpi/btn_star_label_background.9.png
similarity index 100%
rename from core/res/res/drawable/btn_star_label_background.9.png
rename to core/res/res/drawable-mdpi/btn_star_label_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_toggle_off.9.png b/core/res/res/drawable-mdpi/btn_toggle_off.9.png
similarity index 100%
rename from core/res/res/drawable/btn_toggle_off.9.png
rename to core/res/res/drawable-mdpi/btn_toggle_off.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_toggle_on.9.png b/core/res/res/drawable-mdpi/btn_toggle_on.9.png
similarity index 100%
rename from core/res/res/drawable/btn_toggle_on.9.png
rename to core/res/res/drawable-mdpi/btn_toggle_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_disabled.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_disabled.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_disabled_focused.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_normal.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_normal.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_pressed.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_down_selected.9.png b/core/res/res/drawable-mdpi/btn_zoom_down_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_down_selected.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_page_normal.png b/core/res/res/drawable-mdpi/btn_zoom_page_normal.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_page_normal.png
rename to core/res/res/drawable-mdpi/btn_zoom_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_page_press.png b/core/res/res/drawable-mdpi/btn_zoom_page_press.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_page_press.png
rename to core/res/res/drawable-mdpi/btn_zoom_page_press.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_disabled.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_disabled.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_disabled_focused.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_normal.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_normal.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_normal.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_pressed.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_pressed.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/btn_zoom_up_selected.9.png b/core/res/res/drawable-mdpi/btn_zoom_up_selected.9.png
similarity index 100%
rename from core/res/res/drawable/btn_zoom_up_selected.9.png
rename to core/res/res/drawable-mdpi/btn_zoom_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/button_onoff_indicator_off.png b/core/res/res/drawable-mdpi/button_onoff_indicator_off.png
similarity index 100%
rename from core/res/res/drawable/button_onoff_indicator_off.png
rename to core/res/res/drawable-mdpi/button_onoff_indicator_off.png
Binary files differ
diff --git a/core/res/res/drawable/button_onoff_indicator_on.png b/core/res/res/drawable-mdpi/button_onoff_indicator_on.png
similarity index 100%
rename from core/res/res/drawable/button_onoff_indicator_on.png
rename to core/res/res/drawable-mdpi/button_onoff_indicator_on.png
Binary files differ
diff --git a/core/res/res/drawable/call_contact.png b/core/res/res/drawable-mdpi/call_contact.png
similarity index 100%
rename from core/res/res/drawable/call_contact.png
rename to core/res/res/drawable-mdpi/call_contact.png
Binary files differ
diff --git a/core/res/res/drawable/checkbox_off_background.png b/core/res/res/drawable-mdpi/checkbox_off_background.png
similarity index 100%
rename from core/res/res/drawable/checkbox_off_background.png
rename to core/res/res/drawable-mdpi/checkbox_off_background.png
Binary files differ
diff --git a/core/res/res/drawable/checkbox_on_background.png b/core/res/res/drawable-mdpi/checkbox_on_background.png
similarity index 100%
rename from core/res/res/drawable/checkbox_on_background.png
rename to core/res/res/drawable-mdpi/checkbox_on_background.png
Binary files differ
diff --git a/core/res/res/drawable/clock_dial.png b/core/res/res/drawable-mdpi/clock_dial.png
similarity index 100%
rename from core/res/res/drawable/clock_dial.png
rename to core/res/res/drawable-mdpi/clock_dial.png
Binary files differ
diff --git a/core/res/res/drawable/clock_hand_hour.png b/core/res/res/drawable-mdpi/clock_hand_hour.png
similarity index 100%
rename from core/res/res/drawable/clock_hand_hour.png
rename to core/res/res/drawable-mdpi/clock_hand_hour.png
Binary files differ
diff --git a/core/res/res/drawable/clock_hand_minute.png b/core/res/res/drawable-mdpi/clock_hand_minute.png
similarity index 100%
rename from core/res/res/drawable/clock_hand_minute.png
rename to core/res/res/drawable-mdpi/clock_hand_minute.png
Binary files differ
diff --git a/core/res/res/drawable/code_lock_bottom.9.png b/core/res/res/drawable-mdpi/code_lock_bottom.9.png
similarity index 100%
rename from core/res/res/drawable/code_lock_bottom.9.png
rename to core/res/res/drawable-mdpi/code_lock_bottom.9.png
Binary files differ
diff --git a/core/res/res/drawable/code_lock_left.9.png b/core/res/res/drawable-mdpi/code_lock_left.9.png
similarity index 100%
rename from core/res/res/drawable/code_lock_left.9.png
rename to core/res/res/drawable-mdpi/code_lock_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/code_lock_top.9.png b/core/res/res/drawable-mdpi/code_lock_top.9.png
similarity index 100%
rename from core/res/res/drawable/code_lock_top.9.png
rename to core/res/res/drawable-mdpi/code_lock_top.9.png
Binary files differ
diff --git a/core/res/res/drawable/compass_arrow.png b/core/res/res/drawable-mdpi/compass_arrow.png
similarity index 100%
rename from core/res/res/drawable/compass_arrow.png
rename to core/res/res/drawable-mdpi/compass_arrow.png
Binary files differ
diff --git a/core/res/res/drawable/compass_base.png b/core/res/res/drawable-mdpi/compass_base.png
similarity index 100%
rename from core/res/res/drawable/compass_base.png
rename to core/res/res/drawable-mdpi/compass_base.png
Binary files differ
diff --git a/core/res/res/drawable/create_contact.png b/core/res/res/drawable-mdpi/create_contact.png
similarity index 100%
rename from core/res/res/drawable/create_contact.png
rename to core/res/res/drawable-mdpi/create_contact.png
Binary files differ
diff --git a/core/res/res/drawable/dark_header.9.png b/core/res/res/drawable-mdpi/dark_header.9.png
similarity index 100%
rename from core/res/res/drawable/dark_header.9.png
rename to core/res/res/drawable-mdpi/dark_header.9.png
Binary files differ
diff --git a/core/res/res/drawable/dialog_divider_horizontal_light.9.png b/core/res/res/drawable-mdpi/dialog_divider_horizontal_light.9.png
similarity index 100%
rename from core/res/res/drawable/dialog_divider_horizontal_light.9.png
rename to core/res/res/drawable-mdpi/dialog_divider_horizontal_light.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_bright.9.png b/core/res/res/drawable-mdpi/divider_horizontal_bright.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_bright.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_bright_opaque.9.png b/core/res/res/drawable-mdpi/divider_horizontal_bright_opaque.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_bright_opaque.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_dark.9.png b/core/res/res/drawable-mdpi/divider_horizontal_dark.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_dark.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_dark_opaque.9.png b/core/res/res/drawable-mdpi/divider_horizontal_dark_opaque.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_dark_opaque.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_dim_dark.9.png b/core/res/res/drawable-mdpi/divider_horizontal_dim_dark.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_dim_dark.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_dim_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_horizontal_textfield.9.png b/core/res/res/drawable-mdpi/divider_horizontal_textfield.9.png
similarity index 100%
rename from core/res/res/drawable/divider_horizontal_textfield.9.png
rename to core/res/res/drawable-mdpi/divider_horizontal_textfield.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_bright.9.png b/core/res/res/drawable-mdpi/divider_vertical_bright.9.png
similarity index 100%
rename from core/res/res/drawable/divider_vertical_bright.9.png
rename to core/res/res/drawable-mdpi/divider_vertical_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_background_focus_yellow.9.png b/core/res/res/drawable-mdpi/editbox_background_focus_yellow.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_background_focus_yellow.9.png
rename to core/res/res/drawable-mdpi/editbox_background_focus_yellow.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_background_normal.9.png b/core/res/res/drawable-mdpi/editbox_background_normal.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_background_normal.9.png
rename to core/res/res/drawable-mdpi/editbox_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_dropdown_background.9.png b/core/res/res/drawable-mdpi/editbox_dropdown_background.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_dropdown_background.9.png
rename to core/res/res/drawable-mdpi/editbox_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/editbox_dropdown_background_dark.9.png b/core/res/res/drawable-mdpi/editbox_dropdown_background_dark.9.png
similarity index 100%
rename from core/res/res/drawable/editbox_dropdown_background_dark.9.png
rename to core/res/res/drawable-mdpi/editbox_dropdown_background_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_angel.png b/core/res/res/drawable-mdpi/emo_im_angel.png
similarity index 100%
rename from core/res/res/drawable/emo_im_angel.png
rename to core/res/res/drawable-mdpi/emo_im_angel.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_cool.png b/core/res/res/drawable-mdpi/emo_im_cool.png
similarity index 100%
rename from core/res/res/drawable/emo_im_cool.png
rename to core/res/res/drawable-mdpi/emo_im_cool.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_crying.png b/core/res/res/drawable-mdpi/emo_im_crying.png
similarity index 100%
rename from core/res/res/drawable/emo_im_crying.png
rename to core/res/res/drawable-mdpi/emo_im_crying.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_foot_in_mouth.png b/core/res/res/drawable-mdpi/emo_im_foot_in_mouth.png
similarity index 100%
rename from core/res/res/drawable/emo_im_foot_in_mouth.png
rename to core/res/res/drawable-mdpi/emo_im_foot_in_mouth.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_happy.png b/core/res/res/drawable-mdpi/emo_im_happy.png
similarity index 100%
rename from core/res/res/drawable/emo_im_happy.png
rename to core/res/res/drawable-mdpi/emo_im_happy.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_kissing.png b/core/res/res/drawable-mdpi/emo_im_kissing.png
similarity index 100%
rename from core/res/res/drawable/emo_im_kissing.png
rename to core/res/res/drawable-mdpi/emo_im_kissing.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_laughing.png b/core/res/res/drawable-mdpi/emo_im_laughing.png
similarity index 100%
rename from core/res/res/drawable/emo_im_laughing.png
rename to core/res/res/drawable-mdpi/emo_im_laughing.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_lips_are_sealed.png b/core/res/res/drawable-mdpi/emo_im_lips_are_sealed.png
similarity index 100%
rename from core/res/res/drawable/emo_im_lips_are_sealed.png
rename to core/res/res/drawable-mdpi/emo_im_lips_are_sealed.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_money_mouth.png b/core/res/res/drawable-mdpi/emo_im_money_mouth.png
similarity index 100%
rename from core/res/res/drawable/emo_im_money_mouth.png
rename to core/res/res/drawable-mdpi/emo_im_money_mouth.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_sad.png b/core/res/res/drawable-mdpi/emo_im_sad.png
similarity index 100%
rename from core/res/res/drawable/emo_im_sad.png
rename to core/res/res/drawable-mdpi/emo_im_sad.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_surprised.png b/core/res/res/drawable-mdpi/emo_im_surprised.png
similarity index 100%
rename from core/res/res/drawable/emo_im_surprised.png
rename to core/res/res/drawable-mdpi/emo_im_surprised.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_tongue_sticking_out.png b/core/res/res/drawable-mdpi/emo_im_tongue_sticking_out.png
similarity index 100%
rename from core/res/res/drawable/emo_im_tongue_sticking_out.png
rename to core/res/res/drawable-mdpi/emo_im_tongue_sticking_out.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_undecided.png b/core/res/res/drawable-mdpi/emo_im_undecided.png
similarity index 100%
rename from core/res/res/drawable/emo_im_undecided.png
rename to core/res/res/drawable-mdpi/emo_im_undecided.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_winking.png b/core/res/res/drawable-mdpi/emo_im_winking.png
similarity index 100%
rename from core/res/res/drawable/emo_im_winking.png
rename to core/res/res/drawable-mdpi/emo_im_winking.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_wtf.png b/core/res/res/drawable-mdpi/emo_im_wtf.png
similarity index 100%
rename from core/res/res/drawable/emo_im_wtf.png
rename to core/res/res/drawable-mdpi/emo_im_wtf.png
Binary files differ
diff --git a/core/res/res/drawable/emo_im_yelling.png b/core/res/res/drawable-mdpi/emo_im_yelling.png
similarity index 100%
rename from core/res/res/drawable/emo_im_yelling.png
rename to core/res/res/drawable-mdpi/emo_im_yelling.png
Binary files differ
diff --git a/core/res/res/drawable/expander_ic_maximized.9.png b/core/res/res/drawable-mdpi/expander_ic_maximized.9.png
similarity index 100%
rename from core/res/res/drawable/expander_ic_maximized.9.png
rename to core/res/res/drawable-mdpi/expander_ic_maximized.9.png
Binary files differ
diff --git a/core/res/res/drawable/expander_ic_minimized.9.png b/core/res/res/drawable-mdpi/expander_ic_minimized.9.png
similarity index 100%
rename from core/res/res/drawable/expander_ic_minimized.9.png
rename to core/res/res/drawable-mdpi/expander_ic_minimized.9.png
Binary files differ
diff --git a/core/res/res/drawable/focused_application_background_static.png b/core/res/res/drawable-mdpi/focused_application_background_static.png
similarity index 100%
rename from core/res/res/drawable/focused_application_background_static.png
rename to core/res/res/drawable-mdpi/focused_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable/frame_gallery_thumb.9.png b/core/res/res/drawable-mdpi/frame_gallery_thumb.9.png
similarity index 100%
rename from core/res/res/drawable/frame_gallery_thumb.9.png
rename to core/res/res/drawable-mdpi/frame_gallery_thumb.9.png
Binary files differ
diff --git a/core/res/res/drawable/frame_gallery_thumb_pressed.9.png b/core/res/res/drawable-mdpi/frame_gallery_thumb_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/frame_gallery_thumb_pressed.9.png
rename to core/res/res/drawable-mdpi/frame_gallery_thumb_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/frame_gallery_thumb_selected.9.png b/core/res/res/drawable-mdpi/frame_gallery_thumb_selected.9.png
similarity index 100%
rename from core/res/res/drawable/frame_gallery_thumb_selected.9.png
rename to core/res/res/drawable-mdpi/frame_gallery_thumb_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_selected_default.9.png b/core/res/res/drawable-mdpi/gallery_selected_default.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_selected_default.9.png
rename to core/res/res/drawable-mdpi/gallery_selected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_selected_focused.9.png b/core/res/res/drawable-mdpi/gallery_selected_focused.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_selected_focused.9.png
rename to core/res/res/drawable-mdpi/gallery_selected_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_selected_pressed.9.png b/core/res/res/drawable-mdpi/gallery_selected_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_selected_pressed.9.png
rename to core/res/res/drawable-mdpi/gallery_selected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_unselected_default.9.png b/core/res/res/drawable-mdpi/gallery_unselected_default.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_unselected_default.9.png
rename to core/res/res/drawable-mdpi/gallery_unselected_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/gallery_unselected_pressed.9.png b/core/res/res/drawable-mdpi/gallery_unselected_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/gallery_unselected_pressed.9.png
rename to core/res/res/drawable-mdpi/gallery_unselected_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/grid_selector_background_focus.9.png b/core/res/res/drawable-mdpi/grid_selector_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/grid_selector_background_focus.9.png
rename to core/res/res/drawable-mdpi/grid_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/grid_selector_background_pressed.9.png b/core/res/res/drawable-mdpi/grid_selector_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/grid_selector_background_pressed.9.png
rename to core/res/res/drawable-mdpi/grid_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/highlight_disabled.9.png b/core/res/res/drawable-mdpi/highlight_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/highlight_disabled.9.png
rename to core/res/res/drawable-mdpi/highlight_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/highlight_pressed.9.png b/core/res/res/drawable-mdpi/highlight_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/highlight_pressed.9.png
rename to core/res/res/drawable-mdpi/highlight_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/highlight_selected.9.png b/core/res/res/drawable-mdpi/highlight_selected.9.png
similarity index 100%
rename from core/res/res/drawable/highlight_selected.9.png
rename to core/res/res/drawable-mdpi/highlight_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_round_more_disabled.png b/core/res/res/drawable-mdpi/ic_btn_round_more_disabled.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_round_more_disabled.png
rename to core/res/res/drawable-mdpi/ic_btn_round_more_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_round_more_normal.png b/core/res/res/drawable-mdpi/ic_btn_round_more_normal.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_round_more_normal.png
rename to core/res/res/drawable-mdpi/ic_btn_round_more_normal.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_search.png b/core/res/res/drawable-mdpi/ic_btn_search.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_search.png
rename to core/res/res/drawable-mdpi/ic_btn_search.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_speak_now.png b/core/res/res/drawable-mdpi/ic_btn_speak_now.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_speak_now.png
rename to core/res/res/drawable-mdpi/ic_btn_speak_now.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_normal.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_fit_page_normal.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_disabled.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_disabled.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_disabled.png
Binary files differ
diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_normal.png b/core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_normal.png
similarity index 100%
rename from core/res/res/drawable/ic_btn_square_browser_zoom_page_overview_normal.png
rename to core/res/res/drawable-mdpi/ic_btn_square_browser_zoom_page_overview_normal.png
Binary files differ
diff --git a/core/res/res/drawable/ic_bullet_key_permission.png b/core/res/res/drawable-mdpi/ic_bullet_key_permission.png
similarity index 100%
rename from core/res/res/drawable/ic_bullet_key_permission.png
rename to core/res/res/drawable-mdpi/ic_bullet_key_permission.png
Binary files differ
diff --git a/core/res/res/drawable/ic_contact_picture.png b/core/res/res/drawable-mdpi/ic_contact_picture.png
similarity index 100%
rename from core/res/res/drawable/ic_contact_picture.png
rename to core/res/res/drawable-mdpi/ic_contact_picture.png
Binary files differ
diff --git a/core/res/res/drawable/ic_delete.png b/core/res/res/drawable-mdpi/ic_delete.png
similarity index 100%
rename from core/res/res/drawable/ic_delete.png
rename to core/res/res/drawable-mdpi/ic_delete.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_alert.png b/core/res/res/drawable-mdpi/ic_dialog_alert.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_alert.png
rename to core/res/res/drawable-mdpi/ic_dialog_alert.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_dialer.png b/core/res/res/drawable-mdpi/ic_dialog_dialer.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_dialer.png
rename to core/res/res/drawable-mdpi/ic_dialog_dialer.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_email.png b/core/res/res/drawable-mdpi/ic_dialog_email.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_email.png
rename to core/res/res/drawable-mdpi/ic_dialog_email.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_info.png b/core/res/res/drawable-mdpi/ic_dialog_info.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_info.png
rename to core/res/res/drawable-mdpi/ic_dialog_info.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_map.png b/core/res/res/drawable-mdpi/ic_dialog_map.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_map.png
rename to core/res/res/drawable-mdpi/ic_dialog_map.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_menu_generic.png b/core/res/res/drawable-mdpi/ic_dialog_menu_generic.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_menu_generic.png
rename to core/res/res/drawable-mdpi/ic_dialog_menu_generic.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_time.png b/core/res/res/drawable-mdpi/ic_dialog_time.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_time.png
rename to core/res/res/drawable-mdpi/ic_dialog_time.png
Binary files differ
diff --git a/core/res/res/drawable/ic_dialog_usb.png b/core/res/res/drawable-mdpi/ic_dialog_usb.png
similarity index 100%
rename from core/res/res/drawable/ic_dialog_usb.png
rename to core/res/res/drawable-mdpi/ic_dialog_usb.png
Binary files differ
diff --git a/core/res/res/drawable/ic_emergency.png b/core/res/res/drawable-mdpi/ic_emergency.png
similarity index 100%
rename from core/res/res/drawable/ic_emergency.png
rename to core/res/res/drawable-mdpi/ic_emergency.png
Binary files differ
diff --git a/core/res/res/drawable/ic_input_add.png b/core/res/res/drawable-mdpi/ic_input_add.png
similarity index 100%
rename from core/res/res/drawable/ic_input_add.png
rename to core/res/res/drawable-mdpi/ic_input_add.png
Binary files differ
diff --git a/core/res/res/drawable/ic_input_delete.png b/core/res/res/drawable-mdpi/ic_input_delete.png
similarity index 100%
rename from core/res/res/drawable/ic_input_delete.png
rename to core/res/res/drawable-mdpi/ic_input_delete.png
Binary files differ
diff --git a/core/res/res/drawable/ic_input_get.png b/core/res/res/drawable-mdpi/ic_input_get.png
similarity index 100%
rename from core/res/res/drawable/ic_input_get.png
rename to core/res/res/drawable-mdpi/ic_input_get.png
Binary files differ
diff --git a/core/res/res/drawable/ic_launcher_android.png b/core/res/res/drawable-mdpi/ic_launcher_android.png
similarity index 100%
rename from core/res/res/drawable/ic_launcher_android.png
rename to core/res/res/drawable-mdpi/ic_launcher_android.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_airplane_mode.png b/core/res/res/drawable-mdpi/ic_lock_airplane_mode.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_airplane_mode.png
rename to core/res/res/drawable-mdpi/ic_lock_airplane_mode.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_airplane_mode_off.png b/core/res/res/drawable-mdpi/ic_lock_airplane_mode_off.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_airplane_mode_off.png
rename to core/res/res/drawable-mdpi/ic_lock_airplane_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_alarm.png b/core/res/res/drawable-mdpi/ic_lock_idle_alarm.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_alarm.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_alarm.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_charging.png b/core/res/res/drawable-mdpi/ic_lock_idle_charging.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_charging.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_charging.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_lock.png b/core/res/res/drawable-mdpi/ic_lock_idle_lock.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_lock.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_lock.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_idle_low_battery.png b/core/res/res/drawable-mdpi/ic_lock_idle_low_battery.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_idle_low_battery.png
rename to core/res/res/drawable-mdpi/ic_lock_idle_low_battery.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_lock.png b/core/res/res/drawable-mdpi/ic_lock_lock.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_lock.png
rename to core/res/res/drawable-mdpi/ic_lock_lock.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_power_off.png b/core/res/res/drawable-mdpi/ic_lock_power_off.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_power_off.png
rename to core/res/res/drawable-mdpi/ic_lock_power_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_silent_mode.png b/core/res/res/drawable-mdpi/ic_lock_silent_mode.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_silent_mode.png
rename to core/res/res/drawable-mdpi/ic_lock_silent_mode.png
Binary files differ
diff --git a/core/res/res/drawable/ic_lock_silent_mode_off.png b/core/res/res/drawable-mdpi/ic_lock_silent_mode_off.png
similarity index 100%
rename from core/res/res/drawable/ic_lock_silent_mode_off.png
rename to core/res/res/drawable-mdpi/ic_lock_silent_mode_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position_anim1.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim1.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position_anim1.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position_anim2.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim2.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position_anim2.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/ic_maps_indicator_current_position_anim3.png b/core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim3.png
similarity index 100%
rename from core/res/res/drawable/ic_maps_indicator_current_position_anim3.png
rename to core/res/res/drawable-mdpi/ic_maps_indicator_current_position_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_ff.png b/core/res/res/drawable-mdpi/ic_media_ff.png
similarity index 100%
rename from core/res/res/drawable/ic_media_ff.png
rename to core/res/res/drawable-mdpi/ic_media_ff.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_next.png b/core/res/res/drawable-mdpi/ic_media_next.png
similarity index 100%
rename from core/res/res/drawable/ic_media_next.png
rename to core/res/res/drawable-mdpi/ic_media_next.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_pause.png b/core/res/res/drawable-mdpi/ic_media_pause.png
similarity index 100%
rename from core/res/res/drawable/ic_media_pause.png
rename to core/res/res/drawable-mdpi/ic_media_pause.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_play.png b/core/res/res/drawable-mdpi/ic_media_play.png
similarity index 100%
rename from core/res/res/drawable/ic_media_play.png
rename to core/res/res/drawable-mdpi/ic_media_play.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_previous.png b/core/res/res/drawable-mdpi/ic_media_previous.png
similarity index 100%
rename from core/res/res/drawable/ic_media_previous.png
rename to core/res/res/drawable-mdpi/ic_media_previous.png
Binary files differ
diff --git a/core/res/res/drawable/ic_media_rew.png b/core/res/res/drawable-mdpi/ic_media_rew.png
similarity index 100%
rename from core/res/res/drawable/ic_media_rew.png
rename to core/res/res/drawable-mdpi/ic_media_rew.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_account_list.png b/core/res/res/drawable-mdpi/ic_menu_account_list.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_account_list.png
rename to core/res/res/drawable-mdpi/ic_menu_account_list.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_add.png b/core/res/res/drawable-mdpi/ic_menu_add.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_add.png
rename to core/res/res/drawable-mdpi/ic_menu_add.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_agenda.png b/core/res/res/drawable-mdpi/ic_menu_agenda.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_agenda.png
rename to core/res/res/drawable-mdpi/ic_menu_agenda.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_allfriends.png b/core/res/res/drawable-mdpi/ic_menu_allfriends.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_allfriends.png
rename to core/res/res/drawable-mdpi/ic_menu_allfriends.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_always_landscape_portrait.png b/core/res/res/drawable-mdpi/ic_menu_always_landscape_portrait.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_always_landscape_portrait.png
rename to core/res/res/drawable-mdpi/ic_menu_always_landscape_portrait.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_archive.png b/core/res/res/drawable-mdpi/ic_menu_archive.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_archive.png
rename to core/res/res/drawable-mdpi/ic_menu_archive.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_attachment.png b/core/res/res/drawable-mdpi/ic_menu_attachment.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_attachment.png
rename to core/res/res/drawable-mdpi/ic_menu_attachment.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_back.png b/core/res/res/drawable-mdpi/ic_menu_back.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_back.png
rename to core/res/res/drawable-mdpi/ic_menu_back.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_block.png b/core/res/res/drawable-mdpi/ic_menu_block.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_block.png
rename to core/res/res/drawable-mdpi/ic_menu_block.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_blocked_user.png b/core/res/res/drawable-mdpi/ic_menu_blocked_user.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_blocked_user.png
rename to core/res/res/drawable-mdpi/ic_menu_blocked_user.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_call.png b/core/res/res/drawable-mdpi/ic_menu_call.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_call.png
rename to core/res/res/drawable-mdpi/ic_menu_call.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_camera.png b/core/res/res/drawable-mdpi/ic_menu_camera.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_camera.png
rename to core/res/res/drawable-mdpi/ic_menu_camera.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_cc.png b/core/res/res/drawable-mdpi/ic_menu_cc.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_cc.png
rename to core/res/res/drawable-mdpi/ic_menu_cc.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_chat_dashboard.png b/core/res/res/drawable-mdpi/ic_menu_chat_dashboard.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_chat_dashboard.png
rename to core/res/res/drawable-mdpi/ic_menu_chat_dashboard.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_clear_playlist.png b/core/res/res/drawable-mdpi/ic_menu_clear_playlist.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_clear_playlist.png
rename to core/res/res/drawable-mdpi/ic_menu_clear_playlist.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_close_clear_cancel.png b/core/res/res/drawable-mdpi/ic_menu_close_clear_cancel.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_close_clear_cancel.png
rename to core/res/res/drawable-mdpi/ic_menu_close_clear_cancel.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_compass.png b/core/res/res/drawable-mdpi/ic_menu_compass.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_compass.png
rename to core/res/res/drawable-mdpi/ic_menu_compass.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_compose.png b/core/res/res/drawable-mdpi/ic_menu_compose.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_compose.png
rename to core/res/res/drawable-mdpi/ic_menu_compose.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_crop.png b/core/res/res/drawable-mdpi/ic_menu_crop.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_crop.png
rename to core/res/res/drawable-mdpi/ic_menu_crop.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_day.png b/core/res/res/drawable-mdpi/ic_menu_day.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_day.png
rename to core/res/res/drawable-mdpi/ic_menu_day.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_delete.png b/core/res/res/drawable-mdpi/ic_menu_delete.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_delete.png
rename to core/res/res/drawable-mdpi/ic_menu_delete.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_directions.png b/core/res/res/drawable-mdpi/ic_menu_directions.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_directions.png
rename to core/res/res/drawable-mdpi/ic_menu_directions.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_edit.png b/core/res/res/drawable-mdpi/ic_menu_edit.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_edit.png
rename to core/res/res/drawable-mdpi/ic_menu_edit.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_emoticons.png b/core/res/res/drawable-mdpi/ic_menu_emoticons.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_emoticons.png
rename to core/res/res/drawable-mdpi/ic_menu_emoticons.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_end_conversation.png b/core/res/res/drawable-mdpi/ic_menu_end_conversation.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_end_conversation.png
rename to core/res/res/drawable-mdpi/ic_menu_end_conversation.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_forward.png b/core/res/res/drawable-mdpi/ic_menu_forward.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_forward.png
rename to core/res/res/drawable-mdpi/ic_menu_forward.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_friendslist.png b/core/res/res/drawable-mdpi/ic_menu_friendslist.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_friendslist.png
rename to core/res/res/drawable-mdpi/ic_menu_friendslist.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_gallery.png b/core/res/res/drawable-mdpi/ic_menu_gallery.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_gallery.png
rename to core/res/res/drawable-mdpi/ic_menu_gallery.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_goto.png b/core/res/res/drawable-mdpi/ic_menu_goto.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_goto.png
rename to core/res/res/drawable-mdpi/ic_menu_goto.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_help.png b/core/res/res/drawable-mdpi/ic_menu_help.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_help.png
rename to core/res/res/drawable-mdpi/ic_menu_help.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_home.png b/core/res/res/drawable-mdpi/ic_menu_home.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_home.png
rename to core/res/res/drawable-mdpi/ic_menu_home.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_info_details.png b/core/res/res/drawable-mdpi/ic_menu_info_details.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_info_details.png
rename to core/res/res/drawable-mdpi/ic_menu_info_details.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_invite.png b/core/res/res/drawable-mdpi/ic_menu_invite.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_invite.png
rename to core/res/res/drawable-mdpi/ic_menu_invite.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_login.png b/core/res/res/drawable-mdpi/ic_menu_login.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_login.png
rename to core/res/res/drawable-mdpi/ic_menu_login.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_manage.png b/core/res/res/drawable-mdpi/ic_menu_manage.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_manage.png
rename to core/res/res/drawable-mdpi/ic_menu_manage.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_mapmode.png b/core/res/res/drawable-mdpi/ic_menu_mapmode.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_mapmode.png
rename to core/res/res/drawable-mdpi/ic_menu_mapmode.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_mark.png b/core/res/res/drawable-mdpi/ic_menu_mark.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_mark.png
rename to core/res/res/drawable-mdpi/ic_menu_mark.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_month.png b/core/res/res/drawable-mdpi/ic_menu_month.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_month.png
rename to core/res/res/drawable-mdpi/ic_menu_month.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_more.png b/core/res/res/drawable-mdpi/ic_menu_more.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_more.png
rename to core/res/res/drawable-mdpi/ic_menu_more.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_my_calendar.png b/core/res/res/drawable-mdpi/ic_menu_my_calendar.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_my_calendar.png
rename to core/res/res/drawable-mdpi/ic_menu_my_calendar.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_mylocation.png b/core/res/res/drawable-mdpi/ic_menu_mylocation.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_mylocation.png
rename to core/res/res/drawable-mdpi/ic_menu_mylocation.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_myplaces.png b/core/res/res/drawable-mdpi/ic_menu_myplaces.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_myplaces.png
rename to core/res/res/drawable-mdpi/ic_menu_myplaces.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_notifications.png b/core/res/res/drawable-mdpi/ic_menu_notifications.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_notifications.png
rename to core/res/res/drawable-mdpi/ic_menu_notifications.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_play_clip.png b/core/res/res/drawable-mdpi/ic_menu_play_clip.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_play_clip.png
rename to core/res/res/drawable-mdpi/ic_menu_play_clip.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_preferences.png b/core/res/res/drawable-mdpi/ic_menu_preferences.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_preferences.png
rename to core/res/res/drawable-mdpi/ic_menu_preferences.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_recent_history.png b/core/res/res/drawable-mdpi/ic_menu_recent_history.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_recent_history.png
rename to core/res/res/drawable-mdpi/ic_menu_recent_history.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_refresh.png b/core/res/res/drawable-mdpi/ic_menu_refresh.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_refresh.png
rename to core/res/res/drawable-mdpi/ic_menu_refresh.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_report_image.png b/core/res/res/drawable-mdpi/ic_menu_report_image.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_report_image.png
rename to core/res/res/drawable-mdpi/ic_menu_report_image.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_revert.png b/core/res/res/drawable-mdpi/ic_menu_revert.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_revert.png
rename to core/res/res/drawable-mdpi/ic_menu_revert.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_rotate.png b/core/res/res/drawable-mdpi/ic_menu_rotate.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_rotate.png
rename to core/res/res/drawable-mdpi/ic_menu_rotate.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_save.png b/core/res/res/drawable-mdpi/ic_menu_save.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_save.png
rename to core/res/res/drawable-mdpi/ic_menu_save.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_search.png b/core/res/res/drawable-mdpi/ic_menu_search.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_search.png
rename to core/res/res/drawable-mdpi/ic_menu_search.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_send.png b/core/res/res/drawable-mdpi/ic_menu_send.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_send.png
rename to core/res/res/drawable-mdpi/ic_menu_send.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_set_as.png b/core/res/res/drawable-mdpi/ic_menu_set_as.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_set_as.png
rename to core/res/res/drawable-mdpi/ic_menu_set_as.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_share.png b/core/res/res/drawable-mdpi/ic_menu_share.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_share.png
rename to core/res/res/drawable-mdpi/ic_menu_share.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_slideshow.png b/core/res/res/drawable-mdpi/ic_menu_slideshow.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_slideshow.png
rename to core/res/res/drawable-mdpi/ic_menu_slideshow.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_sort_alphabetically.png b/core/res/res/drawable-mdpi/ic_menu_sort_alphabetically.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_sort_alphabetically.png
rename to core/res/res/drawable-mdpi/ic_menu_sort_alphabetically.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_sort_by_size.png b/core/res/res/drawable-mdpi/ic_menu_sort_by_size.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_sort_by_size.png
rename to core/res/res/drawable-mdpi/ic_menu_sort_by_size.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_star.png b/core/res/res/drawable-mdpi/ic_menu_star.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_star.png
rename to core/res/res/drawable-mdpi/ic_menu_star.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_start_conversation.png b/core/res/res/drawable-mdpi/ic_menu_start_conversation.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_start_conversation.png
rename to core/res/res/drawable-mdpi/ic_menu_start_conversation.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_stop.png b/core/res/res/drawable-mdpi/ic_menu_stop.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_stop.png
rename to core/res/res/drawable-mdpi/ic_menu_stop.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_today.png b/core/res/res/drawable-mdpi/ic_menu_today.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_today.png
rename to core/res/res/drawable-mdpi/ic_menu_today.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_upload.png b/core/res/res/drawable-mdpi/ic_menu_upload.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_upload.png
rename to core/res/res/drawable-mdpi/ic_menu_upload.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_upload_you_tube.png b/core/res/res/drawable-mdpi/ic_menu_upload_you_tube.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_upload_you_tube.png
rename to core/res/res/drawable-mdpi/ic_menu_upload_you_tube.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_view.png b/core/res/res/drawable-mdpi/ic_menu_view.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_view.png
rename to core/res/res/drawable-mdpi/ic_menu_view.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_week.png b/core/res/res/drawable-mdpi/ic_menu_week.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_week.png
rename to core/res/res/drawable-mdpi/ic_menu_week.png
Binary files differ
diff --git a/core/res/res/drawable/ic_menu_zoom.png b/core/res/res/drawable-mdpi/ic_menu_zoom.png
similarity index 100%
rename from core/res/res/drawable/ic_menu_zoom.png
rename to core/res/res/drawable-mdpi/ic_menu_zoom.png
Binary files differ
diff --git a/core/res/res/drawable/ic_notification_clear_all.png b/core/res/res/drawable-mdpi/ic_notification_clear_all.png
similarity index 100%
rename from core/res/res/drawable/ic_notification_clear_all.png
rename to core/res/res/drawable-mdpi/ic_notification_clear_all.png
Binary files differ
diff --git a/core/res/res/drawable/ic_notification_overlay.9.png b/core/res/res/drawable-mdpi/ic_notification_overlay.9.png
similarity index 100%
rename from core/res/res/drawable/ic_notification_overlay.9.png
rename to core/res/res/drawable-mdpi/ic_notification_overlay.9.png
Binary files differ
diff --git a/core/res/res/drawable/ic_partial_secure.png b/core/res/res/drawable-mdpi/ic_partial_secure.png
similarity index 100%
rename from core/res/res/drawable/ic_partial_secure.png
rename to core/res/res/drawable-mdpi/ic_partial_secure.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_disk_full.png b/core/res/res/drawable-mdpi/ic_popup_disk_full.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_disk_full.png
rename to core/res/res/drawable-mdpi/ic_popup_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_reminder.png b/core/res/res/drawable-mdpi/ic_popup_reminder.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_reminder.png
rename to core/res/res/drawable-mdpi/ic_popup_reminder.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_1.png b/core/res/res/drawable-mdpi/ic_popup_sync_1.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_1.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_1.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_2.png b/core/res/res/drawable-mdpi/ic_popup_sync_2.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_2.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_2.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_3.png b/core/res/res/drawable-mdpi/ic_popup_sync_3.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_3.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_3.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_4.png b/core/res/res/drawable-mdpi/ic_popup_sync_4.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_4.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_4.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_5.png b/core/res/res/drawable-mdpi/ic_popup_sync_5.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_5.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_5.png
Binary files differ
diff --git a/core/res/res/drawable/ic_popup_sync_6.png b/core/res/res/drawable-mdpi/ic_popup_sync_6.png
similarity index 100%
rename from core/res/res/drawable/ic_popup_sync_6.png
rename to core/res/res/drawable-mdpi/ic_popup_sync_6.png
Binary files differ
diff --git a/core/res/res/drawable/ic_search_category_default.png b/core/res/res/drawable-mdpi/ic_search_category_default.png
similarity index 100%
rename from core/res/res/drawable/ic_search_category_default.png
rename to core/res/res/drawable-mdpi/ic_search_category_default.png
Binary files differ
diff --git a/core/res/res/drawable/ic_secure.png b/core/res/res/drawable-mdpi/ic_secure.png
similarity index 100%
rename from core/res/res/drawable/ic_secure.png
rename to core/res/res/drawable-mdpi/ic_secure.png
Binary files differ
diff --git a/core/res/res/drawable/ic_text_dot.png b/core/res/res/drawable-mdpi/ic_text_dot.png
similarity index 100%
rename from core/res/res/drawable/ic_text_dot.png
rename to core/res/res/drawable-mdpi/ic_text_dot.png
Binary files differ
diff --git a/core/res/res/drawable/ic_vibrate.png b/core/res/res/drawable-mdpi/ic_vibrate.png
similarity index 100%
rename from core/res/res/drawable/ic_vibrate.png
rename to core/res/res/drawable-mdpi/ic_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume.png b/core/res/res/drawable-mdpi/ic_volume.png
similarity index 100%
rename from core/res/res/drawable/ic_volume.png
rename to core/res/res/drawable-mdpi/ic_volume.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_bluetooth_ad2p.png b/core/res/res/drawable-mdpi/ic_volume_bluetooth_ad2p.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_bluetooth_ad2p.png
rename to core/res/res/drawable-mdpi/ic_volume_bluetooth_ad2p.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_bluetooth_in_call.png b/core/res/res/drawable-mdpi/ic_volume_bluetooth_in_call.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_bluetooth_in_call.png
rename to core/res/res/drawable-mdpi/ic_volume_bluetooth_in_call.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_off.png b/core/res/res/drawable-mdpi/ic_volume_off.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_off.png
rename to core/res/res/drawable-mdpi/ic_volume_off.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_off_small.png b/core/res/res/drawable-mdpi/ic_volume_off_small.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_off_small.png
rename to core/res/res/drawable-mdpi/ic_volume_off_small.png
Binary files differ
diff --git a/core/res/res/drawable/ic_volume_small.png b/core/res/res/drawable-mdpi/ic_volume_small.png
similarity index 100%
rename from core/res/res/drawable/ic_volume_small.png
rename to core/res/res/drawable-mdpi/ic_volume_small.png
Binary files differ
diff --git a/core/res/res/drawable/icon_highlight_rectangle.9.png b/core/res/res/drawable-mdpi/icon_highlight_rectangle.9.png
similarity index 100%
rename from core/res/res/drawable/icon_highlight_rectangle.9.png
rename to core/res/res/drawable-mdpi/icon_highlight_rectangle.9.png
Binary files differ
diff --git a/core/res/res/drawable/icon_highlight_square.9.png b/core/res/res/drawable-mdpi/icon_highlight_square.9.png
similarity index 100%
rename from core/res/res/drawable/icon_highlight_square.9.png
rename to core/res/res/drawable-mdpi/icon_highlight_square.9.png
Binary files differ
diff --git a/core/res/res/drawable/ime_qwerty.png b/core/res/res/drawable-mdpi/ime_qwerty.png
similarity index 100%
rename from core/res/res/drawable/ime_qwerty.png
rename to core/res/res/drawable-mdpi/ime_qwerty.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_drag_direction_green_up.png b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_green_up.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_drag_direction_green_up.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_green_up.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_drag_direction_red_up.png b/core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_drag_direction_red_up.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_drag_direction_red_up.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_point_area_default.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_point_area_default.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_point_area_default.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_point_area_green.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_point_area_green.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_point_area_green.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_code_lock_point_area_red.png b/core/res/res/drawable-mdpi/indicator_code_lock_point_area_red.png
similarity index 100%
rename from core/res/res/drawable/indicator_code_lock_point_area_red.png
rename to core/res/res/drawable-mdpi/indicator_code_lock_point_area_red.png
Binary files differ
diff --git a/core/res/res/drawable/indicator_input_error.png b/core/res/res/drawable-mdpi/indicator_input_error.png
similarity index 100%
rename from core/res/res/drawable/indicator_input_error.png
rename to core/res/res/drawable-mdpi/indicator_input_error.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_accessory_bg_landscape.9.png b/core/res/res/drawable-mdpi/keyboard_accessory_bg_landscape.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_accessory_bg_landscape.9.png
rename to core/res/res/drawable-mdpi/keyboard_accessory_bg_landscape.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_background.9.png b/core/res/res/drawable-mdpi/keyboard_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_key_feedback_background.9.png b/core/res/res/drawable-mdpi/keyboard_key_feedback_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_key_feedback_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_key_feedback_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_key_feedback_more_background.9.png b/core/res/res/drawable-mdpi/keyboard_key_feedback_more_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_key_feedback_more_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_key_feedback_more_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_popup_panel_background.9.png b/core/res/res/drawable-mdpi/keyboard_popup_panel_background.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_popup_panel_background.9.png
rename to core/res/res/drawable-mdpi/keyboard_popup_panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/keyboard_textfield_selected.9.png b/core/res/res/drawable-mdpi/keyboard_textfield_selected.9.png
similarity index 100%
rename from core/res/res/drawable/keyboard_textfield_selected.9.png
rename to core/res/res/drawable-mdpi/keyboard_textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/light_header.9.png b/core/res/res/drawable-mdpi/light_header.9.png
similarity index 100%
rename from core/res/res/drawable/light_header.9.png
rename to core/res/res/drawable-mdpi/light_header.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_disabled.9.png b/core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_disabled.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_focus.9.png b/core/res/res/drawable-mdpi/list_selector_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_focus.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_longpress.9.png b/core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_longpress.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_longpress.9.png
Binary files differ
diff --git a/core/res/res/drawable/list_selector_background_pressed.9.png b/core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/list_selector_background_pressed.9.png
rename to core/res/res/drawable-mdpi/list_selector_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/loading_tile.png b/core/res/res/drawable-mdpi/loading_tile.png
similarity index 100%
rename from core/res/res/drawable/loading_tile.png
rename to core/res/res/drawable-mdpi/loading_tile.png
Binary files differ
diff --git a/core/res/res/drawable/maps_google_logo.png b/core/res/res/drawable-mdpi/maps_google_logo.png
similarity index 100%
rename from core/res/res/drawable/maps_google_logo.png
rename to core/res/res/drawable-mdpi/maps_google_logo.png
Binary files differ
diff --git a/core/res/res/drawable/menu_background.9.png b/core/res/res/drawable-mdpi/menu_background.9.png
similarity index 100%
rename from core/res/res/drawable/menu_background.9.png
rename to core/res/res/drawable-mdpi/menu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/menu_background_fill_parent_width.9.png b/core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
similarity index 100%
rename from core/res/res/drawable/menu_background_fill_parent_width.9.png
rename to core/res/res/drawable-mdpi/menu_background_fill_parent_width.9.png
Binary files differ
diff --git a/core/res/res/drawable/menu_separator.9.png b/core/res/res/drawable-mdpi/menu_separator.9.png
similarity index 100%
rename from core/res/res/drawable/menu_separator.9.png
rename to core/res/res/drawable-mdpi/menu_separator.9.png
Binary files differ
diff --git a/core/res/res/drawable/menu_submenu_background.9.png b/core/res/res/drawable-mdpi/menu_submenu_background.9.png
similarity index 100%
rename from core/res/res/drawable/menu_submenu_background.9.png
rename to core/res/res/drawable-mdpi/menu_submenu_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_focus.9.png b/core/res/res/drawable-mdpi/menuitem_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_focus.9.png
rename to core/res/res/drawable-mdpi/menuitem_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_pressed.9.png b/core/res/res/drawable-mdpi/menuitem_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/menuitem_background_pressed.9.png
rename to core/res/res/drawable-mdpi/menuitem_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_focused.9.png b/core/res/res/drawable-mdpi/menuitem_background_solid_focused.9.png
similarity index 100%
copy from core/res/res/drawable/menuitem_background_solid_focused.9.png
copy to core/res/res/drawable-mdpi/menuitem_background_solid_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_background_solid_pressed.9.png b/core/res/res/drawable-mdpi/menuitem_background_solid_pressed.9.png
similarity index 100%
copy from core/res/res/drawable/menuitem_background_solid_pressed.9.png
copy to core/res/res/drawable-mdpi/menuitem_background_solid_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/menuitem_checkbox_on.png b/core/res/res/drawable-mdpi/menuitem_checkbox_on.png
similarity index 100%
rename from core/res/res/drawable/menuitem_checkbox_on.png
rename to core/res/res/drawable-mdpi/menuitem_checkbox_on.png
Binary files differ
diff --git a/core/res/res/drawable/no_tile_128.png b/core/res/res/drawable-mdpi/no_tile_128.png
similarity index 100%
rename from core/res/res/drawable/no_tile_128.png
rename to core/res/res/drawable-mdpi/no_tile_128.png
Binary files differ
diff --git a/core/res/res/drawable/panel_background.9.png b/core/res/res/drawable-mdpi/panel_background.9.png
similarity index 100%
rename from core/res/res/drawable/panel_background.9.png
rename to core/res/res/drawable-mdpi/panel_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/panel_picture_frame_bg_focus_blue.9.png b/core/res/res/drawable-mdpi/panel_picture_frame_bg_focus_blue.9.png
similarity index 100%
rename from core/res/res/drawable/panel_picture_frame_bg_focus_blue.9.png
rename to core/res/res/drawable-mdpi/panel_picture_frame_bg_focus_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable/panel_picture_frame_bg_normal.9.png b/core/res/res/drawable-mdpi/panel_picture_frame_bg_normal.9.png
similarity index 100%
rename from core/res/res/drawable/panel_picture_frame_bg_normal.9.png
rename to core/res/res/drawable-mdpi/panel_picture_frame_bg_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/panel_picture_frame_bg_pressed_blue.9.png b/core/res/res/drawable-mdpi/panel_picture_frame_bg_pressed_blue.9.png
similarity index 100%
rename from core/res/res/drawable/panel_picture_frame_bg_pressed_blue.9.png
rename to core/res/res/drawable-mdpi/panel_picture_frame_bg_pressed_blue.9.png
Binary files differ
diff --git a/core/res/res/drawable/pickerbox_background.png b/core/res/res/drawable-mdpi/pickerbox_background.png
similarity index 100%
rename from core/res/res/drawable/pickerbox_background.png
rename to core/res/res/drawable-mdpi/pickerbox_background.png
Binary files differ
diff --git a/core/res/res/drawable/pickerbox_selected.9.png b/core/res/res/drawable-mdpi/pickerbox_selected.9.png
similarity index 100%
rename from core/res/res/drawable/pickerbox_selected.9.png
rename to core/res/res/drawable-mdpi/pickerbox_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/pickerbox_unselected.9.png b/core/res/res/drawable-mdpi/pickerbox_unselected.9.png
similarity index 100%
rename from core/res/res/drawable/pickerbox_unselected.9.png
rename to core/res/res/drawable-mdpi/pickerbox_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable/picture_emergency.png b/core/res/res/drawable-mdpi/picture_emergency.png
similarity index 100%
rename from core/res/res/drawable/picture_emergency.png
rename to core/res/res/drawable-mdpi/picture_emergency.png
Binary files differ
diff --git a/core/res/res/drawable/picture_frame.9.png b/core/res/res/drawable-mdpi/picture_frame.9.png
similarity index 100%
rename from core/res/res/drawable/picture_frame.9.png
rename to core/res/res/drawable-mdpi/picture_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_bottom_bright.9.png b/core/res/res/drawable-mdpi/popup_bottom_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_bottom_bright.9.png
rename to core/res/res/drawable-mdpi/popup_bottom_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_bottom_dark.9.png b/core/res/res/drawable-mdpi/popup_bottom_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_bottom_dark.9.png
rename to core/res/res/drawable-mdpi/popup_bottom_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_bottom_medium.9.png b/core/res/res/drawable-mdpi/popup_bottom_medium.9.png
similarity index 100%
rename from core/res/res/drawable/popup_bottom_medium.9.png
rename to core/res/res/drawable-mdpi/popup_bottom_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_center_bright.9.png b/core/res/res/drawable-mdpi/popup_center_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_center_bright.9.png
rename to core/res/res/drawable-mdpi/popup_center_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_center_dark.9.png b/core/res/res/drawable-mdpi/popup_center_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_center_dark.9.png
rename to core/res/res/drawable-mdpi/popup_center_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_center_medium.9.png b/core/res/res/drawable-mdpi/popup_center_medium.9.png
similarity index 100%
rename from core/res/res/drawable/popup_center_medium.9.png
rename to core/res/res/drawable-mdpi/popup_center_medium.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_full_bright.9.png b/core/res/res/drawable-mdpi/popup_full_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_full_bright.9.png
rename to core/res/res/drawable-mdpi/popup_full_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_full_dark.9.png b/core/res/res/drawable-mdpi/popup_full_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_full_dark.9.png
rename to core/res/res/drawable-mdpi/popup_full_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_inline_error.9.png b/core/res/res/drawable-mdpi/popup_inline_error.9.png
similarity index 100%
rename from core/res/res/drawable/popup_inline_error.9.png
rename to core/res/res/drawable-mdpi/popup_inline_error.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_inline_error_above.9.png b/core/res/res/drawable-mdpi/popup_inline_error_above.9.png
similarity index 100%
rename from core/res/res/drawable/popup_inline_error_above.9.png
rename to core/res/res/drawable-mdpi/popup_inline_error_above.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_top_bright.9.png b/core/res/res/drawable-mdpi/popup_top_bright.9.png
similarity index 100%
rename from core/res/res/drawable/popup_top_bright.9.png
rename to core/res/res/drawable-mdpi/popup_top_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/popup_top_dark.9.png b/core/res/res/drawable-mdpi/popup_top_dark.9.png
similarity index 100%
rename from core/res/res/drawable/popup_top_dark.9.png
rename to core/res/res/drawable-mdpi/popup_top_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/presence_away.png b/core/res/res/drawable-mdpi/presence_away.png
similarity index 100%
rename from core/res/res/drawable/presence_away.png
rename to core/res/res/drawable-mdpi/presence_away.png
Binary files differ
diff --git a/core/res/res/drawable/presence_busy.png b/core/res/res/drawable-mdpi/presence_busy.png
similarity index 100%
rename from core/res/res/drawable/presence_busy.png
rename to core/res/res/drawable-mdpi/presence_busy.png
Binary files differ
diff --git a/core/res/res/drawable/presence_invisible.png b/core/res/res/drawable-mdpi/presence_invisible.png
similarity index 100%
rename from core/res/res/drawable/presence_invisible.png
rename to core/res/res/drawable-mdpi/presence_invisible.png
Binary files differ
diff --git a/core/res/res/drawable/presence_offline.png b/core/res/res/drawable-mdpi/presence_offline.png
similarity index 100%
rename from core/res/res/drawable/presence_offline.png
rename to core/res/res/drawable-mdpi/presence_offline.png
Binary files differ
diff --git a/core/res/res/drawable/presence_online.png b/core/res/res/drawable-mdpi/presence_online.png
similarity index 100%
rename from core/res/res/drawable/presence_online.png
rename to core/res/res/drawable-mdpi/presence_online.png
Binary files differ
diff --git a/core/res/res/drawable/pressed_application_background_static.png b/core/res/res/drawable-mdpi/pressed_application_background_static.png
similarity index 100%
rename from core/res/res/drawable/pressed_application_background_static.png
rename to core/res/res/drawable-mdpi/pressed_application_background_static.png
Binary files differ
diff --git a/core/res/res/drawable/progressbar_indeterminate1.png b/core/res/res/drawable-mdpi/progressbar_indeterminate1.png
similarity index 100%
rename from core/res/res/drawable/progressbar_indeterminate1.png
rename to core/res/res/drawable-mdpi/progressbar_indeterminate1.png
Binary files differ
diff --git a/core/res/res/drawable/progressbar_indeterminate2.png b/core/res/res/drawable-mdpi/progressbar_indeterminate2.png
similarity index 100%
rename from core/res/res/drawable/progressbar_indeterminate2.png
rename to core/res/res/drawable-mdpi/progressbar_indeterminate2.png
Binary files differ
diff --git a/core/res/res/drawable/progressbar_indeterminate3.png b/core/res/res/drawable-mdpi/progressbar_indeterminate3.png
similarity index 100%
rename from core/res/res/drawable/progressbar_indeterminate3.png
rename to core/res/res/drawable-mdpi/progressbar_indeterminate3.png
Binary files differ
diff --git a/core/res/res/drawable/radiobutton_off_background.png b/core/res/res/drawable-mdpi/radiobutton_off_background.png
similarity index 100%
rename from core/res/res/drawable/radiobutton_off_background.png
rename to core/res/res/drawable-mdpi/radiobutton_off_background.png
Binary files differ
diff --git a/core/res/res/drawable/radiobutton_on_background.png b/core/res/res/drawable-mdpi/radiobutton_on_background.png
similarity index 100%
rename from core/res/res/drawable/radiobutton_on_background.png
rename to core/res/res/drawable-mdpi/radiobutton_on_background.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_big_half.png b/core/res/res/drawable-mdpi/rate_star_big_half.png
similarity index 100%
rename from core/res/res/drawable/rate_star_big_half.png
rename to core/res/res/drawable-mdpi/rate_star_big_half.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_big_off.png b/core/res/res/drawable-mdpi/rate_star_big_off.png
similarity index 100%
rename from core/res/res/drawable/rate_star_big_off.png
rename to core/res/res/drawable-mdpi/rate_star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_big_on.png b/core/res/res/drawable-mdpi/rate_star_big_on.png
similarity index 100%
rename from core/res/res/drawable/rate_star_big_on.png
rename to core/res/res/drawable-mdpi/rate_star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_small_half.png b/core/res/res/drawable-mdpi/rate_star_small_half.png
similarity index 100%
rename from core/res/res/drawable/rate_star_small_half.png
rename to core/res/res/drawable-mdpi/rate_star_small_half.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_small_off.png b/core/res/res/drawable-mdpi/rate_star_small_off.png
similarity index 100%
rename from core/res/res/drawable/rate_star_small_off.png
rename to core/res/res/drawable-mdpi/rate_star_small_off.png
Binary files differ
diff --git a/core/res/res/drawable/rate_star_small_on.png b/core/res/res/drawable-mdpi/rate_star_small_on.png
similarity index 100%
rename from core/res/res/drawable/rate_star_small_on.png
rename to core/res/res/drawable-mdpi/rate_star_small_on.png
Binary files differ
diff --git a/core/res/res/drawable/reticle.png b/core/res/res/drawable-mdpi/reticle.png
similarity index 100%
rename from core/res/res/drawable/reticle.png
rename to core/res/res/drawable-mdpi/reticle.png
Binary files differ
diff --git a/core/res/res/drawable/screen_progress_frame.9.png b/core/res/res/drawable-mdpi/screen_progress_frame.9.png
similarity index 100%
rename from core/res/res/drawable/screen_progress_frame.9.png
rename to core/res/res/drawable-mdpi/screen_progress_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable/screen_progress_inner.9.png b/core/res/res/drawable-mdpi/screen_progress_inner.9.png
similarity index 100%
rename from core/res/res/drawable/screen_progress_inner.9.png
rename to core/res/res/drawable-mdpi/screen_progress_inner.9.png
Binary files differ
diff --git a/core/res/res/drawable/scrollbar_handle_accelerated_anim2.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_accelerated_anim2.9.png
similarity index 100%
rename from core/res/res/drawable/scrollbar_handle_accelerated_anim2.9.png
rename to core/res/res/drawable-mdpi/scrollbar_handle_accelerated_anim2.9.png
Binary files differ
diff --git a/core/res/res/drawable/scrollbar_handle_horizontal.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_horizontal.9.png
similarity index 100%
rename from core/res/res/drawable/scrollbar_handle_horizontal.9.png
rename to core/res/res/drawable-mdpi/scrollbar_handle_horizontal.9.png
Binary files differ
diff --git a/core/res/res/drawable/scrollbar_handle_vertical.9.png b/core/res/res/drawable-mdpi/scrollbar_handle_vertical.9.png
similarity index 100%
rename from core/res/res/drawable/scrollbar_handle_vertical.9.png
rename to core/res/res/drawable-mdpi/scrollbar_handle_vertical.9.png
Binary files differ
diff --git a/core/res/res/drawable/search_dropdown_background.9.png b/core/res/res/drawable-mdpi/search_dropdown_background.9.png
similarity index 100%
rename from core/res/res/drawable/search_dropdown_background.9.png
rename to core/res/res/drawable-mdpi/search_dropdown_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/search_plate.9.png b/core/res/res/drawable-mdpi/search_plate.9.png
similarity index 100%
rename from core/res/res/drawable/search_plate.9.png
rename to core/res/res/drawable-mdpi/search_plate.9.png
Binary files differ
diff --git a/core/res/res/drawable/search_plate_global.9.png b/core/res/res/drawable-mdpi/search_plate_global.9.png
similarity index 100%
rename from core/res/res/drawable/search_plate_global.9.png
rename to core/res/res/drawable-mdpi/search_plate_global.9.png
Binary files differ
diff --git a/core/res/res/drawable/seek_thumb_normal.png b/core/res/res/drawable-mdpi/seek_thumb_normal.png
similarity index 100%
rename from core/res/res/drawable/seek_thumb_normal.png
rename to core/res/res/drawable-mdpi/seek_thumb_normal.png
Binary files differ
diff --git a/core/res/res/drawable/seek_thumb_pressed.png b/core/res/res/drawable-mdpi/seek_thumb_pressed.png
similarity index 100%
rename from core/res/res/drawable/seek_thumb_pressed.png
rename to core/res/res/drawable-mdpi/seek_thumb_pressed.png
Binary files differ
diff --git a/core/res/res/drawable/seek_thumb_selected.png b/core/res/res/drawable-mdpi/seek_thumb_selected.png
similarity index 100%
rename from core/res/res/drawable/seek_thumb_selected.png
rename to core/res/res/drawable-mdpi/seek_thumb_selected.png
Binary files differ
diff --git a/core/res/res/drawable/settings_header_raw.9.png b/core/res/res/drawable-mdpi/settings_header_raw.9.png
similarity index 100%
rename from core/res/res/drawable/settings_header_raw.9.png
rename to core/res/res/drawable-mdpi/settings_header_raw.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_16.png b/core/res/res/drawable-mdpi/spinner_black_16.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_16.png
rename to core/res/res/drawable-mdpi/spinner_black_16.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_20.png b/core/res/res/drawable-mdpi/spinner_black_20.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_20.png
rename to core/res/res/drawable-mdpi/spinner_black_20.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_48.png b/core/res/res/drawable-mdpi/spinner_black_48.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_48.png
rename to core/res/res/drawable-mdpi/spinner_black_48.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_black_76.png b/core/res/res/drawable-mdpi/spinner_black_76.png
similarity index 100%
rename from core/res/res/drawable/spinner_black_76.png
rename to core/res/res/drawable-mdpi/spinner_black_76.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_dropdown_background_down.9.png b/core/res/res/drawable-mdpi/spinner_dropdown_background_down.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_dropdown_background_down.9.png
rename to core/res/res/drawable-mdpi/spinner_dropdown_background_down.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_dropdown_background_up.9.png b/core/res/res/drawable-mdpi/spinner_dropdown_background_up.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_dropdown_background_up.9.png
rename to core/res/res/drawable-mdpi/spinner_dropdown_background_up.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_normal.9.png b/core/res/res/drawable-mdpi/spinner_normal.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_normal.9.png
rename to core/res/res/drawable-mdpi/spinner_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_press.9.png b/core/res/res/drawable-mdpi/spinner_press.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_press.9.png
rename to core/res/res/drawable-mdpi/spinner_press.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_select.9.png b/core/res/res/drawable-mdpi/spinner_select.9.png
similarity index 100%
rename from core/res/res/drawable/spinner_select.9.png
rename to core/res/res/drawable-mdpi/spinner_select.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_white_16.png b/core/res/res/drawable-mdpi/spinner_white_16.png
similarity index 100%
rename from core/res/res/drawable/spinner_white_16.png
rename to core/res/res/drawable-mdpi/spinner_white_16.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_white_48.png b/core/res/res/drawable-mdpi/spinner_white_48.png
similarity index 100%
rename from core/res/res/drawable/spinner_white_48.png
rename to core/res/res/drawable-mdpi/spinner_white_48.png
Binary files differ
diff --git a/core/res/res/drawable/spinner_white_76.png b/core/res/res/drawable-mdpi/spinner_white_76.png
similarity index 100%
rename from core/res/res/drawable/spinner_white_76.png
rename to core/res/res/drawable-mdpi/spinner_white_76.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_first.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_first.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_first.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_first.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_last.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_last.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_last.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_last.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_middle.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_middle.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_middle.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_middle.9.png
Binary files differ
diff --git a/core/res/res/drawable/spinnerbox_arrow_single.9.png b/core/res/res/drawable-mdpi/spinnerbox_arrow_single.9.png
similarity index 100%
rename from core/res/res/drawable/spinnerbox_arrow_single.9.png
rename to core/res/res/drawable-mdpi/spinnerbox_arrow_single.9.png
Binary files differ
diff --git a/core/res/res/drawable/star_big_off.png b/core/res/res/drawable-mdpi/star_big_off.png
similarity index 100%
rename from core/res/res/drawable/star_big_off.png
rename to core/res/res/drawable-mdpi/star_big_off.png
Binary files differ
diff --git a/core/res/res/drawable/star_big_on.png b/core/res/res/drawable-mdpi/star_big_on.png
similarity index 100%
rename from core/res/res/drawable/star_big_on.png
rename to core/res/res/drawable-mdpi/star_big_on.png
Binary files differ
diff --git a/core/res/res/drawable/star_off.png b/core/res/res/drawable-mdpi/star_off.png
similarity index 100%
rename from core/res/res/drawable/star_off.png
rename to core/res/res/drawable-mdpi/star_off.png
Binary files differ
diff --git a/core/res/res/drawable/star_on.png b/core/res/res/drawable-mdpi/star_on.png
similarity index 100%
rename from core/res/res/drawable/star_on.png
rename to core/res/res/drawable-mdpi/star_on.png
Binary files differ
diff --git a/core/res/res/drawable/stat_ecb_mode.png b/core/res/res/drawable-mdpi/stat_ecb_mode.png
similarity index 100%
rename from core/res/res/drawable/stat_ecb_mode.png
rename to core/res/res/drawable-mdpi/stat_ecb_mode.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_alarm.png b/core/res/res/drawable-mdpi/stat_notify_alarm.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_alarm.png
rename to core/res/res/drawable-mdpi/stat_notify_alarm.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_call_mute.png b/core/res/res/drawable-mdpi/stat_notify_call_mute.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_call_mute.png
rename to core/res/res/drawable-mdpi/stat_notify_call_mute.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_chat.png b/core/res/res/drawable-mdpi/stat_notify_chat.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_chat.png
rename to core/res/res/drawable-mdpi/stat_notify_chat.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_disk_full.png b/core/res/res/drawable-mdpi/stat_notify_disk_full.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_disk_full.png
rename to core/res/res/drawable-mdpi/stat_notify_disk_full.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_error.png b/core/res/res/drawable-mdpi/stat_notify_error.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_error.png
rename to core/res/res/drawable-mdpi/stat_notify_error.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_missed_call.png b/core/res/res/drawable-mdpi/stat_notify_missed_call.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_missed_call.png
rename to core/res/res/drawable-mdpi/stat_notify_missed_call.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_more.png b/core/res/res/drawable-mdpi/stat_notify_more.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_more.png
rename to core/res/res/drawable-mdpi/stat_notify_more.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sdcard.png b/core/res/res/drawable-mdpi/stat_notify_sdcard.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sdcard.png
rename to core/res/res/drawable-mdpi/stat_notify_sdcard.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sdcard_usb.png b/core/res/res/drawable-mdpi/stat_notify_sdcard_usb.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sdcard_usb.png
rename to core/res/res/drawable-mdpi/stat_notify_sdcard_usb.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sim_toolkit.png b/core/res/res/drawable-mdpi/stat_notify_sim_toolkit.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sim_toolkit.png
rename to core/res/res/drawable-mdpi/stat_notify_sim_toolkit.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sync.png b/core/res/res/drawable-mdpi/stat_notify_sync.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sync.png
rename to core/res/res/drawable-mdpi/stat_notify_sync.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sync_anim0.png b/core/res/res/drawable-mdpi/stat_notify_sync_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sync_anim0.png
rename to core/res/res/drawable-mdpi/stat_notify_sync_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_sync_error.png b/core/res/res/drawable-mdpi/stat_notify_sync_error.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_sync_error.png
rename to core/res/res/drawable-mdpi/stat_notify_sync_error.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_voicemail.png b/core/res/res/drawable-mdpi/stat_notify_voicemail.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_voicemail.png
rename to core/res/res/drawable-mdpi/stat_notify_voicemail.png
Binary files differ
diff --git a/core/res/res/drawable/stat_notify_wifi_in_range.png b/core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
similarity index 100%
rename from core/res/res/drawable/stat_notify_wifi_in_range.png
rename to core/res/res/drawable-mdpi/stat_notify_wifi_in_range.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_0.png b/core/res/res/drawable-mdpi/stat_sys_battery_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_0.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_10.png b/core/res/res/drawable-mdpi/stat_sys_battery_10.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_10.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_10.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_100.png b/core/res/res/drawable-mdpi/stat_sys_battery_100.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_100.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_100.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_20.png b/core/res/res/drawable-mdpi/stat_sys_battery_20.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_20.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_20.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_40.png b/core/res/res/drawable-mdpi/stat_sys_battery_40.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_40.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_40.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_60.png b/core/res/res/drawable-mdpi/stat_sys_battery_60.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_60.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_60.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_80.png b/core/res/res/drawable-mdpi/stat_sys_battery_80.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_80.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_80.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim0.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim1.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim2.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim2.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim3.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim3.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim4.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim4.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_charge_anim5.png b/core/res/res/drawable-mdpi/stat_sys_battery_charge_anim5.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_charge_anim5.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_charge_anim5.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_battery_unknown.png b/core/res/res/drawable-mdpi/stat_sys_battery_unknown.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_battery_unknown.png
rename to core/res/res/drawable-mdpi/stat_sys_battery_unknown.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_data_bluetooth.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_bluetooth.png
rename to core/res/res/drawable-mdpi/stat_sys_data_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_bluetooth_connected.png b/core/res/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_bluetooth_connected.png
rename to core/res/res/drawable-mdpi/stat_sys_data_bluetooth_connected.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_connected_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_connected_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_connected_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_connected_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_connected_e.png b/core/res/res/drawable-mdpi/stat_sys_data_connected_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_connected_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_connected_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_connected_g.png b/core/res/res/drawable-mdpi/stat_sys_data_connected_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_connected_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_connected_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_in_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_in_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_in_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_in_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_in_e.png b/core/res/res/drawable-mdpi/stat_sys_data_in_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_in_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_in_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_in_g.png b/core/res/res/drawable-mdpi/stat_sys_data_in_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_in_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_in_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_inandout_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_inandout_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_inandout_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_inandout_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_inandout_e.png b/core/res/res/drawable-mdpi/stat_sys_data_inandout_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_inandout_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_inandout_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_inandout_g.png b/core/res/res/drawable-mdpi/stat_sys_data_inandout_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_inandout_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_inandout_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_out_3g.png b/core/res/res/drawable-mdpi/stat_sys_data_out_3g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_out_3g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_out_3g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_out_e.png b/core/res/res/drawable-mdpi/stat_sys_data_out_e.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_out_e.png
rename to core/res/res/drawable-mdpi/stat_sys_data_out_e.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_out_g.png b/core/res/res/drawable-mdpi/stat_sys_data_out_g.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_out_g.png
rename to core/res/res/drawable-mdpi/stat_sys_data_out_g.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_data_usb.png b/core/res/res/drawable-mdpi/stat_sys_data_usb.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_data_usb.png
rename to core/res/res/drawable-mdpi/stat_sys_data_usb.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim0.png b/core/res/res/drawable-mdpi/stat_sys_download_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim1.png b/core/res/res/drawable-mdpi/stat_sys_download_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim2.png b/core/res/res/drawable-mdpi/stat_sys_download_anim2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim2.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim3.png b/core/res/res/drawable-mdpi/stat_sys_download_anim3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim3.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim4.png b/core/res/res/drawable-mdpi/stat_sys_download_anim4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim4.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_download_anim5.png b/core/res/res/drawable-mdpi/stat_sys_download_anim5.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_download_anim5.png
rename to core/res/res/drawable-mdpi/stat_sys_download_anim5.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_gps_acquiring.png b/core/res/res/drawable-mdpi/stat_sys_gps_acquiring.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_gps_acquiring.png
rename to core/res/res/drawable-mdpi/stat_sys_gps_acquiring.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_gps_on.png b/core/res/res/drawable-mdpi/stat_sys_gps_on.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_gps_on.png
rename to core/res/res/drawable-mdpi/stat_sys_gps_on.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_headset.png b/core/res/res/drawable-mdpi/stat_sys_headset.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_headset.png
rename to core/res/res/drawable-mdpi/stat_sys_headset.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_no_sim.png b/core/res/res/drawable-mdpi/stat_sys_no_sim.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_no_sim.png
rename to core/res/res/drawable-mdpi/stat_sys_no_sim.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call.png b/core/res/res/drawable-mdpi/stat_sys_phone_call.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_phone_call_bluetooth.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call_bluetooth.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call_forward.png b/core/res/res/drawable-mdpi/stat_sys_phone_call_forward.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call_forward.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call_forward.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_phone_call_on_hold.png b/core/res/res/drawable-mdpi/stat_sys_phone_call_on_hold.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_phone_call_on_hold.png
rename to core/res/res/drawable-mdpi/stat_sys_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_0.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_0.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_0_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_0_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_0_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_1.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_1.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_1_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_1_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_1_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_2.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_2.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_2_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_2_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_2_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_3.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_3.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_3_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_3_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_3_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_4.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_4.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_r_signal_4_cdma.png b/core/res/res/drawable-mdpi/stat_sys_r_signal_4_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_r_signal_4_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_r_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_0_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_0_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_0_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_0_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_1_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_1_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_1_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_1_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_2_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_2_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_2_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_2_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_3_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_3_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_3_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_3_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ra_signal_4_cdma.png b/core/res/res/drawable-mdpi/stat_sys_ra_signal_4_cdma.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ra_signal_4_cdma.png
rename to core/res/res/drawable-mdpi/stat_sys_ra_signal_4_cdma.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ringer_silent.png b/core/res/res/drawable-mdpi/stat_sys_ringer_silent.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ringer_silent.png
rename to core/res/res/drawable-mdpi/stat_sys_ringer_silent.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_ringer_vibrate.png b/core/res/res/drawable-mdpi/stat_sys_ringer_vibrate.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_ringer_vibrate.png
rename to core/res/res/drawable-mdpi/stat_sys_ringer_vibrate.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_0.png b/core/res/res/drawable-mdpi/stat_sys_roaming_cdma_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_roaming_cdma_0.png
rename to core/res/res/drawable-mdpi/stat_sys_roaming_cdma_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_flash_anim0.png b/core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_roaming_cdma_flash_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_roaming_cdma_flash_anim1.png b/core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_roaming_cdma_flash_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_roaming_cdma_flash_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_0.png b/core/res/res/drawable-mdpi/stat_sys_signal_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_0.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_1.png b/core/res/res/drawable-mdpi/stat_sys_signal_1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_1.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_2.png b/core/res/res/drawable-mdpi/stat_sys_signal_2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_2.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_3.png b/core/res/res/drawable-mdpi/stat_sys_signal_3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_3.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_4.png b/core/res/res/drawable-mdpi/stat_sys_signal_4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_4.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_flightmode.png b/core/res/res/drawable-mdpi/stat_sys_signal_flightmode.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_flightmode.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_flightmode.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_signal_null.png b/core/res/res/drawable-mdpi/stat_sys_signal_null.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_signal_null.png
rename to core/res/res/drawable-mdpi/stat_sys_signal_null.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_speakerphone.png b/core/res/res/drawable-mdpi/stat_sys_speakerphone.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_speakerphone.png
rename to core/res/res/drawable-mdpi/stat_sys_speakerphone.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_tty_mode.png b/core/res/res/drawable-mdpi/stat_sys_tty_mode.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_tty_mode.png
rename to core/res/res/drawable-mdpi/stat_sys_tty_mode.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim0.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim0.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim1.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim1.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim2.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim2.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim3.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim3.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim4.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim4.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim4.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_upload_anim5.png b/core/res/res/drawable-mdpi/stat_sys_upload_anim5.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_upload_anim5.png
rename to core/res/res/drawable-mdpi/stat_sys_upload_anim5.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_vp_phone_call.png b/core/res/res/drawable-mdpi/stat_sys_vp_phone_call.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_vp_phone_call.png
rename to core/res/res/drawable-mdpi/stat_sys_vp_phone_call.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_vp_phone_call_bluetooth.png b/core/res/res/drawable-mdpi/stat_sys_vp_phone_call_bluetooth.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_vp_phone_call_bluetooth.png
rename to core/res/res/drawable-mdpi/stat_sys_vp_phone_call_bluetooth.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_vp_phone_call_on_hold.png b/core/res/res/drawable-mdpi/stat_sys_vp_phone_call_on_hold.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_vp_phone_call_on_hold.png
rename to core/res/res/drawable-mdpi/stat_sys_vp_phone_call_on_hold.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_warning.png b/core/res/res/drawable-mdpi/stat_sys_warning.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_warning.png
rename to core/res/res/drawable-mdpi/stat_sys_warning.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_0.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_0.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_0.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_0.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_1.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_1.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_1.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_1.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_2.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_2.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_2.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_2.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_3.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_3.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_3.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_3.png
Binary files differ
diff --git a/core/res/res/drawable/stat_sys_wifi_signal_4.png b/core/res/res/drawable-mdpi/stat_sys_wifi_signal_4.png
similarity index 100%
rename from core/res/res/drawable/stat_sys_wifi_signal_4.png
rename to core/res/res/drawable-mdpi/stat_sys_wifi_signal_4.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_background.png b/core/res/res/drawable-mdpi/status_bar_background.png
similarity index 100%
rename from core/res/res/drawable/status_bar_background.png
rename to core/res/res/drawable-mdpi/status_bar_background.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_close_on.9.png b/core/res/res/drawable-mdpi/status_bar_close_on.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_close_on.9.png
rename to core/res/res/drawable-mdpi/status_bar_close_on.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_header_background.9.png b/core/res/res/drawable-mdpi/status_bar_header_background.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_header_background.9.png
rename to core/res/res/drawable-mdpi/status_bar_header_background.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_app_background_normal.9.png b/core/res/res/drawable-mdpi/status_bar_item_app_background_normal.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_app_background_normal.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_app_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_background_focus.9.png b/core/res/res/drawable-mdpi/status_bar_item_background_focus.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_background_focus.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_background_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_background_normal.9.png b/core/res/res/drawable-mdpi/status_bar_item_background_normal.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_background_normal.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_background_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/status_bar_item_background_pressed.9.png b/core/res/res/drawable-mdpi/status_bar_item_background_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/status_bar_item_background_pressed.9.png
rename to core/res/res/drawable-mdpi/status_bar_item_background_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/statusbar_background.png b/core/res/res/drawable-mdpi/statusbar_background.png
similarity index 100%
rename from core/res/res/drawable/statusbar_background.png
rename to core/res/res/drawable-mdpi/statusbar_background.png
Binary files differ
diff --git a/core/res/res/drawable/submenu_arrow_nofocus.png b/core/res/res/drawable-mdpi/submenu_arrow_nofocus.png
similarity index 100%
rename from core/res/res/drawable/submenu_arrow_nofocus.png
rename to core/res/res/drawable-mdpi/submenu_arrow_nofocus.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_add.png b/core/res/res/drawable-mdpi/sym_action_add.png
similarity index 100%
rename from core/res/res/drawable/sym_action_add.png
rename to core/res/res/drawable-mdpi/sym_action_add.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_call.png b/core/res/res/drawable-mdpi/sym_action_call.png
similarity index 100%
rename from core/res/res/drawable/sym_action_call.png
rename to core/res/res/drawable-mdpi/sym_action_call.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_chat.png b/core/res/res/drawable-mdpi/sym_action_chat.png
similarity index 100%
rename from core/res/res/drawable/sym_action_chat.png
rename to core/res/res/drawable-mdpi/sym_action_chat.png
Binary files differ
diff --git a/core/res/res/drawable/sym_action_email.png b/core/res/res/drawable-mdpi/sym_action_email.png
similarity index 100%
rename from core/res/res/drawable/sym_action_email.png
rename to core/res/res/drawable-mdpi/sym_action_email.png
Binary files differ
diff --git a/core/res/res/drawable/sym_call_incoming.png b/core/res/res/drawable-mdpi/sym_call_incoming.png
similarity index 100%
rename from core/res/res/drawable/sym_call_incoming.png
rename to core/res/res/drawable-mdpi/sym_call_incoming.png
Binary files differ
diff --git a/core/res/res/drawable/sym_call_missed.png b/core/res/res/drawable-mdpi/sym_call_missed.png
similarity index 100%
rename from core/res/res/drawable/sym_call_missed.png
rename to core/res/res/drawable-mdpi/sym_call_missed.png
Binary files differ
diff --git a/core/res/res/drawable/sym_call_outgoing.png b/core/res/res/drawable-mdpi/sym_call_outgoing.png
similarity index 100%
rename from core/res/res/drawable/sym_call_outgoing.png
rename to core/res/res/drawable-mdpi/sym_call_outgoing.png
Binary files differ
diff --git a/core/res/res/drawable/sym_contact_card.png b/core/res/res/drawable-mdpi/sym_contact_card.png
similarity index 100%
rename from core/res/res/drawable/sym_contact_card.png
rename to core/res/res/drawable-mdpi/sym_contact_card.png
Binary files differ
diff --git a/core/res/res/drawable/sym_def_app_icon.png b/core/res/res/drawable-mdpi/sym_def_app_icon.png
similarity index 100%
rename from core/res/res/drawable/sym_def_app_icon.png
rename to core/res/res/drawable-mdpi/sym_def_app_icon.png
Binary files differ
diff --git a/core/res/res/drawable/tab_focus.9.png b/core/res/res/drawable-mdpi/tab_focus.9.png
similarity index 100%
rename from core/res/res/drawable/tab_focus.9.png
rename to core/res/res/drawable-mdpi/tab_focus.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_focus_bar_left.9.png b/core/res/res/drawable-mdpi/tab_focus_bar_left.9.png
similarity index 100%
rename from core/res/res/drawable/tab_focus_bar_left.9.png
rename to core/res/res/drawable-mdpi/tab_focus_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_focus_bar_right.9.png b/core/res/res/drawable-mdpi/tab_focus_bar_right.9.png
similarity index 100%
rename from core/res/res/drawable/tab_focus_bar_right.9.png
rename to core/res/res/drawable-mdpi/tab_focus_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_press.9.png b/core/res/res/drawable-mdpi/tab_press.9.png
similarity index 100%
rename from core/res/res/drawable/tab_press.9.png
rename to core/res/res/drawable-mdpi/tab_press.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_press_bar_left.9.png b/core/res/res/drawable-mdpi/tab_press_bar_left.9.png
similarity index 100%
rename from core/res/res/drawable/tab_press_bar_left.9.png
rename to core/res/res/drawable-mdpi/tab_press_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_press_bar_right.9.png b/core/res/res/drawable-mdpi/tab_press_bar_right.9.png
similarity index 100%
rename from core/res/res/drawable/tab_press_bar_right.9.png
rename to core/res/res/drawable-mdpi/tab_press_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_selected.9.png b/core/res/res/drawable-mdpi/tab_selected.9.png
similarity index 100%
rename from core/res/res/drawable/tab_selected.9.png
rename to core/res/res/drawable-mdpi/tab_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_selected_bar_left.9.png b/core/res/res/drawable-mdpi/tab_selected_bar_left.9.png
similarity index 100%
rename from core/res/res/drawable/tab_selected_bar_left.9.png
rename to core/res/res/drawable-mdpi/tab_selected_bar_left.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_selected_bar_right.9.png b/core/res/res/drawable-mdpi/tab_selected_bar_right.9.png
similarity index 100%
rename from core/res/res/drawable/tab_selected_bar_right.9.png
rename to core/res/res/drawable-mdpi/tab_selected_bar_right.9.png
Binary files differ
diff --git a/core/res/res/drawable/tab_unselected.9.png b/core/res/res/drawable-mdpi/tab_unselected.9.png
similarity index 100%
rename from core/res/res/drawable/tab_unselected.9.png
rename to core/res/res/drawable-mdpi/tab_unselected.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_default.9.png b/core/res/res/drawable-mdpi/textfield_default.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_default.9.png
rename to core/res/res/drawable-mdpi/textfield_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_disabled.9.png b/core/res/res/drawable-mdpi/textfield_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_disabled.9.png
rename to core/res/res/drawable-mdpi/textfield_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_disabled_selected.9.png b/core/res/res/drawable-mdpi/textfield_disabled_selected.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_disabled_selected.9.png
rename to core/res/res/drawable-mdpi/textfield_disabled_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_pressed.9.png b/core/res/res/drawable-mdpi/textfield_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_pressed.9.png
rename to core/res/res/drawable-mdpi/textfield_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_search_default.9.png b/core/res/res/drawable-mdpi/textfield_search_default.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_search_default.9.png
rename to core/res/res/drawable-mdpi/textfield_search_default.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_search_pressed.9.png b/core/res/res/drawable-mdpi/textfield_search_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_search_pressed.9.png
rename to core/res/res/drawable-mdpi/textfield_search_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_search_selected.9.png b/core/res/res/drawable-mdpi/textfield_search_selected.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_search_selected.9.png
rename to core/res/res/drawable-mdpi/textfield_search_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/textfield_selected.9.png b/core/res/res/drawable-mdpi/textfield_selected.9.png
similarity index 100%
rename from core/res/res/drawable/textfield_selected.9.png
rename to core/res/res/drawable-mdpi/textfield_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_disabled.9.png b/core/res/res/drawable-mdpi/timepicker_down_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_disabled.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_disabled_focused.9.png b/core/res/res/drawable-mdpi/timepicker_down_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_normal.9.png b/core/res/res/drawable-mdpi/timepicker_down_normal.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_normal.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_pressed.9.png b/core/res/res/drawable-mdpi/timepicker_down_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_pressed.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_down_selected.9.png b/core/res/res/drawable-mdpi/timepicker_down_selected.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_down_selected.9.png
rename to core/res/res/drawable-mdpi/timepicker_down_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_disabled.9.png b/core/res/res/drawable-mdpi/timepicker_input_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_disabled.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_normal.9.png b/core/res/res/drawable-mdpi/timepicker_input_normal.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_normal.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_pressed.9.png b/core/res/res/drawable-mdpi/timepicker_input_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_pressed.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_input_selected.9.png b/core/res/res/drawable-mdpi/timepicker_input_selected.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_input_selected.9.png
rename to core/res/res/drawable-mdpi/timepicker_input_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_disabled.9.png b/core/res/res/drawable-mdpi/timepicker_up_disabled.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_disabled.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_disabled.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_disabled_focused.9.png b/core/res/res/drawable-mdpi/timepicker_up_disabled_focused.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_disabled_focused.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_disabled_focused.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_normal.9.png b/core/res/res/drawable-mdpi/timepicker_up_normal.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_normal.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_normal.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_pressed.9.png b/core/res/res/drawable-mdpi/timepicker_up_pressed.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_pressed.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_pressed.9.png
Binary files differ
diff --git a/core/res/res/drawable/timepicker_up_selected.9.png b/core/res/res/drawable-mdpi/timepicker_up_selected.9.png
similarity index 100%
rename from core/res/res/drawable/timepicker_up_selected.9.png
rename to core/res/res/drawable-mdpi/timepicker_up_selected.9.png
Binary files differ
diff --git a/core/res/res/drawable/title_bar_portrait.9.png b/core/res/res/drawable-mdpi/title_bar_portrait.9.png
similarity index 100%
rename from core/res/res/drawable/title_bar_portrait.9.png
rename to core/res/res/drawable-mdpi/title_bar_portrait.9.png
Binary files differ
diff --git a/core/res/res/drawable/title_bar_shadow.9.png b/core/res/res/drawable-mdpi/title_bar_shadow.9.png
similarity index 100%
rename from core/res/res/drawable/title_bar_shadow.9.png
rename to core/res/res/drawable-mdpi/title_bar_shadow.9.png
Binary files differ
diff --git a/core/res/res/drawable/title_bar_tall.png b/core/res/res/drawable-mdpi/title_bar_tall.png
similarity index 100%
rename from core/res/res/drawable/title_bar_tall.png
rename to core/res/res/drawable-mdpi/title_bar_tall.png
Binary files differ
diff --git a/core/res/res/drawable/toast_frame.9.png b/core/res/res/drawable-mdpi/toast_frame.9.png
similarity index 100%
rename from core/res/res/drawable/toast_frame.9.png
rename to core/res/res/drawable-mdpi/toast_frame.9.png
Binary files differ
diff --git a/core/res/res/drawable/unknown_image.png b/core/res/res/drawable-mdpi/unknown_image.png
similarity index 100%
rename from core/res/res/drawable/unknown_image.png
rename to core/res/res/drawable-mdpi/unknown_image.png
Binary files differ
diff --git a/core/res/res/drawable/zoom_plate.9.png b/core/res/res/drawable-mdpi/zoom_plate.9.png
similarity index 100%
rename from core/res/res/drawable/zoom_plate.9.png
rename to core/res/res/drawable-mdpi/zoom_plate.9.png
Binary files differ
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index cd3f065..7e7bfca 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2924,24 +2924,23 @@
             when the user clicks a suggestion.  <i>Optional attribute.</i> -->
         <attr name="searchSuggestIntentData" format="string" />
 
-        <!-- @hide If provided, this is the minimum number of characters needed to trigger
+        <!-- If provided, this is the minimum number of characters needed to trigger
              search suggestions. The default value is 0. <i>Optional attribute.</i> -->
         <attr name="searchSuggestThreshold" format="integer" />
 
-        <!-- @hide If provided and <code>true</code>, this searchable activity will be
+        <!-- If provided and <code>true</code>, this searchable activity will be
              included in any global lists of search targets.
-             The default value is <code>false</code>. <i>Optional attribute.</i>.-->
+             The default value is <code>false</code>. <i>Optional attribute.</i>. -->
         <attr name="includeInGlobalSearch" format="boolean" />
 
-        <!-- @hide If provided and <code>true</code>, this searchable activity will be invoked for all
+        <!-- If provided and <code>true</code>, this searchable activity will be invoked for all
              queries in a particular session. If set to <code>false</code> and the activity
              returned zero results for a query, it will not be invoked again in that session for
              supersets of that zero-results query. For example, if the activity returned zero
              results for "bo", it would not be queried again for "bob".
              The default value is <code>false</code>. <i>Optional attribute.</i>. -->
         <attr name="queryAfterZeroResults" format="boolean" />
-
-        <!-- @hide If provided, this string will be used to describe the searchable item in the
+        <!-- If provided, this string will be used to describe the searchable item in the
              searchable items settings within system search settings. <i>Optional
              attribute.</i> -->
         <attr name="searchSettingsDescription" format="string" />
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 442357e..ce421db 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -781,6 +781,15 @@
              represent the minor number. For example for GL 1.2 referring to
              0x00000102, the actual value should be set as 0x00010002. -->
         <attr name="glEsVersion" format="integer"/>
+        <!--  The name of the feature that is being used. -->
+        <attr name="name" />
+        <!--  Specify whether this feature is required for the application.
+              The default is true, meaning the application requires the
+              feature, and does not want to be installed on devices that
+              don't support it.  If you set this to false, then this will
+              not impose a restriction on where the application can be
+              installed. -->
+        <attr name="required" format="boolean" />
     </declare-styleable>
 
     <!-- The <code>uses-sdk</code> tag describes the SDK features that the
@@ -823,6 +832,14 @@
     <declare-styleable name="AndroidManifestUsesLibrary" parent="AndroidManifestApplication">
         <!-- Required name of the library you use. -->
         <attr name="name" />
+        <!--  Specify whether this library is required for the application.
+              The default is true, meaning the application requires the
+              library, and does not want to be installed on devices that
+              don't support it.  If you set this to false, then this will
+              allow the application to be installed even if the library
+              doesn't exist, and you will need to check for its presence
+              dynamically at runtime. -->
+        <attr name="required" />
     </declare-styleable>
     
     <!-- The <code>supports-screens</code> specifies the screen dimensions an
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 86e6139..abb575c 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -64,4 +64,21 @@
          the slider is open.  This can be set or unset depending how easily
          the slider can be opened (for example, in a pocket or purse). -->
     <bool name="config_bypass_keyguard_if_slider_open">true</bool>
+    
+    <!-- Vibrator pattern for feedback about a long screen/key press -->
+    <integer-array name="config_longPressVibePattern">
+        <item>0</item>
+        <item>1</item>
+        <item>20</item>
+        <item>21</item>
+    </integer-array>
+    
+    <!-- Vibrator pattern for feedback about touching a virtual key -->
+    <integer-array name="config_virtualKeyVibePattern">
+        <item>0</item>
+        <item>10</item>
+        <item>20</item>
+        <item>30</item>
+    </integer-array>
+    
 </resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 5f1c3c3..0fba0f6 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1094,9 +1094,7 @@
   <public type="attr" name="tension" id="0x0101026a" />
   <public type="attr" name="extraTension" id="0x0101026b" />
   <public type="attr" name="anyDensity" id="0x0101026c" />
-  <!-- {@hide} -->
   <public type="attr" name="searchSuggestThreshold" id="0x0101026d" />
-  <!-- {@hide} -->
   <public type="attr" name="includeInGlobalSearch" id="0x0101026e" />
   <public type="attr" name="onClick" id="0x0101026f" />
   <public type="attr" name="targetSdkVersion" id="0x01010270" />
@@ -1117,7 +1115,6 @@
   <public type="attr" name="backupAgent" id="0x0101027f" />
   <public type="attr" name="allowBackup" id="0x01010280" />
   <public type="attr" name="glEsVersion" id="0x01010281" />
-  <!-- {@hide} -->
   <public type="attr" name="queryAfterZeroResults" id="0x01010282" />
   <public type="attr" name="dropDownHeight" id="0x01010283" />
   <public type="attr" name="smallScreens" id="0x01010284" />
@@ -1126,7 +1123,6 @@
   <public type="attr" name="progressBarStyleInverse" id="0x01010287" />
   <public type="attr" name="progressBarStyleSmallInverse" id="0x01010288" />
   <public type="attr" name="progressBarStyleLargeInverse" id="0x01010289" />
-  <!-- {@hide} -->
   <public type="attr" name="searchSettingsDescription" id="0x0101028a" />
   <public type="attr" name="textColorPrimaryInverseDisableOnly" id="0x0101028b" />
   <public type="attr" name="autoUrlDetect" id="0x0101028c" />
@@ -1150,6 +1146,7 @@
      =============================================================== -->
   <eat-comment />
 
+  <public type="attr" name="required" id="0x0101028e" />
   <public type="attr" name="accountType" />
   <public type="attr" name="contentAuthority" />
   <public type="attr" name="userVisible" />
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 7dc4ff9..70c9385 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -549,12 +549,12 @@
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_backup">control system backup and restore</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permdesc_backup">Allows the application to control the system's backup and restore mechanism.  Not for use by normal applications.</string>
+    <string name="permdesc_backup">Allows the application to control the system\'s backup and restore mechanism.  Not for use by normal applications.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permlab_backup_data">back up and restore the application's data</string>
+    <string name="permlab_backup_data">back up and restore the application\'s data</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
-    <string name="permdesc_backup_data">Allows the application to participate in the system's backup and restore mechanism.</string>
+    <string name="permdesc_backup_data">Allows the application to participate in the system\'s backup and restore mechanism.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_internalSystemWindow">display unauthorized windows</string>
@@ -707,7 +707,7 @@
 
     <string name="permlab_writeSecureSettings">modify secure system settings</string>
     <string name="permdesc_writeSecureSettings">Allows an application to modify the
-        system's secure settings data. Not for use by normal applications.</string>
+        system\'s secure settings data. Not for use by normal applications.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_writeGservices">modify the Google services map</string>
@@ -898,6 +898,12 @@
         services.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permlab_performCdmaProvisioning">directly start CDMA phone setup</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permdesc_performCdmaProvisioning">Allows the application to start CDMA provisioning.
+        Malicious applications may unnecessarily start CDMA provisioning</string>
+
+    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_locationUpdates">control location update notifications</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permdesc_locationUpdates">Allows enabling/disabling location
@@ -1535,11 +1541,11 @@
     </plurals>
 
     <!-- String used to display the date. Preposition for date display ("on May 29") -->
-    <string name="preposition_for_date">on %s</string>
+    <string name="preposition_for_date">on <xliff:g id="date" example="May 29">%s</xliff:g></string>
     <!-- String used to display the date. Preposition for time display ("at 2:33am") -->
-    <string name="preposition_for_time">at %s</string>
+    <string name="preposition_for_time">at <xliff:g id="time" example="2:33 am">%s</xliff:g></string>
     <!-- String used to display the date. Preposition for year display ("in 2008") -->
-    <string name="preposition_for_year">in %s</string>
+    <string name="preposition_for_year">in <xliff:g id="year" example="2003">%s</xliff:g></string>
 
     <!-- Appened to express the value is this unit of time: singular day -->
     <string name="day">day</string>
@@ -1652,7 +1658,7 @@
 
     <!-- Item on EditText context menu, used to add a word to the
          input method dictionary. -->
-    <string name="addToDictionary">"Add \"%s\" to dictionary</string>
+    <string name="addToDictionary">"Add \"<xliff:g id="word" example="rickroll">%s</xliff:g>\" to dictionary</string>
 
     <!-- Title for EditText context menu -->
     <string name="editTextMenuTitle">Edit text</string>
@@ -1828,7 +1834,7 @@
     <!-- See USB_STORAGE_STOP.   This is the button text to cancel stoping usb storage. -->
     <string name="usb_storage_stop_button_unmount">Cancel</string>
     <!-- See USB_STORAGE_STOP_DIALOG.  If there was an error stopping, this is the text. -->
-    <string name="usb_storage_stop_error_message">We've encountered a problem turning off USB storage. Check to make sure you have unmounted the USB host, then try again.</string>
+    <string name="usb_storage_stop_error_message">We\'ve encountered a problem turning off USB storage. Check to make sure you have unmounted the USB host, then try again.</string>
 
     <!-- External media format dialog strings -->
     <!-- This is the label for the activity, and should never be visible to the user. -->
@@ -1944,18 +1950,18 @@
      <string name="accessibility_compound_button_unselected">not checked</string>
 
      <string name="grant_credentials_permission_message_desc">The
-     listed applications are requesting permission to access the login credentials for account %s from
-     %s. Do you wish to grant this permission? If so then your answer will be remembered and you will not be prompted
+     listed applications are requesting permission to access the login credentials for account <xliff:g id="account" example="foo@gmail.com">%1$s</xliff:g> from
+     <xliff:g id="application" example="Google Apps">%2$s</xliff:g>. Do you wish to grant this permission? If so, your answer will be remembered and you will not be prompted
      again.</string>
 
      <string name="grant_credentials_permission_message_with_authtokenlabel_desc">The
-     listed applications are requesting permission to access the %s login credentials for account %s from
-     %s. Do you wish to grant this permission? If so then your answer will be remembered and you will not be prompted
+     listed applications are requesting permission to access the <xliff:g id="type" example="Contacts">%1$s</xliff:g> login credentials for account <xliff:g id="account" example="foo@gmail.com">%2$s</xliff:g> from
+     <xliff:g id="application" example="Google Apps">%3$s</xliff:g>. Do you wish to grant this permission? If so, your answer will be remembered and you will not be prompted
      again.</string>
 
      <string name="allow">Allow</string>
      <string name="deny">Deny</string>
      <string name="permission_request_notification_title">Permission Requested</string>
-     <string name="permission_request_notification_subtitle">for account %s</string>
+     <string name="permission_request_notification_subtitle">for account <xliff:g id="account" example="foo@gmail.com">%s</xliff:g></string>
 
 </resources>
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index 3950cb1..55f8167 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -160,6 +160,12 @@
         <item name="windowExitAnimation">@anim/fade_out</item>
     </style>
 
+    <!-- Standard animations for wallpapers. -->
+    <style name="Animation.Wallpaper">
+        <item name="windowEnterAnimation">@anim/wallpaper_enter</item>
+        <item name="windowExitAnimation">@anim/wallpaper_exit</item>
+    </style>
+
     <!-- Status Bar Styles -->
 
     <style name="TextAppearance.StatusBarTitle">
diff --git a/data/etc/android.hardware.camera.autofocus.xml b/data/etc/android.hardware.camera.autofocus.xml
new file mode 100644
index 0000000..d6e2b90
--- /dev/null
+++ b/data/etc/android.hardware.camera.autofocus.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<!-- This is the standard set of features for an auto-focus camera. -->
+<permissions>
+    <feature name="android.hardware.camera" />
+    <feature name="android.hardware.camera.autofocus" />
+</permissions>
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 459ad37..ef1a1ea 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -399,6 +399,9 @@
           <li><a href="<?cs var:toroot ?>guide/samples/NotePad/index.html">
                 <span class="en">Note Pad</span>
               </a></li>
+          <li><a href="<?cs var:toroot ?>guide/samples/SearchableDictionary/index.html">
+                <span class="en">Searchable Dictionary</span>
+              </a></li>
           <li><a href="<?cs var:toroot ?>guide/samples/Snake/index.html">
                 <span class="en">Snake</span>
               </a></li>
diff --git a/docs/html/guide/samples/images/SearchableDictionary1.png b/docs/html/guide/samples/images/SearchableDictionary1.png
new file mode 100644
index 0000000..ebb4604
--- /dev/null
+++ b/docs/html/guide/samples/images/SearchableDictionary1.png
Binary files differ
diff --git a/docs/html/guide/samples/images/SearchableDictionary2.png b/docs/html/guide/samples/images/SearchableDictionary2.png
new file mode 100644
index 0000000..34746cd
--- /dev/null
+++ b/docs/html/guide/samples/images/SearchableDictionary2.png
Binary files differ
diff --git a/docs/html/guide/samples/index.jd b/docs/html/guide/samples/index.jd
index d8bbc41..6e79d50 100644
--- a/docs/html/guide/samples/index.jd
+++ b/docs/html/guide/samples/index.jd
@@ -33,6 +33,10 @@
   <dd>An application for saving notes. Similar (but not identical) to the 
     <a href="{@docRoot}guide/tutorials/notepad/index.html">Notepad tutorial</a>.</dd>
   
+ <dt><a href="SearchableDictionary/index.html">Searchable Dictionary</a></dt>
+  <dd>A sample application that demonstrates Android's search framework, 
+  including how to provide search suggestions for Quick Search Box.</dd>
+  
  <dt><a href="Snake/index.html">Snake</a></dt>
   <dd>An implementation of the classic game "Snake."</dd>
   
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 81848b9..3001c743 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -47,28 +47,62 @@
         mRS.nAllocationUploadToTexture(mID, baseMipLevel);
     }
 
+    public void uploadToBufferObject() {
+        mRS.nAllocationUploadToBufferObject(mID);
+    }
+
     public void data(int[] d) {
-        mRS.nAllocationData(mID, d);
+        int size = 0;
+        if(mType != null && mType.mElement != null) {
+            size = mType.mElement.mSize;
+            for(int ct=0; ct < mType.mValues.length; ct++) {
+                if(mType.mValues[ct] != 0) {
+                    size *= mType.mValues[ct];
+                }
+            }
+            if((d.length * 4) < size) {
+                throw new IllegalArgumentException("Array too small for allocation type.");
+            }
+            Log.e("rs", "Alloc data size=" + size);
+            mRS.nAllocationData(mID, d, size);
+            return;
+        }
+        mRS.nAllocationData(mID, d, d.length * 4);
     }
 
     public void data(float[] d) {
-        mRS.nAllocationData(mID, d);
+        int size = 0;
+        if(mType != null && mType.mElement != null) {
+            size = mType.mElement.mSize;
+            for(int ct=0; ct < mType.mValues.length; ct++) {
+                if(mType.mValues[ct] != 0) {
+                    size *= mType.mValues[ct];
+                }
+            }
+            if((d.length * 4) < size) {
+                throw new IllegalArgumentException("Array too small for allocation type.");
+            }
+            Log.e("rs", "Alloc data size=" + size);
+            mRS.nAllocationData(mID, d, size);
+            return;
+        }
+        mRS.nAllocationData(mID, d, d.length * 4);
     }
 
     public void subData1D(int off, int count, int[] d) {
-        mRS.nAllocationSubData1D(mID, off, count, d);
+        mRS.nAllocationSubData1D(mID, off, count, d, count * 4);
     }
 
     public void subData1D(int off, int count, float[] d) {
-        mRS.nAllocationSubData1D(mID, off, count, d);
+        mRS.nAllocationSubData1D(mID, off, count, d, d.length * 4);
     }
 
     public void subData2D(int xoff, int yoff, int w, int h, int[] d) {
-        mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d);
+        mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d, d.length * 4);
     }
 
     public void subData2D(int xoff, int yoff, int w, int h, float[] d) {
-        mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d);
+        mRS.nAllocationSubData2D(mID, xoff, yoff, w, h, d, d.length * 4);
     }
 
     public void readData(int[] d) {
@@ -221,20 +255,6 @@
         Bitmap b = BitmapFactory.decodeResource(res, id, mBitmapOptions);
         return createFromBitmapBoxed(rs, b, dstFmt, genMips);
     }
-/*
-    public static Allocation createFromObject(RenderScript rs, Object o) {
-        Class c = o.getClass();
-        Type t;
-        if(c.isArray()) {
-            t = Type.createFromClass(rs, c, Array.getLength(o));
-        } else {
-            t = Type.createFromClass(rs, c, 1);
-        }
-        Allocation alloc = createTyped(rs, t);
-        t.destroy();
-        return alloc;
-    }
-*/
 }
 
 
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java
index aeec739..0ca112c 100644
--- a/graphics/java/android/renderscript/Element.java
+++ b/graphics/java/android/renderscript/Element.java
@@ -25,30 +25,31 @@
 public class Element extends BaseObj {
     final int mPredefinedID;
     final boolean mIsPredefined;
+    final int mSize;
 
-    public static final Element USER_U8 = new Element(0);
-    public static final Element USER_I8 = new Element(1);
-    public static final Element USER_U16 = new Element(2);
-    public static final Element USER_I16 = new Element(3);
-    public static final Element USER_U32 = new Element(4);
-    public static final Element USER_I32 = new Element(5);
-    public static final Element USER_FLOAT = new Element(6);
+    public static final Element USER_U8 = new Element(0, 1);
+    public static final Element USER_I8 = new Element(1, 1);
+    public static final Element USER_U16 = new Element(2, 2);
+    public static final Element USER_I16 = new Element(3, 2);
+    public static final Element USER_U32 = new Element(4, 4);
+    public static final Element USER_I32 = new Element(5, 4);
+    public static final Element USER_FLOAT = new Element(6, 4);
 
-    public static final Element A_8 = new Element(7);
-    public static final Element RGB_565 = new Element(8);
-    public static final Element RGB_888 = new Element(11);
-    public static final Element RGBA_5551 = new Element(9);
-    public static final Element RGBA_4444 = new Element(10);
-    public static final Element RGBA_8888 = new Element(12);
+    public static final Element A_8 = new Element(7, 1);
+    public static final Element RGB_565 = new Element(8, 2);
+    public static final Element RGB_888 = new Element(11, 2);
+    public static final Element RGBA_5551 = new Element(9, 2);
+    public static final Element RGBA_4444 = new Element(10, 2);
+    public static final Element RGBA_8888 = new Element(12, 4);
 
-    public static final Element INDEX_16 = new Element(13);
-    public static final Element INDEX_32 = new Element(14);
-    public static final Element XY_F32 = new Element(15);
-    public static final Element XYZ_F32 = new Element(16);
-    public static final Element ST_XY_F32 = new Element(17);
-    public static final Element ST_XYZ_F32 = new Element(18);
-    public static final Element NORM_XYZ_F32 = new Element(19);
-    public static final Element NORM_ST_XYZ_F32 = new Element(20);
+    public static final Element INDEX_16 = new Element(13, 2);
+    public static final Element INDEX_32 = new Element(14, 2);
+    public static final Element XY_F32 = new Element(15, 8);
+    public static final Element XYZ_F32 = new Element(16, 12);
+    public static final Element ST_XY_F32 = new Element(17, 16);
+    public static final Element ST_XYZ_F32 = new Element(18, 20);
+    public static final Element NORM_XYZ_F32 = new Element(19, 24);
+    public static final Element NORM_ST_XYZ_F32 = new Element(20, 32);
 
     void initPredef(RenderScript rs) {
         mID = rs.nElementGetPredefined(mPredefinedID);
@@ -121,18 +122,20 @@
     }
 
 
-    Element(int predef) {
+    Element(int predef, int size) {
         super(null);
         mID = 0;
         mPredefinedID = predef;
         mIsPredefined = true;
+        mSize = size;
     }
 
-    Element(int id, RenderScript rs) {
+    Element(int id, RenderScript rs, int size) {
         super(rs);
         mID = id;
         mPredefinedID = 0;
         mIsPredefined = false;
+        mSize = size;
     }
 
     public void destroy() throws IllegalStateException {
@@ -168,6 +171,7 @@
         RenderScript mRS;
         Entry[] mEntries;
         int mEntryCount;
+        int mSizeBits;
 
         private class Entry {
             Element mElement;
@@ -182,6 +186,7 @@
             mRS = rs;
             mEntryCount = 0;
             mEntries = new Entry[8];
+            mSizeBits = 0;
         }
 
         void addEntry(Entry e) {
@@ -201,6 +206,7 @@
             Entry en = new Entry();
             en.mElement = e;
             addEntry(en);
+            mSizeBits += e.mSize * 8;
             return this;
         }
 
@@ -211,6 +217,7 @@
             en.mIsNormalized = isNormalized;
             en.mBits = bits;
             en.mName = name;
+            mSizeBits += bits;
             addEntry(en);
             return this;
         }
@@ -236,6 +243,12 @@
             return this;
         }
 
+        public Builder addFloatXY(String prefix) {
+            add(DataType.FLOAT, DataKind.X, false, 32, prefix + "X");
+            add(DataType.FLOAT, DataKind.Y, false, 32, prefix + "Y");
+            return this;
+        }
+
         public Builder addFloatXYZ() {
             add(DataType.FLOAT, DataKind.X, false, 32, null);
             add(DataType.FLOAT, DataKind.Y, false, 32, null);
@@ -243,17 +256,49 @@
             return this;
         }
 
+        public Builder addFloatXYZ(String prefix) {
+            add(DataType.FLOAT, DataKind.X, false, 32, prefix + "X");
+            add(DataType.FLOAT, DataKind.Y, false, 32, prefix + "Y");
+            add(DataType.FLOAT, DataKind.Z, false, 32, prefix + "Z");
+            return this;
+        }
+
         public Builder addFloatST() {
             add(DataType.FLOAT, DataKind.S, false, 32, null);
             add(DataType.FLOAT, DataKind.T, false, 32, null);
             return this;
         }
 
+        public Builder addFloatST(String prefix) {
+            add(DataType.FLOAT, DataKind.S, false, 32, prefix + "S");
+            add(DataType.FLOAT, DataKind.T, false, 32, prefix + "T");
+            return this;
+        }
+
+        public Builder addFloatNorm() {
+            add(DataType.FLOAT, DataKind.NX, false, 32, null);
+            add(DataType.FLOAT, DataKind.NY, false, 32, null);
+            add(DataType.FLOAT, DataKind.NZ, false, 32, null);
+            return this;
+        }
+
+        public Builder addFloatNorm(String prefix) {
+            add(DataType.FLOAT, DataKind.NX, false, 32, prefix + "NX");
+            add(DataType.FLOAT, DataKind.NY, false, 32, prefix + "NY");
+            add(DataType.FLOAT, DataKind.NZ, false, 32, prefix + "NZ");
+            return this;
+        }
+
         public Builder addFloatPointSize() {
             add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, null);
             return this;
         }
 
+        public Builder addFloatPointSize(String name) {
+            add(DataType.FLOAT, DataKind.POINT_SIZE, false, 32, name);
+            return this;
+        }
+
         public Builder addFloatRGB() {
             add(DataType.FLOAT, DataKind.RED, false, 32, null);
             add(DataType.FLOAT, DataKind.GREEN, false, 32, null);
@@ -261,6 +306,13 @@
             return this;
         }
 
+        public Builder addFloatRGB(String prefix) {
+            add(DataType.FLOAT, DataKind.RED, false, 32, prefix + "R");
+            add(DataType.FLOAT, DataKind.GREEN, false, 32, prefix + "G");
+            add(DataType.FLOAT, DataKind.BLUE, false, 32, prefix + "B");
+            return this;
+        }
+
         public Builder addFloatRGBA() {
             add(DataType.FLOAT, DataKind.RED, false, 32, null);
             add(DataType.FLOAT, DataKind.GREEN, false, 32, null);
@@ -269,6 +321,14 @@
             return this;
         }
 
+        public Builder addFloatRGBA(String prefix) {
+            add(DataType.FLOAT, DataKind.RED, false, 32, prefix + "R");
+            add(DataType.FLOAT, DataKind.GREEN, false, 32, prefix + "G");
+            add(DataType.FLOAT, DataKind.BLUE, false, 32, prefix + "B");
+            add(DataType.FLOAT, DataKind.ALPHA, false, 32, prefix + "A");
+            return this;
+        }
+
         public Builder addUNorm8RGBA() {
             add(DataType.UNSIGNED, DataKind.RED, true, 8, null);
             add(DataType.UNSIGNED, DataKind.GREEN, true, 8, null);
@@ -277,6 +337,14 @@
             return this;
         }
 
+        public Builder addUNorm8RGBA(String prefix) {
+            add(DataType.UNSIGNED, DataKind.RED, true, 8, prefix + "R");
+            add(DataType.UNSIGNED, DataKind.GREEN, true, 8, prefix + "G");
+            add(DataType.UNSIGNED, DataKind.BLUE, true, 8, prefix + "B");
+            add(DataType.UNSIGNED, DataKind.ALPHA, true, 8, prefix + "A");
+            return this;
+        }
+
         static synchronized Element internalCreate(RenderScript rs, Builder b) {
             rs.nElementBegin();
             for (int ct=0; ct < b.mEntryCount; ct++) {
@@ -292,7 +360,7 @@
                 }
             }
             int id = rs.nElementCreate();
-            return new Element(id, rs);
+            return new Element(id, rs, (b.mSizeBits + 7) >> 3);
         }
 
         public Element create() {
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 8489003..ee7b702 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -97,12 +97,13 @@
     native int  nAllocationCreateFromBitmapBoxed(int dstFmt, boolean genMips, Bitmap bmp);
 
     native void nAllocationUploadToTexture(int alloc, int baseMioLevel);
-    native void nAllocationData(int id, int[] d);
-    native void nAllocationData(int id, float[] d);
-    native void nAllocationSubData1D(int id, int off, int count, int[] d);
-    native void nAllocationSubData1D(int id, int off, int count, float[] d);
-    native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d);
-    native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d);
+    native void nAllocationUploadToBufferObject(int alloc);
+    native void nAllocationData(int id, int[] d, int sizeBytes);
+    native void nAllocationData(int id, float[] d, int sizeBytes);
+    native void nAllocationSubData1D(int id, int off, int count, int[] d, int sizeBytes);
+    native void nAllocationSubData1D(int id, int off, int count, float[] d, int sizeBytes);
+    native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, int[] d, int sizeBytes);
+    native void nAllocationSubData2D(int id, int xoff, int yoff, int w, int h, float[] d, int sizeBytes);
     native void nAllocationRead(int id, int[] d);
     native void nAllocationRead(int id, float[] d);
     native void nAllocationDataFromObject(int id, Type t, Object o);
diff --git a/graphics/java/android/renderscript/SimpleMesh.java b/graphics/java/android/renderscript/SimpleMesh.java
index d80551e..e66fb8a 100644
--- a/graphics/java/android/renderscript/SimpleMesh.java
+++ b/graphics/java/android/renderscript/SimpleMesh.java
@@ -167,5 +167,150 @@
         }
     }
 
+    public static class TriangleMeshBuilder {
+        float mVtxData[];
+        int mVtxCount;
+        int mIndexData[];
+        int mIndexCount;
+        RenderScript mRS;
+        Element mElement;
+
+        int mVtxSize;
+        boolean mNorm;
+        boolean mTex;
+
+        public TriangleMeshBuilder(RenderScript rs, int vtxSize, boolean norm, boolean tex) {
+            mRS = rs;
+            mVtxCount = 0;
+            mIndexCount = 0;
+            mVtxData = new float[128];
+            mIndexData = new int[128];
+            mVtxSize = vtxSize;
+            mNorm = norm;
+            mTex = tex;
+
+            if(vtxSize < 2 || vtxSize > 3) {
+                throw new IllegalArgumentException("Vertex size out of range.");
+            }
+        }
+
+        private void makeSpace(int count) {
+            if((mVtxCount + count) >= mVtxData.length) {
+                float t[] = new float[mVtxData.length * 2];
+                System.arraycopy(mVtxData, 0, t, 0, mVtxData.length);
+                mVtxData = t;
+            }
+        }
+
+        public void add_XY(float x, float y) {
+            if((mVtxSize != 2) || mNorm || mTex) {
+                throw new IllegalStateException("add mistmatch with declaired components.");
+            }
+            makeSpace(2);
+            mVtxData[mVtxCount++] = x;
+            mVtxData[mVtxCount++] = y;
+        }
+
+        public void add_XYZ(float x, float y, float z) {
+            if((mVtxSize != 3) || mNorm || mTex) {
+                throw new IllegalStateException("add mistmatch with declaired components.");
+            }
+            makeSpace(3);
+            mVtxData[mVtxCount++] = x;
+            mVtxData[mVtxCount++] = y;
+            mVtxData[mVtxCount++] = z;
+        }
+
+        public void add_XY_ST(float x, float y, float s, float t) {
+            if((mVtxSize != 2) || mNorm || !mTex) {
+                throw new IllegalStateException("add mistmatch with declaired components.");
+            }
+            makeSpace(4);
+            mVtxData[mVtxCount++] = x;
+            mVtxData[mVtxCount++] = y;
+            mVtxData[mVtxCount++] = s;
+            mVtxData[mVtxCount++] = t;
+        }
+
+        public void add_XYZ_ST(float x, float y, float z, float s, float t) {
+            if((mVtxSize != 3) || mNorm || !mTex) {
+                throw new IllegalStateException("add mistmatch with declaired components.");
+            }
+            makeSpace(5);
+            mVtxData[mVtxCount++] = x;
+            mVtxData[mVtxCount++] = y;
+            mVtxData[mVtxCount++] = z;
+            mVtxData[mVtxCount++] = s;
+            mVtxData[mVtxCount++] = t;
+        }
+
+        public void add_XYZ_ST_NORM(float x, float y, float z, float s, float t, float nx, float ny, float nz) {
+            if((mVtxSize != 3) || !mNorm || !mTex) {
+                throw new IllegalStateException("add mistmatch with declaired components.");
+            }
+            makeSpace(8);
+            mVtxData[mVtxCount++] = x;
+            mVtxData[mVtxCount++] = y;
+            mVtxData[mVtxCount++] = z;
+            mVtxData[mVtxCount++] = s;
+            mVtxData[mVtxCount++] = t;
+            mVtxData[mVtxCount++] = nx;
+            mVtxData[mVtxCount++] = ny;
+            mVtxData[mVtxCount++] = nz;
+        }
+
+        public void addTriangle(int idx1, int idx2, int idx3) {
+            if((mIndexCount + 3) >= mIndexData.length) {
+                int t[] = new int[mIndexData.length * 2];
+                System.arraycopy(mIndexData, 0, t, 0, mIndexData.length);
+                mIndexData = t;
+            }
+            mIndexData[mIndexCount++] = idx1;
+            mIndexData[mIndexCount++] = idx2;
+            mIndexData[mIndexCount++] = idx3;
+        }
+
+        public SimpleMesh create() {
+            Element.Builder b = new Element.Builder(mRS);
+            int floatCount = mVtxSize;
+            if(mVtxSize == 2) {
+                b.addFloatXY();
+            } else {
+                b.addFloatXYZ();
+            }
+            if(mTex) {
+                floatCount += 2;
+                b.addFloatST();
+            }
+            if(mNorm) {
+                floatCount += 3;
+                b.addFloatNorm();
+            }
+            mElement = b.create();
+
+            Builder smb = new Builder(mRS);
+            smb.addVertexType(mElement, mVtxCount / floatCount);
+            smb.setIndexType(Element.INDEX_16, mIndexCount);
+            smb.setPrimitive(Primitive.TRIANGLE);
+            SimpleMesh sm = smb.create();
+
+            Allocation vertexAlloc = sm.createVertexAllocation(0);
+            Allocation indexAlloc = sm.createIndexAllocation();
+            sm.bindVertexAllocation(vertexAlloc, 0);
+            sm.bindIndexAllocation(indexAlloc);
+
+            vertexAlloc.data(mVtxData);
+            vertexAlloc.uploadToBufferObject();
+
+            // This is safe because length is a pow2
+            for(int ct=0; ct < (mIndexCount+1); ct += 2) {
+                mIndexData[ct >> 1] = mIndexData[ct] | (mIndexData[ct+1] << 16);
+            }
+            indexAlloc.data(mIndexData);
+            indexAlloc.uploadToBufferObject();
+
+            return sm;
+        }
+    }
 }
 
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 2393f74..2550181 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -70,7 +70,7 @@
 nAssignName(JNIEnv *_env, jobject _this, jint obj, jbyteArray str)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nAssignName, con(%p), obj(%p)", con, obj);
+    LOG_API("nAssignName, con(%p), obj(%p)", con, (void *)obj);
 
     jint len = _env->GetArrayLength(str);
     jbyte * cptr = (jbyte *) _env->GetPrimitiveArrayCritical(str, 0);
@@ -345,6 +345,14 @@
     rsAllocationUploadToTexture(con, (RsAllocation)a, mip);
 }
 
+static void
+nAllocationUploadToBufferObject(JNIEnv *_env, jobject _this, jint a)
+{
+    RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+    LOG_API("nAllocationUploadToBufferObject, con(%p), a(%p)", con, (RsAllocation)a);
+    rsAllocationUploadToBufferObject(con, (RsAllocation)a);
+}
+
 static RsElementPredefined SkBitmapToPredefined(SkBitmap::Config cfg)
 {
     switch (cfg) {
@@ -413,68 +421,68 @@
 
 
 static void
-nAllocationData_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data)
+nAllocationData_i(JNIEnv *_env, jobject _this, jint alloc, jintArray data, int sizeBytes)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
     jint len = _env->GetArrayLength(data);
     LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len);
     jint *ptr = _env->GetIntArrayElements(data, NULL);
-    rsAllocationData(con, (RsAllocation)alloc, ptr);
+    rsAllocationData(con, (RsAllocation)alloc, ptr, sizeBytes);
     _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
 }
 
 static void
-nAllocationData_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data)
+nAllocationData_f(JNIEnv *_env, jobject _this, jint alloc, jfloatArray data, int sizeBytes)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
     jint len = _env->GetArrayLength(data);
     LOG_API("nAllocationData_i, con(%p), alloc(%p), len(%i)", con, (RsAllocation)alloc, len);
     jfloat *ptr = _env->GetFloatArrayElements(data, NULL);
-    rsAllocationData(con, (RsAllocation)alloc, ptr);
+    rsAllocationData(con, (RsAllocation)alloc, ptr, sizeBytes);
     _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT);
 }
 
 static void
-nAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data)
+nAllocationSubData1D_i(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jintArray data, int sizeBytes)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
     jint len = _env->GetArrayLength(data);
     LOG_API("nAllocation1DSubData_i, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len);
     jint *ptr = _env->GetIntArrayElements(data, NULL);
-    rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr);
+    rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes);
     _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
 }
 
 static void
-nAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data)
+nAllocationSubData1D_f(JNIEnv *_env, jobject _this, jint alloc, jint offset, jint count, jfloatArray data, int sizeBytes)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
     jint len = _env->GetArrayLength(data);
     LOG_API("nAllocation1DSubData_f, con(%p), adapter(%p), offset(%i), count(%i), len(%i)", con, (RsAllocation)alloc, offset, count, len);
     jfloat *ptr = _env->GetFloatArrayElements(data, NULL);
-    rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr);
+    rsAllocation1DSubData(con, (RsAllocation)alloc, offset, count, ptr, sizeBytes);
     _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT);
 }
 
 static void
-nAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data)
+nAllocationSubData2D_i(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jintArray data, int sizeBytes)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
     jint len = _env->GetArrayLength(data);
     LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len);
     jint *ptr = _env->GetIntArrayElements(data, NULL);
-    rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr);
+    rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes);
     _env->ReleaseIntArrayElements(data, ptr, JNI_ABORT);
 }
 
 static void
-nAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data)
+nAllocationSubData2D_f(JNIEnv *_env, jobject _this, jint alloc, jint xoff, jint yoff, jint w, jint h, jfloatArray data, int sizeBytes)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
     jint len = _env->GetArrayLength(data);
     LOG_API("nAllocation2DSubData_i, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i)", con, (RsAllocation)alloc, xoff, yoff, w, h, len);
     jfloat *ptr = _env->GetFloatArrayElements(data, NULL);
-    rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr);
+    rsAllocation2DSubData(con, (RsAllocation)alloc, xoff, yoff, w, h, ptr, sizeBytes);
     _env->ReleaseFloatArrayElements(data, ptr, JNI_ABORT);
 }
 
@@ -516,7 +524,7 @@
         const TypeFieldCache *tfc = &tc->fields[ct];
         buf = tfc->ptr(_env, _o, tfc->field, buf);
     }
-    rsAllocationData(con, (RsAllocation)alloc, bufAlloc);
+    rsAllocationData(con, (RsAllocation)alloc, bufAlloc, tc->size);
     const uint32_t * tmp = (const uint32_t *)bufAlloc;
     free(bufAlloc);
 }
@@ -748,7 +756,7 @@
 nScriptSetClearColor(JNIEnv *_env, jobject _this, jint script, jfloat r, jfloat g, jfloat b, jfloat a)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nScriptSetClearColor, con(%p), s(%p), r(%f), g(%f), b(%f), a(%f)", con, script, r, g, b, a);
+    LOG_API("nScriptSetClearColor, con(%p), s(%p), r(%f), g(%f), b(%f), a(%f)", con, (void *)script, r, g, b, a);
     rsScriptSetClearColor(con, (RsScript)script, r, g, b, a);
 }
 
@@ -756,7 +764,7 @@
 nScriptSetClearDepth(JNIEnv *_env, jobject _this, jint script, jfloat d)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nScriptCSetClearDepth, con(%p), s(%p), depth(%f)", con, script, d);
+    LOG_API("nScriptCSetClearDepth, con(%p), s(%p), depth(%f)", con, (void *)script, d);
     rsScriptSetClearDepth(con, (RsScript)script, d);
 }
 
@@ -764,7 +772,7 @@
 nScriptSetClearStencil(JNIEnv *_env, jobject _this, jint script, jint stencil)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nScriptCSetClearStencil, con(%p), s(%p), stencil(%i)", con, script, stencil);
+    LOG_API("nScriptCSetClearStencil, con(%p), s(%p), stencil(%i)", con, (void *)script, stencil);
     rsScriptSetClearStencil(con, (RsScript)script, stencil);
 }
 
@@ -772,7 +780,7 @@
 nScriptSetTimeZone(JNIEnv *_env, jobject _this, jint script, jbyteArray timeZone)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, script, timeZone);
+    LOG_API("nScriptCSetTimeZone, con(%p), s(%p), timeZone(%s)", con, (void *)script, (const char *)timeZone);
 
     jint length = _env->GetArrayLength(timeZone);
     jbyte* timeZone_ptr;
@@ -1005,7 +1013,7 @@
 nProgramVertexBindAllocation(JNIEnv *_env, jobject _this, jint vpv, jint a)
 {
     RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
-    LOG_API("nProgramVertexBindAllocation, con(%p), vpf(%p), slot(%i), a(%p)", con, (RsProgramVertex)vpv, slot, (RsAllocation)a);
+    LOG_API("nProgramVertexBindAllocation, con(%p), vpf(%p), a(%p)", con, (RsProgramVertex)vpv, (RsAllocation)a);
     rsProgramVertexBindAllocation(con, (RsProgramFragment)vpv, (RsAllocation)a);
 }
 
@@ -1230,14 +1238,15 @@
 {"nAllocationCreatePredefSized",   "(II)I",                                (void*)nAllocationCreatePredefSized },
 {"nAllocationCreateSized",         "(II)I",                                (void*)nAllocationCreateSized },
 {"nAllocationCreateFromBitmap",    "(IZLandroid/graphics/Bitmap;)I",       (void*)nAllocationCreateFromBitmap },
-{"nAllocationCreateFromBitmapBoxed","(IZLandroid/graphics/Bitmap;)I",       (void*)nAllocationCreateFromBitmapBoxed },
+{"nAllocationCreateFromBitmapBoxed","(IZLandroid/graphics/Bitmap;)I",      (void*)nAllocationCreateFromBitmapBoxed },
 {"nAllocationUploadToTexture",     "(II)V",                                (void*)nAllocationUploadToTexture },
-{"nAllocationData",                "(I[I)V",                               (void*)nAllocationData_i },
-{"nAllocationData",                "(I[F)V",                               (void*)nAllocationData_f },
-{"nAllocationSubData1D",           "(III[I)V",                             (void*)nAllocationSubData1D_i },
-{"nAllocationSubData1D",           "(III[F)V",                             (void*)nAllocationSubData1D_f },
-{"nAllocationSubData2D",           "(IIIII[I)V",                           (void*)nAllocationSubData2D_i },
-{"nAllocationSubData2D",           "(IIIII[F)V",                           (void*)nAllocationSubData2D_f },
+{"nAllocationUploadToBufferObject","(I)V",                                 (void*)nAllocationUploadToBufferObject },
+{"nAllocationData",                "(I[II)V",                              (void*)nAllocationData_i },
+{"nAllocationData",                "(I[FI)V",                              (void*)nAllocationData_f },
+{"nAllocationSubData1D",           "(III[II)V",                            (void*)nAllocationSubData1D_i },
+{"nAllocationSubData1D",           "(III[FI)V",                            (void*)nAllocationSubData1D_f },
+{"nAllocationSubData2D",           "(IIIII[II)V",                          (void*)nAllocationSubData2D_i },
+{"nAllocationSubData2D",           "(IIIII[FI)V",                          (void*)nAllocationSubData2D_f },
 {"nAllocationRead",                "(I[I)V",                               (void*)nAllocationRead_i },
 {"nAllocationRead",                "(I[F)V",                               (void*)nAllocationRead_f },
 {"nAllocationDataFromObject",      "(ILandroid/renderscript/Type;Ljava/lang/Object;)V",   (void*)nAllocationDataFromObject },
diff --git a/include/media/AudioSystem.h b/include/media/AudioSystem.h
index 1f726fe..57f8102 100644
--- a/include/media/AudioSystem.h
+++ b/include/media/AudioSystem.h
@@ -451,6 +451,7 @@
     status_t get(const String8& key, String8& value);
     status_t getInt(const String8& key, int& value);
     status_t getFloat(const String8& key, float& value);
+    status_t getAt(size_t index, String8& key, String8& value);
 
     size_t size() { return mParameters.size(); }
 
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 58a74c7..0014d5c 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -119,12 +119,6 @@
         EMPTY_BUFFER_DONE,
         FILL_BUFFER_DONE,
 
-        // reserved for OMXDecoder use.
-        START,
-        INITIAL_FILL_BUFFER,
-
-        // reserved for OMXObserver use.
-        QUIT_OBSERVER,
     } type;
 
     IOMX::node_id node;
@@ -137,28 +131,21 @@
             OMX_U32 data2;
         } event_data;
 
-        // if type == EMPTY_BUFFER_DONE || type == FILL_BUFFER
-        //    || type == INITIAL_FILL_BUFFER
+        // if type == EMPTY_BUFFER_DONE
         struct {
             IOMX::buffer_id buffer;
         } buffer_data;
 
-        // if type == EMPTY_BUFFER || type == FILL_BUFFER_DONE
+        // if type == FILL_BUFFER_DONE
         struct {
             IOMX::buffer_id buffer;
             OMX_U32 range_offset;
             OMX_U32 range_length;
             OMX_U32 flags;
             OMX_TICKS timestamp;
-            OMX_PTR platform_private;  // ignored if type == EMPTY_BUFFER
+            OMX_PTR platform_private;
         } extended_buffer_data;
 
-        // if type == SEND_COMMAND
-        struct {
-            OMX_COMMANDTYPE cmd;
-            OMX_S32 param;
-        } send_command_data;
-
     } u;
 };
 
diff --git a/include/media/stagefright/OMXClient.h b/include/media/stagefright/OMXClient.h
index 7027e1b..2f14d06 100644
--- a/include/media/stagefright/OMXClient.h
+++ b/include/media/stagefright/OMXClient.h
@@ -20,62 +20,11 @@
 
 #include <media/IOMX.h>
 
-#include <utils/KeyedVector.h>
-#include <utils/List.h>
-#include <utils/threads.h>
-
 namespace android {
 
-class OMXObserver {
-public:
-    OMXObserver();
-    virtual ~OMXObserver();
-
-    void postMessage(const omx_message &msg);
-
-protected:
-    virtual void onOMXMessage(const omx_message &msg) = 0;
-
-private:
-    friend class OMXClient;
-
-    pthread_t mThread;
-    Mutex mLock;
-    Condition mQueueNotEmpty;
-    List<omx_message> mQueue;
-
-    void start();
-    void stop();
-
-    static void *ThreadWrapper(void *me);
-    void threadEntry();
-
-    OMXObserver(const OMXObserver &);
-    OMXObserver &operator=(const OMXObserver &);
-};
-
-class OMXClient;
-
-class OMXClientReflector : public BnOMXObserver {
-public:
-    OMXClientReflector(OMXClient *client);
-
-    virtual void on_message(const omx_message &msg);
-    void reset();
-
-private:
-    OMXClient *mClient;
-
-    OMXClientReflector(const OMXClientReflector &);
-    OMXClientReflector &operator=(const OMXClientReflector &);
-};
-
 class OMXClient {
 public:
-    friend class OMXClientReflector;
-
     OMXClient();
-    ~OMXClient();
 
     status_t connect();
     void disconnect();
@@ -84,18 +33,8 @@
         return mOMX;
     }
 
-    status_t registerObserver(IOMX::node_id node, OMXObserver *observer);
-    void unregisterObserver(IOMX::node_id node);
-
 private:
     sp<IOMX> mOMX;
-    Mutex mLock;
-
-    KeyedVector<IOMX::node_id, OMXObserver *> mObservers;
-
-    sp<OMXClientReflector> mReflector;
-
-    bool onOMXMessage(const omx_message &msg);
 
     OMXClient(const OMXClient &);
     OMXClient &operator=(const OMXClient &);
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h
index 08d550c..29cdf21 100644
--- a/include/media/stagefright/OMXCodec.h
+++ b/include/media/stagefright/OMXCodec.h
@@ -116,6 +116,7 @@
     State mState;
     Vector<BufferInfo> mPortBuffers[2];
     PortStatus mPortStatus[2];
+    bool mInitialBufferSubmit;
     bool mSignalledEOS;
     bool mNoMoreOutputData;
     int64_t mSeekTimeUs;
diff --git a/include/media/stagefright/OMXDecoder.h b/include/media/stagefright/OMXDecoder.h
deleted file mode 100644
index 99d803a..0000000
--- a/include/media/stagefright/OMXDecoder.h
+++ /dev/null
@@ -1,185 +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.
- */
-
-#ifndef OMX_DECODER_H_
-
-#define OMX_DECODER_H_
-
-#include <binder/MemoryDealer.h>
-#include <media/stagefright/MediaBuffer.h>
-#include <media/stagefright/MediaSource.h>
-#include <media/stagefright/OMXClient.h>
-#include <utils/KeyedVector.h>
-#include <utils/List.h>
-#include <utils/threads.h>
-
-#include <OMX_Video.h>
-
-namespace android {
-
-class OMXMediaBuffer;
-
-class OMXDecoder : public MediaSource,
-                   public OMXObserver,
-                   public MediaBufferObserver {
-public:
-    static sp<OMXDecoder> Create(
-            OMXClient *client, const sp<MetaData> &data,
-            bool createEncoder,
-            const sp<MediaSource> &source);
-
-    virtual status_t start(MetaData *params = NULL);
-    virtual status_t stop();
-
-    virtual sp<MetaData> getFormat();
-
-    virtual status_t read(
-            MediaBuffer **buffer, const ReadOptions *options = NULL);
-
-    void addCodecSpecificData(const void *data, size_t size);
-
-    // from OMXObserver
-    virtual void onOMXMessage(const omx_message &msg);
-
-    // from MediaBufferObserver
-    virtual void signalBufferReturned(MediaBuffer *buffer);
-
-protected:
-    virtual ~OMXDecoder();
-
-private:
-    enum {
-        kPortIndexInput  = 0,
-        kPortIndexOutput = 1
-    };
-
-    enum PortStatus {
-        kPortStatusActive             = 0,
-        kPortStatusDisabled           = 1,
-        kPortStatusShutdown           = 2,
-        kPortStatusFlushing           = 3,
-        kPortStatusFlushingToDisabled = 4,
-        kPortStatusFlushingToShutdown = 5,
-    };
-
-    enum Quirks {
-        kWantsNALFragments                   = 1,
-        kDoesntReturnBuffersOnDisable        = 2,
-        kDoesntFlushOnExecutingToIdle        = 4,
-        kDoesntProperlyFlushAllPortsAtOnce   = 8,
-        kRequiresAllocateBufferOnInputPorts  = 16,
-        kRequiresAllocateBufferOnOutputPorts = 32,
-        kRequiresLoadedToIdleAfterAllocation = 64,
-        kMeasuresTimeInMilliseconds          = 128,
-    };
-
-    OMXClient *mClient;
-    sp<IOMX> mOMX;
-    IOMX::node_id mNode;
-    char *mComponentName;
-    char *mMIME;
-    bool mIsMP3;
-    bool mIsAVC;
-    bool mIsEncoder;
-    uint32_t mQuirks;
-
-    sp<MediaSource> mSource;
-    sp<MetaData> mOutputFormat;
-
-    Mutex mLock;
-    Condition mOutputBufferAvailable;
-
-    List<MediaBuffer *> mOutputBuffers;
-
-    struct CodecSpecificData {
-        void *data;
-        size_t size;
-    };
-
-    List<CodecSpecificData> mCodecSpecificData;
-    List<CodecSpecificData>::iterator mCodecSpecificDataIterator;
-
-    volatile OMX_STATETYPE mState;
-    OMX_U32 mPortStatusMask;
-    bool mShutdownInitiated;
-
-    typedef List<IOMX::buffer_id> BufferList;
-    Vector<BufferList> mBuffers;
-
-    KeyedVector<IOMX::buffer_id, sp<IMemory> > mBufferMap;
-    KeyedVector<IOMX::buffer_id, OMXMediaBuffer *> mMediaBufferMap;
-
-    sp<MemoryDealer> mDealer;
-
-    bool mSeeking;
-    int64_t mSeekTimeUs;
-
-    bool mStarted;
-    status_t mErrorCondition;
-    bool mReachedEndOfInput;
-
-    OMXDecoder(OMXClient *client, IOMX::node_id node,
-               const char *mime, const char *codec,
-               bool is_encoder,
-               uint32_t quirks,
-               const sp<MediaSource> &source);
-
-    void setPortStatus(OMX_U32 port_index, PortStatus status);
-    PortStatus getPortStatus(OMX_U32 port_index) const;
-
-    void allocateBuffers(OMX_U32 port_index);
-
-    void setAMRFormat();
-    void setAACFormat();
-
-    status_t setVideoPortFormatType(
-            OMX_U32 portIndex,
-            OMX_VIDEO_CODINGTYPE compressionFormat,
-            OMX_COLOR_FORMATTYPE colorFormat);
-
-    void setVideoOutputFormat(const char *mime, OMX_U32 width, OMX_U32 height);
-    void setVideoInputFormat(const char *mime, OMX_U32 width, OMX_U32 height);
-    void setup();
-    void dumpPortDefinition(OMX_U32 port_index);
-
-    void onStart();
-    void onEvent(OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2);
-    void onEventCmdComplete(OMX_COMMANDTYPE type, OMX_U32 data);
-    void onEventPortSettingsChanged(OMX_U32 port_index);
-    void onStateChanged(OMX_STATETYPE to);
-    void onEmptyBufferDone(IOMX::buffer_id buffer);
-    void onFillBufferDone(const omx_message &msg);
-
-    void onRealEmptyBufferDone(IOMX::buffer_id buffer);
-    void onRealFillBufferDone(const omx_message &msg);
-
-    void initiateShutdown();
-
-    void freeInputBuffer(IOMX::buffer_id buffer);
-    void freeOutputBuffer(IOMX::buffer_id buffer);
-    void freePortBuffers(OMX_U32 port_index);
-
-    void postStart();
-    void postEmptyBufferDone(IOMX::buffer_id buffer);
-    void postInitialFillBuffer(IOMX::buffer_id buffer);
-
-    OMXDecoder(const OMXDecoder &);
-    OMXDecoder &operator=(const OMXDecoder &);
-};
-
-}  // namespace android
-
-#endif  // OMX_DECODER_H_
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 77a126c..3a419b5 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -136,8 +136,17 @@
 
 AudioFlinger::~AudioFlinger()
 {
-    mRecordThreads.clear();
-    mPlaybackThreads.clear();
+    while (!mRecordThreads.isEmpty()) {
+        // closeInput() will remove first entry from mRecordThreads
+        closeInput(mRecordThreads.keyAt(0));
+    }
+    while (!mPlaybackThreads.isEmpty()) {
+        // closeOutput() will remove first entry from mPlaybackThreads
+        closeOutput(mPlaybackThreads.keyAt(0));
+    }
+    if (mAudioHardware) {
+        delete mAudioHardware;
+    }
 }
 
 
diff --git a/libs/audioflinger/AudioPolicyService.cpp b/libs/audioflinger/AudioPolicyService.cpp
index ae17d76..5c3cc8e 100644
--- a/libs/audioflinger/AudioPolicyService.cpp
+++ b/libs/audioflinger/AudioPolicyService.cpp
@@ -16,6 +16,13 @@
 
 #define LOG_TAG "AudioPolicyService"
 //#define LOG_NDEBUG 0
+
+#undef __STRICT_ANSI__
+#define __STDINT_LIMITS
+#define __STDC_LIMIT_MACROS
+#include <stdint.h>
+
+#include <sys/time.h>
 #include <binder/IServiceManager.h>
 #include <utils/Log.h>
 #include <cutils/properties.h>
@@ -54,7 +61,7 @@
     char value[PROPERTY_VALUE_MAX];
 
     // start tone playback thread
-    mTonePlaybacThread = new AudioCommandThread();
+    mTonePlaybackThread = new AudioCommandThread();
     // start audio commands thread
     mAudioCommandThread = new AudioCommandThread();
 
@@ -80,8 +87,8 @@
 
 AudioPolicyService::~AudioPolicyService()
 {
-    mTonePlaybacThread->exit();
-    mTonePlaybacThread.clear();
+    mTonePlaybackThread->exit();
+    mTonePlaybackThread.clear();
     mAudioCommandThread->exit();
     mAudioCommandThread.clear();
 
@@ -451,9 +458,9 @@
     return af->closeInput(input);
 }
 
-status_t AudioPolicyService::setStreamVolume(AudioSystem::stream_type stream, float volume, audio_io_handle_t output)
+status_t AudioPolicyService::setStreamVolume(AudioSystem::stream_type stream, float volume, audio_io_handle_t output, int delayMs)
 {
-    return mAudioCommandThread->volumeCommand((int)stream, volume, (int)output);
+    return mAudioCommandThread->volumeCommand((int)stream, volume, (int)output, delayMs);
 }
 
 status_t AudioPolicyService::setStreamOutput(AudioSystem::stream_type stream, audio_io_handle_t output)
@@ -465,9 +472,9 @@
 }
 
 
-void AudioPolicyService::setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs)
+void AudioPolicyService::setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs, int delayMs)
 {
-    mAudioCommandThread->parametersCommand((int)ioHandle, keyValuePairs);
+    mAudioCommandThread->parametersCommand((int)ioHandle, keyValuePairs, delayMs);
 }
 
 String8 AudioPolicyService::getParameters(audio_io_handle_t ioHandle, const String8& keys)
@@ -478,13 +485,13 @@
 
 status_t AudioPolicyService::startTone(ToneGenerator::tone_type tone, AudioSystem::stream_type stream)
 {
-    mTonePlaybacThread->startToneCommand(tone, stream);
+    mTonePlaybackThread->startToneCommand(tone, stream);
     return NO_ERROR;
 }
 
 status_t AudioPolicyService::stopTone()
 {
-    mTonePlaybacThread->stopToneCommand();
+    mTonePlaybackThread->stopToneCommand();
     return NO_ERROR;
 }
 
@@ -516,58 +523,72 @@
 
 bool AudioPolicyService::AudioCommandThread::threadLoop()
 {
+    nsecs_t waitTime = INT64_MAX;
+
     mLock.lock();
     while (!exitPending())
     {
         while(!mAudioCommands.isEmpty()) {
-            AudioCommand *command = mAudioCommands[0];
-            mAudioCommands.removeAt(0);
-            switch (command->mCommand) {
-            case START_TONE: {
-                mLock.unlock();
-                ToneData *data = (ToneData *)command->mParam;
-                LOGV("AudioCommandThread() processing start tone %d on stream %d",
-                        data->mType, data->mStream);
-                if (mpToneGenerator != NULL)
-                    delete mpToneGenerator;
-                mpToneGenerator = new ToneGenerator(data->mStream, 1.0);
-                mpToneGenerator->startTone(data->mType);
-                delete data;
-                mLock.lock();
-                }break;
-            case STOP_TONE: {
-                mLock.unlock();
-                LOGV("AudioCommandThread() processing stop tone");
-                if (mpToneGenerator != NULL) {
-                    mpToneGenerator->stopTone();
-                    delete mpToneGenerator;
-                    mpToneGenerator = NULL;
+            nsecs_t curTime = systemTime();
+            // commands are sorted by increasing time stamp: execute them from index 0 and up
+            if (mAudioCommands[0]->mTime <= curTime) {
+                AudioCommand *command = mAudioCommands[0];
+                mAudioCommands.removeAt(0);
+                switch (command->mCommand) {
+                case START_TONE: {
+                    mLock.unlock();
+                    ToneData *data = (ToneData *)command->mParam;
+                    LOGV("AudioCommandThread() processing start tone %d on stream %d",
+                            data->mType, data->mStream);
+                    if (mpToneGenerator != NULL)
+                        delete mpToneGenerator;
+                    mpToneGenerator = new ToneGenerator(data->mStream, 1.0);
+                    mpToneGenerator->startTone(data->mType);
+                    delete data;
+                    mLock.lock();
+                    }break;
+                case STOP_TONE: {
+                    mLock.unlock();
+                    LOGV("AudioCommandThread() processing stop tone");
+                    if (mpToneGenerator != NULL) {
+                        mpToneGenerator->stopTone();
+                        delete mpToneGenerator;
+                        mpToneGenerator = NULL;
+                    }
+                    mLock.lock();
+                    }break;
+                case SET_VOLUME: {
+                    VolumeData *data = (VolumeData *)command->mParam;
+                    LOGV("AudioCommandThread() processing set volume stream %d, volume %f, output %d", data->mStream, data->mVolume, data->mIO);
+                    command->mStatus = AudioSystem::setStreamVolume(data->mStream, data->mVolume, data->mIO);
+                    if (command->mWaitStatus) {
+                        command->mCond.signal();
+                        mWaitWorkCV.wait(mLock);
+                    }
+                    delete data;
+                    }break;
+                case SET_PARAMETERS: {
+                     ParametersData *data = (ParametersData *)command->mParam;
+                     LOGV("AudioCommandThread() processing set parameters string %s, io %d", data->mKeyValuePairs.string(), data->mIO);
+                     command->mStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
+                     if (command->mWaitStatus) {
+                         command->mCond.signal();
+                         mWaitWorkCV.wait(mLock);
+                     }
+                     delete data;
+                     }break;
+                default:
+                    LOGW("AudioCommandThread() unknown command %d", command->mCommand);
                 }
-                mLock.lock();
-                }break;
-            case SET_VOLUME: {
-                VolumeData *data = (VolumeData *)command->mParam;
-                LOGV("AudioCommandThread() processing set volume stream %d, volume %f, output %d", data->mStream, data->mVolume, data->mIO);
-                mCommandStatus = AudioSystem::setStreamVolume(data->mStream, data->mVolume, data->mIO);
-                mCommandCond.signal();
-                mWaitWorkCV.wait(mLock);
-                delete data;
-                }break;
-            case SET_PARAMETERS: {
-                 ParametersData *data = (ParametersData *)command->mParam;
-                 LOGV("AudioCommandThread() processing set parameters string %s, io %d", data->mKeyValuePairs.string(), data->mIO);
-                 mCommandStatus = AudioSystem::setParameters(data->mIO, data->mKeyValuePairs);
-                 mCommandCond.signal();
-                 mWaitWorkCV.wait(mLock);
-                 delete data;
-                 }break;
-            default:
-                LOGW("AudioCommandThread() unknown command %d", command->mCommand);
+                delete command;
+                waitTime = INT64_MAX;
+            } else {
+                waitTime = mAudioCommands[0]->mTime - curTime;
+                break;
             }
-            delete command;
         }
         LOGV("AudioCommandThread() going to sleep");
-        mWaitWorkCV.wait(mLock);
+        mWaitWorkCV.waitRelative(mLock, waitTime);
         LOGV("AudioCommandThread() waking up");
     }
     mLock.unlock();
@@ -583,7 +604,8 @@
     data->mType = type;
     data->mStream = stream;
     command->mParam = (void *)data;
-    mAudioCommands.add(command);
+    command->mWaitStatus = false;
+    insertCommand_l(command);
     LOGV("AudioCommandThread() adding tone start type %d, stream %d", type, stream);
     mWaitWorkCV.signal();
 }
@@ -594,13 +616,16 @@
     AudioCommand *command = new AudioCommand();
     command->mCommand = STOP_TONE;
     command->mParam = NULL;
-    mAudioCommands.add(command);
+    command->mWaitStatus = false;
+    insertCommand_l(command);
     LOGV("AudioCommandThread() adding tone stop");
     mWaitWorkCV.signal();
 }
 
-status_t AudioPolicyService::AudioCommandThread::volumeCommand(int stream, float volume, int output)
+status_t AudioPolicyService::AudioCommandThread::volumeCommand(int stream, float volume, int output, int delayMs)
 {
+    status_t status = NO_ERROR;
+
     Mutex::Autolock _l(mLock);
     AudioCommand *command = new AudioCommand();
     command->mCommand = SET_VOLUME;
@@ -609,17 +634,26 @@
     data->mVolume = volume;
     data->mIO = output;
     command->mParam = data;
-    mAudioCommands.add(command);
+    if (delayMs == 0) {
+        command->mWaitStatus = true;
+    } else {
+        command->mWaitStatus = false;
+    }
+    insertCommand_l(command, delayMs);
     LOGV("AudioCommandThread() adding set volume stream %d, volume %f, output %d", stream, volume, output);
     mWaitWorkCV.signal();
-    mCommandCond.wait(mLock);
-    status_t status =  mCommandStatus;
-    mWaitWorkCV.signal();
+    if (command->mWaitStatus) {
+        command->mCond.wait(mLock);
+        status =  command->mStatus;
+        mWaitWorkCV.signal();
+    }
     return status;
 }
 
-status_t AudioPolicyService::AudioCommandThread::parametersCommand(int ioHandle, const String8& keyValuePairs)
+status_t AudioPolicyService::AudioCommandThread::parametersCommand(int ioHandle, const String8& keyValuePairs, int delayMs)
 {
+    status_t status = NO_ERROR;
+
     Mutex::Autolock _l(mLock);
     AudioCommand *command = new AudioCommand();
     command->mCommand = SET_PARAMETERS;
@@ -627,15 +661,102 @@
     data->mIO = ioHandle;
     data->mKeyValuePairs = keyValuePairs;
     command->mParam = data;
-    mAudioCommands.add(command);
-    LOGV("AudioCommandThread() adding set parameter string %s, io %d", keyValuePairs.string(), ioHandle);
+    if (delayMs == 0) {
+        command->mWaitStatus = true;
+    } else {
+        command->mWaitStatus = false;
+    }
+    insertCommand_l(command, delayMs);
+    LOGV("AudioCommandThread() adding set parameter string %s, io %d ,delay %d", keyValuePairs.string(), ioHandle, delayMs);
     mWaitWorkCV.signal();
-    mCommandCond.wait(mLock);
-    status_t status =  mCommandStatus;
-    mWaitWorkCV.signal();
+    if (command->mWaitStatus) {
+        command->mCond.wait(mLock);
+        status =  command->mStatus;
+        mWaitWorkCV.signal();
+    }
     return status;
 }
 
+// insertCommand_l() must be called with mLock held
+void AudioPolicyService::AudioCommandThread::insertCommand_l(AudioCommand *command, int delayMs)
+{
+    ssize_t i;
+    Vector <AudioCommand *> removedCommands;
+
+    command->mTime = systemTime() + milliseconds(delayMs);
+
+    // check same pending commands with later time stamps and eliminate them
+    for (i = mAudioCommands.size()-1; i >= 0; i--) {
+        AudioCommand *command2 = mAudioCommands[i];
+        // commands are sorted by increasing time stamp: no need to scan the rest of mAudioCommands
+        if (command2->mTime <= command->mTime) break;
+        if (command2->mCommand != command->mCommand) continue;
+
+        switch (command->mCommand) {
+        case SET_PARAMETERS: {
+            ParametersData *data = (ParametersData *)command->mParam;
+            ParametersData *data2 = (ParametersData *)command2->mParam;
+            if (data->mIO != data2->mIO) break;
+            LOGV("Comparing parameter command %s to new command %s", data2->mKeyValuePairs.string(), data->mKeyValuePairs.string());
+            AudioParameter param = AudioParameter(data->mKeyValuePairs);
+            AudioParameter param2 = AudioParameter(data2->mKeyValuePairs);
+            for (size_t j = 0; j < param.size(); j++) {
+               String8 key;
+               String8 value;
+               param.getAt(j, key, value);
+               for (size_t k = 0; k < param2.size(); k++) {
+                  String8 key2;
+                  String8 value2;
+                  param2.getAt(k, key2, value2);
+                  if (key2 == key) {
+                      param2.remove(key2);
+                      LOGV("Filtering out parameter %s", key2.string());
+                      break;
+                  }
+               }
+            }
+            // if all keys have been filtered out, remove the command.
+            // otherwise, update the key value pairs
+            if (param2.size() == 0) {
+                removedCommands.add(command2);
+            } else {
+                data2->mKeyValuePairs = param2.toString();
+            }
+        } break;
+
+        case SET_VOLUME: {
+            VolumeData *data = (VolumeData *)command->mParam;
+            VolumeData *data2 = (VolumeData *)command2->mParam;
+            if (data->mIO != data2->mIO) break;
+            if (data->mStream != data2->mStream) break;
+            LOGV("Filtering out volume command on output %d for stream %d", data->mIO, data->mStream);
+            removedCommands.add(command2);
+        } break;
+        case START_TONE:
+        case STOP_TONE:
+        default:
+            break;
+        }
+    }
+
+    // remove filtered commands
+    for (size_t j = 0; j < removedCommands.size(); j++) {
+        // removed commands always have time stamps greater than current command
+        for (size_t k = i + 1; k < mAudioCommands.size(); k++) {
+            if (mAudioCommands[k] == removedCommands[j]) {
+                LOGV("suppressing command: %d", mAudioCommands[k]->mCommand);
+                mAudioCommands.removeAt(k);
+                break;
+            }
+        }
+    }
+    removedCommands.clear();
+
+    // insert command at the right place according to its time stamp
+    LOGV("inserting command: %d at index %ld, num commands %d", command->mCommand, i+1, mAudioCommands.size());
+    mAudioCommands.insertAt(command, i + 1);
+}
+
 void AudioPolicyService::AudioCommandThread::exit()
 {
     LOGV("AudioCommandThread::exit");
diff --git a/libs/audioflinger/AudioPolicyService.h b/libs/audioflinger/AudioPolicyService.h
index 3909fa4..56a85e1 100644
--- a/libs/audioflinger/AudioPolicyService.h
+++ b/libs/audioflinger/AudioPolicyService.h
@@ -20,6 +20,7 @@
 #include <media/IAudioPolicyService.h>
 #include <hardware_legacy/AudioPolicyInterface.h>
 #include <media/ToneGenerator.h>
+#include <utils/Vector.h>
 
 namespace android {
 
@@ -98,9 +99,9 @@
                                     uint32_t *pChannels,
                                     uint32_t acoustics);
     virtual status_t closeInput(audio_io_handle_t input);
-    virtual status_t setStreamVolume(AudioSystem::stream_type stream, float volume, audio_io_handle_t output);
+    virtual status_t setStreamVolume(AudioSystem::stream_type stream, float volume, audio_io_handle_t output, int delayMs = 0);
     virtual status_t setStreamOutput(AudioSystem::stream_type stream, audio_io_handle_t output);
-    virtual void setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs);
+    virtual void setParameters(audio_io_handle_t ioHandle, const String8& keyValuePairs, int delayMs = 0);
     virtual String8 getParameters(audio_io_handle_t ioHandle, const String8& keys);
     virtual status_t startTone(ToneGenerator::tone_type tone, AudioSystem::stream_type stream);
     virtual status_t stopTone();
@@ -116,6 +117,7 @@
     // For audio config commands, it is necessary because audio flinger requires that the calling process (user)
     // has permission to modify audio settings.
     class AudioCommandThread : public Thread {
+        class AudioCommand;
     public:
 
         // commands for tone AudioCommand
@@ -136,15 +138,20 @@
                     void        exit();
                     void        startToneCommand(int type = 0, int stream = 0);
                     void        stopToneCommand();
-                    status_t    volumeCommand(int stream, float volume, int output);
-                    status_t    parametersCommand(int ioHandle, const String8& keyValuePairs);
+                    status_t    volumeCommand(int stream, float volume, int output, int delayMs = 0);
+                    status_t    parametersCommand(int ioHandle, const String8& keyValuePairs, int delayMs = 0);
+                    void        insertCommand_l(AudioCommand *command, int delayMs = 0);
 
     private:
         // descriptor for requested tone playback event
         class AudioCommand {
         public:
             int mCommand;   // START_TONE, STOP_TONE ...
-            void *mParam;
+            nsecs_t mTime;  // time stamp
+            Condition mCond; // condition for status return
+            status_t mStatus; // command status
+            bool mWaitStatus; // true if caller is waiting for status
+            void *mParam;     // command parameter (ToneData, VolumeData, ParametersData)
         };
 
         class ToneData {
@@ -168,9 +175,7 @@
 
         Mutex   mLock;
         Condition mWaitWorkCV;
-        Vector<AudioCommand *> mAudioCommands;    // list of pending tone events
-        Condition              mCommandCond;
-        status_t               mCommandStatus;
+        Vector <AudioCommand *> mAudioCommands; // list of pending commands
         ToneGenerator *mpToneGenerator;     // the tone generator
     };
 
@@ -182,7 +187,7 @@
                         // connection stated our routing
     AudioPolicyInterface* mpPolicyManager;          // the platform specific policy manager
     sp <AudioCommandThread> mAudioCommandThread;    // audio commands thread
-    sp <AudioCommandThread> mTonePlaybacThread;     // tone playback thread
+    sp <AudioCommandThread> mTonePlaybackThread;     // tone playback thread
 };
 
 }; // namespace android
diff --git a/libs/rs/java/Film/res/raw/filmstrip.c b/libs/rs/java/Film/res/raw/filmstrip.c
index 255d908..8f3d930 100644
--- a/libs/rs/java/Film/res/raw/filmstrip.c
+++ b/libs/rs/java/Film/res/raw/filmstrip.c
@@ -24,15 +24,15 @@
 
     float trans = Pos_translate;
     float rot = Pos_rotate;
+
     matrixLoadScale(mat1, 2.f, 2.f, 2.f);
     matrixTranslate(mat1, 0.f, 0.f, trans);
     matrixRotate(mat1, 90.f, 0.f, 0.f, 1.f);
     matrixRotate(mat1, rot, 1.f, 0.f, 0.f);
-    storeMatrix(3, 0, mat1);
+    vpLoadModelMatrix(mat1);
 
     // Draw the lighting effect in the strip and fill the Z buffer.
-    drawTriangleMesh(NAMED_mesh);
-
+    drawSimpleMesh(NAMED_mesh);
 
     // Start of images.
     bindProgramFragmentStore(NAMED_PSImages);
@@ -74,31 +74,21 @@
         pos = pos - 0.75f;
 
         offset = offset + triangleOffsetsCount / 2;
-
-    int drawit = 1;
-    if (offset < 0) {
-        drawit = 0;
-    }
-    if (offset >= triangleOffsetsCount) {
-        drawit = 0;
-    }
-
-        //if (!((offset < 0) || (offset >= triangleOffsetsCount))) {
-        if (drawit) {
+        if (!((offset < 0) || (offset >= triangleOffsetsCount))) {
             int start = offset -2;
             int end = offset + 2;
 
             if (start < 0) {
                 start = 0;
             }
-            if (end > triangleOffsetsCount) {
-                end = triangleOffsetsCount;
+            if (end >= triangleOffsetsCount) {
+                end = triangleOffsetsCount-1;
             }
 
             bindTexture(NAMED_PFImages, 0, loadI32(0, imgId - 1));
             matrixLoadTranslate(mat1, -pos - loadF(5, triangleOffsetsCount / 2), 0, 0);
             vpLoadTextureMatrix(mat1);
-            drawTriangleMeshRange(NAMED_mesh, loadI32(4, start), loadI32(4, end) - loadI32(4, start));
+            drawSimpleMeshRange(NAMED_mesh, loadI32(4, start), (loadI32(4, end) - loadI32(4, start)));
         }
     }
     return 0;
diff --git a/libs/rs/java/Film/src/com/android/film/FilmRS.java b/libs/rs/java/Film/src/com/android/film/FilmRS.java
index e6cd52d..cee827b 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmRS.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmRS.java
@@ -68,8 +68,6 @@
     private RenderScript mRS;
     private Script mScriptStrip;
     private Script mScriptImage;
-    private Element mElementVertex;
-    private Element mElementIndex;
     private Sampler mSampler;
     private ProgramStore mPSBackground;
     private ProgramStore mPSImages;
@@ -88,7 +86,7 @@
     private Allocation mAllocOffsetsTex;
     private Allocation mAllocOffsets;
 
-    private RenderScript.TriangleMesh mMesh;
+    private SimpleMesh mMesh;
     private Light mLight;
 
     private FilmStripMesh mFSM;
@@ -186,7 +184,6 @@
                 mip++;
                 a.setConstraint(Dimension.LOD, mip);
             }
-            a.destroy();
 
             mImages[ct].uploadToTexture(1);
             mBufferIDs[ct] = mImages[ct].getID();
@@ -204,13 +201,8 @@
     }
 
     private void initRS() {
-        mElementVertex = Element.NORM_ST_XYZ_F32;
-        mElementIndex = Element.INDEX_16;
-
-        mRS.triangleMeshBegin(mElementVertex, mElementIndex);
         mFSM = new FilmStripMesh();
-        mFSM.init(mRS);
-        mMesh = mRS.triangleMeshCreate();
+        mMesh = mFSM.init(mRS);
         mMesh.setName("mesh");
 
         initPFS();
diff --git a/libs/rs/java/Film/src/com/android/film/FilmStripMesh.java b/libs/rs/java/Film/src/com/android/film/FilmStripMesh.java
index 02bffd8..64aac26 100644
--- a/libs/rs/java/Film/src/com/android/film/FilmStripMesh.java
+++ b/libs/rs/java/Film/src/com/android/film/FilmStripMesh.java
@@ -22,6 +22,7 @@
 import android.util.Log;
 
 import android.renderscript.RenderScript;
+import android.renderscript.SimpleMesh;
 
 
 class FilmStripMesh {
@@ -72,27 +73,23 @@
             dx /= len;
             dy /= len;
             dz /= len;
-        
+
             nx = dx * dz;
             ny = dy * dz;
             nz = (float)java.lang.Math.sqrt(dx*dx + dy*dy);
-        
+
             len = (float)java.lang.Math.sqrt(nx*nx + ny*ny + nz*nz);
             nx /= len;
             ny /= len;
             nz /= len;
         }
-
-        void addToRS(RenderScript rs) {
-            rs.triangleMeshAddVertex_XYZ_ST_NORM(x, y, z, s, t, nx, ny, nz);
-        }
     }
 
     int[] mTriangleOffsets;
     float[] mTriangleOffsetsTex;
     int mTriangleOffsetsCount;
 
-    void init(RenderScript rs)
+    SimpleMesh init(RenderScript rs)
     {
         float vtx[] = new float[] {
             60.431003f, 124.482050f,
@@ -203,11 +200,11 @@
              -60.862074f, 120.872604f,
              -60.431003f, 124.482050f
         };
-    
-    
+
+
         mTriangleOffsets = new int[64];
         mTriangleOffsetsTex = new float[64];
-    
+
         mTriangleOffsets[0] = 0;
         mTriangleOffsetsCount = 1;
 
@@ -215,6 +212,8 @@
         t.nxyz(1, 0, 0);
         int count = vtx.length / 2;
 
+        SimpleMesh.TriangleMeshBuilder tm = new SimpleMesh.TriangleMeshBuilder(rs, 3, true, true);
+
         float runningS = 0;
         for (int ct=0; ct < (count-1); ct++) {
             t.x = -vtx[ct*2] / 100.f;
@@ -228,16 +227,15 @@
             t.ny /= len;
             t.y = -0.5f;
             t.t = 0;
-            //Log.e("xx", "vtx " + t.x + "  " + t.y + "  " + t.z);
-            t.addToRS(rs);
+            tm.add_XYZ_ST_NORM(t.x, t.y, t.z, t.s, t.t, t.nx, t.ny, t.nz);
+            //android.util.Log.e("rs", "vtx x="+t.x+" y="+t.y+" z="+t.z+" s="+t.s+" t="+t.t);
             t.y = .5f;
             t.t = 1;
-            t.addToRS(rs);
+            tm.add_XYZ_ST_NORM(t.x, t.y, t.z, t.s, t.t, t.nx, t.ny, t.nz);
+            //android.util.Log.e("rs", "vtx x="+t.x+" y="+t.y+" z="+t.z+" s="+t.s+" t="+t.t);
 
-            //LOGE(" %f", runningS);
             if((runningS*2) > mTriangleOffsetsCount) {
-                //LOGE("**** img %i  %i", gTriangleOffsetsCount, ct*2);
-                mTriangleOffsets[mTriangleOffsetsCount] = ct*2;
+                mTriangleOffsets[mTriangleOffsetsCount] = ct*2 * 3;
                 mTriangleOffsetsTex[mTriangleOffsetsCount] = t.s;
                 mTriangleOffsetsCount ++;
             }
@@ -245,9 +243,10 @@
 
         count = (count * 2 - 2);
         for (int ct=0; ct < (count-2); ct+= 2) {
-            rs.triangleMeshAddTriangle(ct, ct+1, ct+2);
-            rs.triangleMeshAddTriangle(ct+1, ct+3, ct+2);
+            tm.addTriangle(ct, ct+1, ct+2);
+            tm.addTriangle(ct+1, ct+3, ct+2);
         }
+        return tm.create();
     }
 
 
diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index e275f27..cb4dd00 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -130,6 +130,9 @@
 AllocationData {
 	param RsAllocation va
 	param const void * data
+	param uint32_t bytes
+	handcodeApi
+	togglePlay
 	}
 
 Allocation1DSubData {
@@ -137,6 +140,9 @@
 	param uint32_t xoff
 	param uint32_t count
 	param const void *data
+	param uint32_t bytes
+	handcodeApi
+	togglePlay
 	}
 
 Allocation2DSubData {
@@ -146,6 +152,7 @@
 	param uint32_t w
 	param uint32_t h
 	param const void *data
+	param uint32_t bytes
 	}
 
 AllocationRead {
diff --git a/libs/rs/rsAdapter.cpp b/libs/rs/rsAdapter.cpp
index 3242e11..d20e910 100644
--- a/libs/rs/rsAdapter.cpp
+++ b/libs/rs/rsAdapter.cpp
@@ -72,7 +72,7 @@
 RsAdapter1D rsi_Adapter1DCreate(Context *rsc)
 {
     Adapter1D *a = new Adapter1D();
-    a->incRef();
+    a->incUserRef();
     return a;
 }
 
@@ -185,7 +185,7 @@
 RsAdapter2D rsi_Adapter2DCreate(Context *rsc)
 {
     Adapter2D *a = new Adapter2D();
-    a->incRef();
+    a->incUserRef();
     return a;
 }
 
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp
index 3cb76bc..1f49ca1 100644
--- a/libs/rs/rsAllocation.cpp
+++ b/libs/rs/rsAllocation.cpp
@@ -115,9 +115,14 @@
 }
 
 
-void Allocation::data(const void *data)
+void Allocation::data(const void *data, uint32_t sizeBytes)
 {
-    memcpy(mPtr, data, mType->getSizeBytes());
+    uint32_t size = mType->getSizeBytes();
+    if (size != sizeBytes) {
+        LOGE("Allocation::data called with mismatched size expected %i, got %i", size, sizeBytes);
+        return;
+    }
+    memcpy(mPtr, data, size);
 }
 
 void Allocation::read(void *data)
@@ -125,16 +130,22 @@
     memcpy(data, mPtr, mType->getSizeBytes());
 }
 
-void Allocation::subData(uint32_t xoff, uint32_t count, const void *data)
+void Allocation::subData(uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes)
 {
     uint32_t eSize = mType->getElementSizeBytes();
     uint8_t * ptr = static_cast<uint8_t *>(mPtr);
     ptr += eSize * xoff;
-    memcpy(ptr, data, count * eSize);
+    uint32_t size = count * eSize;
+
+    if (size != sizeBytes) {
+        LOGE("Allocation::subData called with mismatched size expected %i, got %i", size, sizeBytes);
+        return;
+    }
+    memcpy(ptr, data, size);
 }
 
 void Allocation::subData(uint32_t xoff, uint32_t yoff,
-             uint32_t w, uint32_t h, const void *data)
+             uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes)
 {
     uint32_t eSize = mType->getElementSizeBytes();
     uint32_t lineSize = eSize * w;
@@ -143,6 +154,12 @@
     const uint8_t *src = static_cast<const uint8_t *>(data);
     uint8_t *dst = static_cast<uint8_t *>(mPtr);
     dst += eSize * (xoff + yoff * destW);
+
+    if ((lineSize * eSize * h) != sizeBytes) {
+        rsAssert(!"Allocation::subData called with mismatched size");
+        return;
+    }
+
     for (uint32_t line=yoff; line < (yoff+h); line++) {
         uint8_t * ptr = static_cast<uint8_t *>(mPtr);
         memcpy(dst, src, lineSize);
@@ -152,7 +169,7 @@
 }
 
 void Allocation::subData(uint32_t xoff, uint32_t yoff, uint32_t zoff,
-             uint32_t w, uint32_t h, uint32_t d, const void *data)
+             uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes)
 {
 }
 
@@ -170,7 +187,7 @@
     const Type * type = static_cast<const Type *>(vtype);
 
     Allocation * alloc = new Allocation(type);
-    alloc->incRef();
+    alloc->incUserRef();
     return alloc;
 }
 
@@ -340,7 +357,7 @@
         LOGE("Memory allocation failure");
         return NULL;
     }
-    texAlloc->incRef();
+    texAlloc->incUserRef();
 
     ElementConverter_t cvt = pickConverter(dstFmt, srcFmt);
     cvt(texAlloc->getPtr(), data, w * h);
@@ -451,7 +468,7 @@
 
     RsAllocation vTexAlloc = rsi_AllocationCreateTyped(rsc, type);
     Allocation *texAlloc = static_cast<Allocation *>(vTexAlloc);
-    texAlloc->incRef();
+    texAlloc->incUserRef();
     if (texAlloc == NULL) {
         LOGE("Memory allocation failure");
         fclose(f);
@@ -503,24 +520,24 @@
     return texAlloc;
 }
 
-void rsi_AllocationData(Context *rsc, RsAllocation va, const void *data)
+void rsi_AllocationData(Context *rsc, RsAllocation va, const void *data, uint32_t sizeBytes)
 {
     Allocation *a = static_cast<Allocation *>(va);
-    a->data(data);
+    a->data(data, sizeBytes);
     rsc->allocationCheck(a);
 }
 
-void rsi_Allocation1DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void *data)
+void rsi_Allocation1DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes)
 {
     Allocation *a = static_cast<Allocation *>(va);
-    a->subData(xoff, count, data);
+    a->subData(xoff, count, data, sizeBytes);
     rsc->allocationCheck(a);
 }
 
-void rsi_Allocation2DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data)
+void rsi_Allocation2DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes)
 {
     Allocation *a = static_cast<Allocation *>(va);
-    a->subData(xoff, yoff, w, h, data);
+    a->subData(xoff, yoff, w, h, data, sizeBytes);
     rsc->allocationCheck(a);
 }
 
diff --git a/libs/rs/rsAllocation.h b/libs/rs/rsAllocation.h
index 00af9ed..1f58ec5 100644
--- a/libs/rs/rsAllocation.h
+++ b/libs/rs/rsAllocation.h
@@ -53,12 +53,12 @@
     uint32_t getBufferObjectID() const {return mBufferID;}
 
 
-    void data(const void *data);
-    void subData(uint32_t xoff, uint32_t count, const void *data);
+    void data(const void *data, uint32_t sizeBytes);
+    void subData(uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes);
     void subData(uint32_t xoff, uint32_t yoff,
-                 uint32_t w, uint32_t h, const void *data);
+                 uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes);
     void subData(uint32_t xoff, uint32_t yoff, uint32_t zoff,
-                 uint32_t w, uint32_t h, uint32_t d, const void *data);
+                 uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes);
 
     void read(void *data);
 
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index 52c2b78..c28bd02 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -45,6 +45,7 @@
         configAttribsPtr[1] = 16;
         configAttribsPtr += 2;
     }
+
     configAttribsPtr[0] = EGL_NONE;
     rsAssert(configAttribsPtr < (configAttribs + (sizeof(configAttribs) / sizeof(EGLint))));
 
@@ -53,7 +54,7 @@
 
     status_t err = EGLUtils::selectConfigForNativeWindow(mEGL.mDisplay, configAttribs, mWndSurface, &mEGL.mConfig);
     if (err) {
-     LOGE("couldn't find an EGLConfig matching the screen format\n");
+       LOGE("couldn't find an EGLConfig matching the screen format\n");
     }
     //eglChooseConfig(mEGL.mDisplay, configAttribs, &mEGL.mConfig, 1, &mEGL.mNumConfigs);
 
@@ -76,11 +77,11 @@
     mGL.mRenderer = glGetString(GL_RENDERER);
     mGL.mExtensions = glGetString(GL_EXTENSIONS);
 
-    //LOGV("EGL Version %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
-    //LOGV("GL Version %s", mGL.mVersion);
-    //LOGV("GL Vendor %s", mGL.mVendor);
-    //LOGV("GL Renderer %s", mGL.mRenderer);
-    //LOGV("GL Extensions %s", mGL.mExtensions);
+    LOGV("EGL Version %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
+    LOGV("GL Version %s", mGL.mVersion);
+    LOGV("GL Vendor %s", mGL.mVendor);
+    LOGV("GL Renderer %s", mGL.mRenderer);
+    LOGV("GL Extensions %s", mGL.mExtensions);
 
     if ((strlen((const char *)mGL.mVersion) < 12) || memcmp(mGL.mVersion, "OpenGL ES-CM", 12)) {
         LOGE("Error, OpenGL ES Lite not supported");
@@ -432,7 +433,7 @@
         }
 
         for (size_t ct = 0; ct < mObjDestroy.mDestroyList.size(); ct++) {
-            mObjDestroy.mDestroyList[ct]->decRef();
+            mObjDestroy.mDestroyList[ct]->decUserRef();
         }
         mObjDestroy.mDestroyList.clear();
         mObjDestroy.mNeedToEmpty = false;
@@ -522,7 +523,7 @@
 {
     ObjectBase *ob = static_cast<ObjectBase *>(obj);
     rsc->removeName(ob);
-    ob->decRef();
+    ob->decUserRef();
 }
 
 void rsi_ContextSetDefineF(Context *rsc, const char* name, float value)
diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp
index 389b2c0..6794522 100644
--- a/libs/rs/rsElement.cpp
+++ b/libs/rs/rsElement.cpp
@@ -215,7 +215,7 @@
     rsAssert(!mComponents[idx].get());
     rsAssert(idx < mComponentCount);
     mComponents[idx].set(c);
-    c->incRef();
+    c->incUserRef();
 }
 
 
@@ -387,7 +387,7 @@
 
     rsAssert(sec->mPredefinedList[predef].mEnum == predef);
     Element * e = sec->mPredefinedList[predef].mElement;
-    e->incRef();
+    e->incUserRef();
     return e;
 }
 
@@ -412,7 +412,7 @@
     }
 
     rsc->mStateElement.mComponentBuildList.clear();
-    se->incRef();
+    se->incUserRef();
     return se;
 }
 
diff --git a/libs/rs/rsHandcode.h b/libs/rs/rsHandcode.h
new file mode 100644
index 0000000..800eddd
--- /dev/null
+++ b/libs/rs/rsHandcode.h
@@ -0,0 +1,47 @@
+
+#define DATA_SYNC_SIZE 1024
+
+static inline void rsHCAPI_AllocationData (RsContext rsc, RsAllocation va, const void * data, uint32_t sizeBytes)
+{
+    ThreadIO *io = &((Context *)rsc)->mIO;
+    uint32_t size = sizeof(RS_CMD_AllocationData);
+    if (sizeBytes < DATA_SYNC_SIZE) {
+        size += (sizeBytes + 3) & ~3;
+    }
+    RS_CMD_AllocationData *cmd = static_cast<RS_CMD_AllocationData *>(io->mToCore.reserve(size));
+    cmd->va = va;
+    cmd->bytes = sizeBytes;
+    cmd->data = data;
+    if (sizeBytes < DATA_SYNC_SIZE) {
+        cmd->data = (void *)(cmd+1);
+        memcpy(cmd+1, data, sizeBytes);
+        io->mToCore.commit(RS_CMD_ID_AllocationData, size);
+    } else {
+        io->mToCore.commitSync(RS_CMD_ID_AllocationData, size);
+    }
+}
+
+
+static inline void rsHCAPI_Allocation1DSubData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void * data, uint32_t sizeBytes)
+{
+    ThreadIO *io = &((Context *)rsc)->mIO;
+    uint32_t size = sizeof(RS_CMD_Allocation1DSubData);
+    if (sizeBytes < DATA_SYNC_SIZE) {
+        size += (sizeBytes + 3) & ~3;
+    }
+    RS_CMD_Allocation1DSubData *cmd = static_cast<RS_CMD_Allocation1DSubData *>(io->mToCore.reserve(size));
+    cmd->va = va;
+    cmd->xoff = xoff;
+    cmd->count = count;
+    cmd->data = data;
+    cmd->bytes = sizeBytes;
+    if (sizeBytes < DATA_SYNC_SIZE) {
+        cmd->data = (void *)(cmd+1);
+        memcpy(cmd+1, data, sizeBytes);
+        io->mToCore.commit(RS_CMD_ID_Allocation1DSubData, size);
+    } else {
+        io->mToCore.commitSync(RS_CMD_ID_Allocation1DSubData, size);
+    }
+
+}
+
diff --git a/libs/rs/rsLight.cpp b/libs/rs/rsLight.cpp
index f780e52..ad06c1f 100644
--- a/libs/rs/rsLight.cpp
+++ b/libs/rs/rsLight.cpp
@@ -106,7 +106,7 @@
 {
     Light *l = new Light(rsc->mStateLight.mIsLocal,
                          rsc->mStateLight.mIsMono);
-    l->incRef();
+    l->incUserRef();
     return l;
 }
 
diff --git a/libs/rs/rsObjectBase.cpp b/libs/rs/rsObjectBase.cpp
index 07bbc1e..7e7afab 100644
--- a/libs/rs/rsObjectBase.cpp
+++ b/libs/rs/rsObjectBase.cpp
@@ -21,28 +21,51 @@
 
 ObjectBase::ObjectBase()
 {
-    mRefCount = 0;
+    mUserRefCount = 0;
+    mSysRefCount = 0;
     mName = NULL;
 }
 
 ObjectBase::~ObjectBase()
 {
     //LOGV("~ObjectBase %p  ref %i", this, mRefCount);
-    rsAssert(!mRefCount);
+    rsAssert(!mUserRefCount);
+    rsAssert(!mSysRefCount);
 }
 
-void ObjectBase::incRef() const
+void ObjectBase::incUserRef() const
 {
-    mRefCount ++;
+    mUserRefCount ++;
     //LOGV("ObjectBase %p inc ref %i", this, mRefCount);
 }
 
-void ObjectBase::decRef() const
+void ObjectBase::incSysRef() const
 {
-    rsAssert(mRefCount > 0);
-    mRefCount --;
+    mSysRefCount ++;
+    //LOGV("ObjectBase %p inc ref %i", this, mRefCount);
+}
+
+void ObjectBase::decUserRef() const
+{
+    rsAssert(mUserRefCount > 0);
+    mUserRefCount --;
     //LOGV("ObjectBase %p dec ref %i", this, mRefCount);
-    if (!mRefCount) {
+    if (!(mSysRefCount | mUserRefCount)) {
+        if (mName) {
+            LOGV("Deleting RS object %p, name %s", this, mName);
+        } else {
+            LOGV("Deleting RS object %p, no name", this);
+        }
+        delete this;
+    }
+}
+
+void ObjectBase::decSysRef() const
+{
+    rsAssert(mSysRefCount > 0);
+    mSysRefCount --;
+    //LOGV("ObjectBase %p dec ref %i", this, mRefCount);
+    if (!(mSysRefCount | mUserRefCount)) {
         if (mName) {
             LOGV("Deleting RS object %p, name %s", this, mName);
         } else {
diff --git a/libs/rs/rsObjectBase.h b/libs/rs/rsObjectBase.h
index b2c3338..d1e6baa 100644
--- a/libs/rs/rsObjectBase.h
+++ b/libs/rs/rsObjectBase.h
@@ -30,8 +30,11 @@
     ObjectBase();
     virtual ~ObjectBase();
 
-    void incRef() const;
-    void decRef() const;
+    void incSysRef() const;
+    void decSysRef() const;
+
+    void incUserRef() const;
+    void decUserRef() const;
 
     const char * getName() const {
         return mName;
@@ -41,13 +44,14 @@
 
 private:
     char * mName;
-    mutable int32_t mRefCount;
+    mutable int32_t mSysRefCount;
+    mutable int32_t mUserRefCount;
 
 
 };
 
-template<class T> 
-class ObjectBaseRef 
+template<class T>
+class ObjectBaseRef
 {
 public:
     ObjectBaseRef() {
@@ -57,14 +61,14 @@
     ObjectBaseRef(const ObjectBaseRef &ref) {
         mRef = ref.get();
         if (mRef) {
-            mRef->incRef();
+            mRef->incSysRef();
         }
     }
 
     ObjectBaseRef(T *ref) {
         mRef = ref;
         if (mRef) {
-            ref->incRef();
+            ref->incSysRef();
         }
     }
 
@@ -77,7 +81,7 @@
             clear();
             mRef = ref;
             if (mRef) {
-                ref->incRef();
+                ref->incSysRef();
             }
         }
     }
@@ -88,7 +92,7 @@
 
     void clear() {
         if (mRef) {
-            mRef->decRef();
+            mRef->decSysRef();
         }
         mRef = NULL;
     }
@@ -97,8 +101,8 @@
         return mRef;
     }
 
-    inline T * operator-> () const { 
-        return mRef;  
+    inline T * operator-> () const {
+        return mRef;
     }
 
 protected:
diff --git a/libs/rs/rsProgramFragment.cpp b/libs/rs/rsProgramFragment.cpp
index 654974f..0adce75 100644
--- a/libs/rs/rsProgramFragment.cpp
+++ b/libs/rs/rsProgramFragment.cpp
@@ -227,7 +227,7 @@
 RsProgramFragment rsi_ProgramFragmentCreate(Context *rsc)
 {
     ProgramFragment *pf = rsc->mStateFragment.mPF;
-    pf->incRef();
+    pf->incUserRef();
     rsc->mStateFragment.mPF = 0;
     return pf;
 }
diff --git a/libs/rs/rsProgramFragmentStore.cpp b/libs/rs/rsProgramFragmentStore.cpp
index 36ec615..3179484 100644
--- a/libs/rs/rsProgramFragmentStore.cpp
+++ b/libs/rs/rsProgramFragmentStore.cpp
@@ -251,7 +251,7 @@
 RsProgramFragmentStore rsi_ProgramFragmentStoreCreate(Context *rsc)
 {
     ProgramFragmentStore *pfs = rsc->mStateFragmentStore.mPFS;
-    pfs->incRef();
+    pfs->incUserRef();
     rsc->mStateFragmentStore.mPFS = 0;
     return pfs;
 }
diff --git a/libs/rs/rsProgramVertex.cpp b/libs/rs/rsProgramVertex.cpp
index dc57d34..a07e166 100644
--- a/libs/rs/rsProgramVertex.cpp
+++ b/libs/rs/rsProgramVertex.cpp
@@ -143,10 +143,10 @@
 
     Matrix m;
     m.loadOrtho(0,w, h,0, -1,1);
-    alloc->subData(RS_PROGRAM_VERTEX_PROJECTION_OFFSET, 16, &m.m[0]);
+    alloc->subData(RS_PROGRAM_VERTEX_PROJECTION_OFFSET, 16, &m.m[0], 16*4);
 
     m.loadIdentity();
-    alloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0]);
+    alloc->subData(RS_PROGRAM_VERTEX_MODELVIEW_OFFSET, 16, &m.m[0], 16*4);
 }
 
 
@@ -162,7 +162,7 @@
 RsProgramVertex rsi_ProgramVertexCreate(Context *rsc)
 {
     ProgramVertex *pv = rsc->mStateVertex.mPV;
-    pv->incRef();
+    pv->incUserRef();
     rsc->mStateVertex.mPV = 0;
     return pv;
 }
diff --git a/libs/rs/rsSampler.cpp b/libs/rs/rsSampler.cpp
index 332d532..3f56faa 100644
--- a/libs/rs/rsSampler.cpp
+++ b/libs/rs/rsSampler.cpp
@@ -143,7 +143,7 @@
                               ss->mWrapS,
                               ss->mWrapT,
                               ss->mWrapR);
-    s->incRef();
+    s->incUserRef();
     return s;
 }
 
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp
index 9419829..0c7ac18 100644
--- a/libs/rs/rsScriptC.cpp
+++ b/libs/rs/rsScriptC.cpp
@@ -334,7 +334,7 @@
     ss->runCompiler(rsc);
 
     ScriptC *s = new ScriptC();
-    s->incRef();
+    s->incUserRef();
     s->mAccScript = ss->mAccScript;
     ss->mAccScript = NULL;
     s->mEnviroment = ss->mEnviroment;
diff --git a/libs/rs/rsSimpleMesh.cpp b/libs/rs/rsSimpleMesh.cpp
index 0b745eb..7c73eb9 100644
--- a/libs/rs/rsSimpleMesh.cpp
+++ b/libs/rs/rsSimpleMesh.cpp
@@ -67,7 +67,7 @@
 
     if (mIndexType.get()) {
         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mIndexBuffer->getBufferObjectID());
-        glDrawElements(mGLPrimitive, len, GL_UNSIGNED_SHORT, (GLvoid *)(start * 2));
+        glDrawElements(mGLPrimitive, len, GL_UNSIGNED_SHORT, (uint16_t *)(start * 2));
     } else {
         glDrawArrays(mGLPrimitive, start, len);
     }
@@ -91,7 +91,7 @@
 RsSimpleMesh rsi_SimpleMeshCreate(Context *rsc, RsType prim, RsType idx, RsType *vtx, uint32_t vtxCount, uint32_t primType)
 {
     SimpleMesh *sm = new SimpleMesh();
-    sm->incRef();
+    sm->incUserRef();
 
     sm->mIndexType.set((const Type *)idx);
     sm->mPrimitiveType.set((const Type *)prim);
diff --git a/libs/rs/rsTriangleMesh.cpp b/libs/rs/rsTriangleMesh.cpp
index 99f8adb..64bb71b 100644
--- a/libs/rs/rsTriangleMesh.cpp
+++ b/libs/rs/rsTriangleMesh.cpp
@@ -199,7 +199,7 @@
     memcpy(tm->mIndexData, tmc->mIndexData.array(), tm->mIndexDataSize);
     tm->analyzeElement();
 
-    tm->incRef();
+    tm->incUserRef();
     return tm;
 }
 
diff --git a/libs/rs/rsType.cpp b/libs/rs/rsType.cpp
index 5a9090e..1838fa6 100644
--- a/libs/rs/rsType.cpp
+++ b/libs/rs/rsType.cpp
@@ -252,6 +252,7 @@
 
     uint32_t stride = mElement->getSizeBytes();
     if (mGL.mVtx.size) {
+        //LOGE("va vtx %i %x, %i, %p", mGL.mVtx.size, mGL.mVtx.type, stride, (void *)mGL.mVtx.offset);
         glEnableClientState(GL_VERTEX_ARRAY);
         glVertexPointer(mGL.mVtx.size,
                         mGL.mVtx.type,
@@ -260,9 +261,10 @@
     }
 
     if (mGL.mNorm.size) {
+        //LOGE("va norm %i %x, %i, %p", mGL.mNorm.size, mGL.mNorm.type, stride, (void *)mGL.mNorm.offset);
         glEnableClientState(GL_NORMAL_ARRAY);
         rsAssert(mGL.mNorm.size == 3);
-        glNormalPointer(mGL.mNorm.size,
+        glNormalPointer(mGL.mNorm.type,
                         stride,
                         (void *)mGL.mNorm.offset);
     }
@@ -277,6 +279,7 @@
 
     for (uint32_t ct=0; ct < RS_MAX_TEXTURE; ct++) {
         if (mGL.mTex[ct].size) {
+            //LOGE("va tex%i %i %x, %i, %p", ct, mGL.mTex[ct].size, mGL.mTex[ct].type, stride, (void *)mGL.mTex[ct].offset);
             glClientActiveTexture(GL_TEXTURE0 + ct);
             glEnableClientState(GL_TEXTURE_COORD_ARRAY);
             glTexCoordPointer(mGL.mTex[ct].size,
@@ -361,7 +364,7 @@
     TypeState * stc = &rsc->mStateType;
 
     Type * st = new Type();
-    st->incRef();
+    st->incUserRef();
     st->setDimX(stc->mX);
     st->setDimY(stc->mY);
     st->setDimZ(stc->mZ);
diff --git a/libs/rs/rsg_generator.c b/libs/rs/rsg_generator.c
index e3f816f..74ba248 100644
--- a/libs/rs/rsg_generator.c
+++ b/libs/rs/rsg_generator.c
@@ -141,6 +141,7 @@
     fprintf(f, "\n");
     fprintf(f, "using namespace android;\n");
     fprintf(f, "using namespace android::renderscript;\n");
+    fprintf(f, "#include \"rsHandcode.h\"\n");
     fprintf(f, "\n");
 
     for(ct=0; ct < apiCount; ct++) {
@@ -149,30 +150,39 @@
 
         printFuncDecl(f, api, "rs", 0);
         fprintf(f, "\n{\n");
-        fprintf(f, "    ThreadIO *io = &((Context *)rsc)->mIO;\n");
-        //fprintf(f, "    LOGE(\"add command %s\\n\");\n", api->name);
-        fprintf(f, "    RS_CMD_%s *cmd = static_cast<RS_CMD_%s *>(io->mToCore.reserve(sizeof(RS_CMD_%s)));\n", api->name, api->name, api->name);
-        fprintf(f, "    uint32_t size = sizeof(RS_CMD_%s);\n", api->name);
+        if (api->handcodeApi) {
+            fprintf(f, "    rsHCAPI_%s(rsc", api->name);
+            for(ct2=0; ct2 < api->paramCount; ct2++) {
+                const VarType *vt = &api->params[ct2];
+                fprintf(f, ", %s", vt->name);
+            }
+            fprintf(f, ");\n");
+        } else {
+            fprintf(f, "    ThreadIO *io = &((Context *)rsc)->mIO;\n");
+            //fprintf(f, "    LOGE(\"add command %s\\n\");\n", api->name);
+            fprintf(f, "    RS_CMD_%s *cmd = static_cast<RS_CMD_%s *>(io->mToCore.reserve(sizeof(RS_CMD_%s)));\n", api->name, api->name, api->name);
+            fprintf(f, "    uint32_t size = sizeof(RS_CMD_%s);\n", api->name);
 
-        for(ct2=0; ct2 < api->paramCount; ct2++) {
-            const VarType *vt = &api->params[ct2];
-            needFlush += vt->ptrLevel;
-            fprintf(f, "    cmd->%s = %s;\n", vt->name, vt->name);
-        }
-        if (api->ret.typeName[0]) {
-            needFlush = 1;
-        }
+            for(ct2=0; ct2 < api->paramCount; ct2++) {
+                const VarType *vt = &api->params[ct2];
+                needFlush += vt->ptrLevel;
+                fprintf(f, "    cmd->%s = %s;\n", vt->name, vt->name);
+            }
+            if (api->ret.typeName[0]) {
+                needFlush = 1;
+            }
 
-        fprintf(f, "    io->mToCore.commit");
-        if (needFlush) {
-            fprintf(f, "Sync");
-        }
-        fprintf(f, "(RS_CMD_ID_%s, size);\n", api->name);
+            fprintf(f, "    io->mToCore.commit");
+            if (needFlush) {
+                fprintf(f, "Sync");
+            }
+            fprintf(f, "(RS_CMD_ID_%s, size);\n", api->name);
 
-        if (api->ret.typeName[0]) {
-            fprintf(f, "    return reinterpret_cast<");
-            printVarType(f, &api->ret);
-            fprintf(f, ">(io->mToCoreRet);\n");
+            if (api->ret.typeName[0]) {
+                fprintf(f, "    return reinterpret_cast<");
+                printVarType(f, &api->ret);
+                fprintf(f, ">(io->mToCoreRet);\n");
+            }
         }
         fprintf(f, "};\n\n");
     }
@@ -191,6 +201,7 @@
     fprintf(f, "\n");
     fprintf(f, "namespace android {\n");
     fprintf(f, "namespace renderscript {\n");
+    fprintf(f, "#include \"rsHandcode.h\"\n");
     fprintf(f, "\n");
 
     for(ct=0; ct < apiCount; ct++) {
@@ -198,20 +209,22 @@
 
         fprintf(f, "void rsp_%s(Context *con, const void *vp)\n", api->name);
         fprintf(f, "{\n");
-        //fprintf(f, "    LOGE(\"play command %s\\n\");\n", api->name);
-        fprintf(f, "    const RS_CMD_%s *cmd = static_cast<const RS_CMD_%s *>(vp);\n", api->name, api->name);
-        fprintf(f, "    ");
-        if (api->ret.typeName[0]) {
-            fprintf(f, "con->mIO.mToCoreRet = (intptr_t)");
+        if (api->handcodePlay) {
+            fprintf(f, "    rsHCPLAY_%s(con, vp);\n", api->name);
+        } else {
+            //fprintf(f, "    LOGE(\"play command %s\\n\");\n", api->name);
+            fprintf(f, "    const RS_CMD_%s *cmd = static_cast<const RS_CMD_%s *>(vp);\n", api->name, api->name);
+            fprintf(f, "    ");
+            if (api->ret.typeName[0]) {
+                fprintf(f, "con->mIO.mToCoreRet = (intptr_t)");
+            }
+            fprintf(f, "rsi_%s(con", api->name);
+            for(ct2=0; ct2 < api->paramCount; ct2++) {
+                const VarType *vt = &api->params[ct2];
+                fprintf(f, ",\n           cmd->%s", vt->name);
+            }
+            fprintf(f, ");\n");
         }
-        fprintf(f, "rsi_%s(con", api->name);
-        for(ct2=0; ct2 < api->paramCount; ct2++) {
-            const VarType *vt = &api->params[ct2];
-            fprintf(f, ",");
-            fprintf(f, "\n           cmd->%s", vt->name);
-        }
-        fprintf(f, ");\n");
-
         fprintf(f, "};\n\n");
     }
 
diff --git a/libs/rs/spec.h b/libs/rs/spec.h
index ba802f7..82650a7 100644
--- a/libs/rs/spec.h
+++ b/libs/rs/spec.h
@@ -24,6 +24,8 @@
 typedef struct {
   char name[256];
   int sync;
+  int handcodeApi;
+  int handcodePlay;
   int paramCount;
   VarType ret;
   VarType params[16];
diff --git a/libs/rs/spec.l b/libs/rs/spec.l
index 62fcb63..d81d47e 100644
--- a/libs/rs/spec.l
+++ b/libs/rs/spec.l
@@ -47,6 +47,14 @@
     apis[apiCount].sync = 1;
     }
 
+<api_entry2>"handcodeApi" {
+    apis[apiCount].handcodeApi = 1;
+    }
+
+<api_entry2>"handcodePlay" {
+    apis[apiCount].handcodePlay = 1;
+    }
+
 <api_entry2>"ret" {
     currType = &apis[apiCount].ret;
     typeNextState = api_entry2;
diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp
index df713cb..60c177b 100644
--- a/libs/ui/EventHub.cpp
+++ b/libs/ui/EventHub.cpp
@@ -784,6 +784,7 @@
             int count = mFDCount - i - 1;
             int index = (device->id&ID_MASK);
             mDevicesById[index].device = NULL;
+            close(mFDs[i].fd);
             memmove(mDevices + i, mDevices + i + 1, sizeof(mDevices[0]) * count);
             memmove(mFDs + i, mFDs + i + 1, sizeof(mFDs[0]) * count);
 
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index caf9516..b6c59d6 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -83,4 +83,7 @@
     /* for installing external Location Providers */
     void installLocationProvider(String name, ILocationProvider provider);
     void installGeocodeProvider(IGeocodeProvider provider);
+
+    // for NI support
+    boolean sendNiResponse(int notifId, int userResponse);
 }
diff --git a/location/java/android/location/INetInitiatedListener.aidl b/location/java/android/location/INetInitiatedListener.aidl
new file mode 100755
index 0000000..f2f5a32
--- /dev/null
+++ b/location/java/android/location/INetInitiatedListener.aidl
@@ -0,0 +1,26 @@
+/*

+**

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

+

+/**

+ * {@hide}

+ */

+interface INetInitiatedListener

+{

+    boolean sendNiResponse(int notifId, int userResponse);

+}

diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 8f0352d..8326361 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -1417,4 +1417,20 @@
             Log.e(TAG, "RemoteException in reportLocation: ", e);
         }
     }
+    
+    /**
+     * Used by NetInitiatedActivity to report user response
+     * for network initiated GPS fix requests.
+     *
+     * {@hide}
+     */
+    public boolean sendNiResponse(int notifId, int userResponse) {
+    	try {
+            return mService.sendNiResponse(notifId, userResponse);
+        } catch (RemoteException e) {
+            Log.e(TAG, "RemoteException in sendNiResponse: ", e);
+            return false;
+        }
+    }
+ 
 }
diff --git a/location/java/com/android/internal/location/GpsLocationProvider.java b/location/java/com/android/internal/location/GpsLocationProvider.java
index 0b4fb88..bfa0671 100755
--- a/location/java/com/android/internal/location/GpsLocationProvider.java
+++ b/location/java/com/android/internal/location/GpsLocationProvider.java
@@ -27,6 +27,7 @@
 import android.location.IGpsStatusProvider;
 import android.location.ILocationManager;
 import android.location.ILocationProvider;
+import android.location.INetInitiatedListener;
 import android.location.Location;
 import android.location.LocationManager;
 import android.location.LocationProvider;
@@ -46,14 +47,18 @@
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.location.GpsNetInitiatedHandler;
+import com.android.internal.location.GpsNetInitiatedHandler.GpsNiNotification;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.StringBufferInputStream;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Properties;
+import java.util.Map.Entry;
 
 /**
  * A GPS implementation of LocationProvider used by LocationManager.
@@ -214,6 +219,7 @@
     private String mAGpsApn;
     private int mAGpsDataConnectionState;
     private final ConnectivityManager mConnMgr;
+    private final GpsNetInitiatedHandler mNIHandler; 
 
     // Wakelocks
     private final static String WAKELOCK_KEY = "GpsLocationProvider";
@@ -324,6 +330,7 @@
     public GpsLocationProvider(Context context, ILocationManager locationManager) {
         mContext = context;
         mLocationManager = locationManager;
+        mNIHandler= new GpsNetInitiatedHandler(context, this);
 
         // Create a wake lock
         PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
@@ -1047,6 +1054,96 @@
         }
     }
 
+    //=============================================================
+    // NI Client support
+	//=============================================================
+    private final INetInitiatedListener mNetInitiatedListener = new INetInitiatedListener.Stub() {
+    	// Sends a response for an NI reqeust to HAL.
+    	public boolean sendNiResponse(int notificationId, int userResponse)
+    	{
+        	// TODO Add Permission check
+    		
+    		StringBuilder extrasBuf = new StringBuilder();
+
+    		if (Config.LOGD) Log.d(TAG, "sendNiResponse, notifId: " + notificationId +
+    				", response: " + userResponse);
+    		
+    		native_send_ni_response(notificationId, userResponse);
+    		
+    		return true;
+    	}        
+    };
+        
+    public INetInitiatedListener getNetInitiatedListener() {
+        return mNetInitiatedListener;
+    }
+
+    // Called by JNI function to report an NI request.
+	@SuppressWarnings("deprecation")
+	public void reportNiNotification(
+        	int notificationId,
+        	int niType,
+        	int notifyFlags,
+        	int timeout,
+        	int defaultResponse,
+        	String requestorId,
+        	String text,
+        	int requestorIdEncoding,
+        	int textEncoding,
+        	String extras  // Encoded extra data
+        )
+	{
+		Log.i(TAG, "reportNiNotification: entered");
+		Log.i(TAG, "notificationId: " + notificationId +
+				", niType: " + niType +
+				", notifyFlags: " + notifyFlags +
+				", timeout: " + timeout +
+				", defaultResponse: " + defaultResponse);
+		
+		Log.i(TAG, "requestorId: " + requestorId +
+				", text: " + text +
+				", requestorIdEncoding: " + requestorIdEncoding +
+				", textEncoding: " + textEncoding);
+		
+		GpsNiNotification notification = new GpsNiNotification();
+		
+		notification.notificationId = notificationId;
+		notification.niType = niType;
+		notification.needNotify = (notifyFlags & GpsNetInitiatedHandler.GPS_NI_NEED_NOTIFY) != 0;
+		notification.needVerify = (notifyFlags & GpsNetInitiatedHandler.GPS_NI_NEED_VERIFY) != 0;
+		notification.privacyOverride = (notifyFlags & GpsNetInitiatedHandler.GPS_NI_PRIVACY_OVERRIDE) != 0;
+		notification.timeout = timeout;
+		notification.defaultResponse = defaultResponse;
+		notification.requestorId = requestorId;
+		notification.text = text;
+		notification.requestorIdEncoding = requestorIdEncoding;
+		notification.textEncoding = textEncoding;
+		
+		// Process extras, assuming the format is
+		// one of more lines of "key = value"
+		Bundle bundle = new Bundle();
+		
+		if (extras == null) extras = "";
+		Properties extraProp = new Properties();
+		
+		try {
+			extraProp.load(new StringBufferInputStream(extras));
+		}
+		catch (IOException e)
+		{
+			Log.e(TAG, "reportNiNotification cannot parse extras data: " + extras);
+		}
+		
+		for (Entry<Object, Object> ent : extraProp.entrySet())
+		{
+			bundle.putString((String) ent.getKey(), (String) ent.getValue());
+		}		
+		
+		notification.extras = bundle;
+		
+		mNIHandler.handleNiNotification(notification);		
+	}
+
     private class GpsEventThread extends Thread {
 
         public GpsEventThread() {
@@ -1252,4 +1349,7 @@
     private native void native_agps_data_conn_closed();
     private native void native_agps_data_conn_failed();
     private native void native_set_agps_server(int type, String hostname, int port);
+
+    // Network-initiated (NI) Support
+    private native void native_send_ni_response(int notificationId, int userResponse);
 }
diff --git a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
new file mode 100755
index 0000000..a5466d1
--- /dev/null
+++ b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
@@ -0,0 +1,457 @@
+/*
+ * 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.android.internal.location;
+
+import java.io.UnsupportedEncodingException;
+
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.util.Log;
+
+/**
+ * A GPS Network-initiated Handler class used by LocationManager.
+ *
+ * {@hide}
+ */
+public class GpsNetInitiatedHandler {
+
+    private static final String TAG = "GpsNetInitiatedHandler";
+
+    private static final boolean DEBUG = true;
+    private static final boolean VERBOSE = false;
+
+    // NI verify activity for bringing up UI (not used yet)
+    public static final String ACTION_NI_VERIFY = "android.intent.action.NETWORK_INITIATED_VERIFY";
+    
+    // string constants for defining data fields in NI Intent
+    public static final String NI_INTENT_KEY_NOTIF_ID = "notif_id";
+    public static final String NI_INTENT_KEY_TITLE = "title";
+    public static final String NI_INTENT_KEY_MESSAGE = "message";
+    public static final String NI_INTENT_KEY_TIMEOUT = "timeout";
+    public static final String NI_INTENT_KEY_DEFAULT_RESPONSE = "default_resp";
+    
+    // the extra command to send NI response to GpsLocationProvider
+    public static final String NI_RESPONSE_EXTRA_CMD = "send_ni_response";
+    
+    // the extra command parameter names in the Bundle
+    public static final String NI_EXTRA_CMD_NOTIF_ID = "notif_id";
+    public static final String NI_EXTRA_CMD_RESPONSE = "response";
+    
+    // these need to match GpsNiType constants in gps_ni.h
+    public static final int GPS_NI_TYPE_VOICE = 1;
+    public static final int GPS_NI_TYPE_UMTS_SUPL = 2;
+    public static final int GPS_NI_TYPE_UMTS_CTRL_PLANE = 3;
+    
+    // these need to match GpsUserResponseType constants in gps_ni.h    
+    public static final int GPS_NI_RESPONSE_ACCEPT = 1;
+    public static final int GPS_NI_RESPONSE_DENY = 2;
+    public static final int GPS_NI_RESPONSE_NORESP = 3;    
+    
+    // these need to match GpsNiNotifyFlags constants in gps_ni.h
+    public static final int GPS_NI_NEED_NOTIFY = 0x0001;
+    public static final int GPS_NI_NEED_VERIFY = 0x0002;
+    public static final int GPS_NI_PRIVACY_OVERRIDE = 0x0004;
+    
+    // these need to match GpsNiEncodingType in gps_ni.h
+    public static final int GPS_ENC_NONE = 0;
+    public static final int GPS_ENC_SUPL_GSM_DEFAULT = 1;
+    public static final int GPS_ENC_SUPL_UTF8 = 2;
+    public static final int GPS_ENC_SUPL_UCS2 = 3;
+    public static final int GPS_ENC_UNKNOWN = -1;
+    
+    private final Context mContext;
+    
+    // parent gps location provider
+    private final GpsLocationProvider mGpsLocationProvider;
+    
+    // configuration of notificaiton behavior
+    private boolean mPlaySounds = false;
+    private boolean visible = true;
+    private boolean mPopupImmediately = true;
+    
+    // Set to true if string from HAL is encoded as Hex, e.g., "3F0039"    
+    static private boolean mIsHexInput = true;
+        
+    public static class GpsNiNotification
+    {
+    	int notificationId;
+    	int niType;
+    	boolean needNotify;
+    	boolean needVerify;
+    	boolean privacyOverride;
+    	int timeout;
+    	int defaultResponse;
+    	String requestorId;
+    	String text;
+    	int requestorIdEncoding;
+    	int textEncoding;
+    	Bundle extras;
+    };
+    
+    public static class GpsNiResponse {
+    	/* User reponse, one of the values in GpsUserResponseType */
+    	int userResponse;
+    	/* Optional extra data to pass with the user response */
+    	Bundle extras;
+    };
+    
+    /**
+     * The notification that is shown when a network-initiated notification
+     * (and verification) event is received. 
+     * <p>
+     * This is lazily created, so use {@link #setNINotification()}.
+     */
+    private Notification mNiNotification;
+    
+    public GpsNetInitiatedHandler(Context context, GpsLocationProvider gpsLocationProvider) {
+    	mContext = context;       
+    	mGpsLocationProvider = gpsLocationProvider;
+    }
+    
+    // Handles NI events from HAL
+    public void handleNiNotification(GpsNiNotification notif)
+    {
+    	if (DEBUG) Log.d(TAG, "handleNiNotification" + " notificationId: " + notif.notificationId 
+    			+ " requestorId: " + notif.requestorId + " text: " + notif.text);
+    	
+    	// Notify and verify with immediate pop-up
+    	if (notif.needNotify && notif.needVerify && mPopupImmediately)
+    	{
+    		// Popup the dialog box now
+    		openNiDialog(notif);
+    	}
+    	
+    	// Notify only, or delayed pop-up (change mPopupImmediately to FALSE) 
+    	if (notif.needNotify && !notif.needVerify ||
+    		notif.needNotify && notif.needVerify && !mPopupImmediately) 
+    	{
+    		// Show the notification
+
+    		// if mPopupImmediately == FALSE and needVerify == TRUE, a dialog will be opened
+    		// when the user opens the notification message
+    		
+    		setNiNotification(notif);
+    	}
+    	
+    	// ACCEPT cases: 1. Notify, no verify; 2. no notify, no verify; 3. privacy override.
+    	if ( notif.needNotify && !notif.needVerify || 
+    		!notif.needNotify && !notif.needVerify || 
+    		 notif.privacyOverride)
+    	{
+    		try {
+    			mGpsLocationProvider.getNetInitiatedListener().sendNiResponse(notif.notificationId, GPS_NI_RESPONSE_ACCEPT);
+    		} 
+    		catch (RemoteException e)
+    		{
+    			Log.e(TAG, e.getMessage());
+    		}
+    	}
+    	
+    	//////////////////////////////////////////////////////////////////////////
+    	//   A note about timeout
+    	//   According to the protocol, in the need_notify and need_verify case,
+    	//   a default response should be sent when time out.
+    	//   
+    	//   In some GPS hardware, the GPS driver (under HAL) can handle the timeout case
+    	//   and this class GpsNetInitiatedHandler does not need to do anything.
+    	//   
+    	//   However, the UI should at least close the dialog when timeout. Further, 
+    	//   for more general handling, timeout response should be added to the Handler here.
+    	//    	    	
+    }
+    
+    // Sets the NI notification.
+    private synchronized void setNiNotification(GpsNiNotification notif) {
+        NotificationManager notificationManager = (NotificationManager) mContext
+                .getSystemService(Context.NOTIFICATION_SERVICE);
+        if (notificationManager == null) {
+            return;
+        }
+      
+    	String title = getNotifTitle(notif);
+    	String message = getNotifMessage(notif);
+        
+        if (DEBUG) Log.d(TAG, "setNiNotification, notifyId: " + notif.notificationId +
+        		", title: " + title +
+        		", message: " + message);
+        
+    	// Construct Notification
+    	if (mNiNotification == null) {
+        	mNiNotification = new Notification();
+        	mNiNotification.icon = com.android.internal.R.drawable.stat_sys_gps_on; /* Change notification icon here */
+        	mNiNotification.when = 0;
+        }
+    	
+        if (mPlaySounds) {
+        	mNiNotification.defaults |= Notification.DEFAULT_SOUND;
+        } else {
+        	mNiNotification.defaults &= ~Notification.DEFAULT_SOUND;
+        }        
+        
+        mNiNotification.flags = Notification.FLAG_ONGOING_EVENT;
+        mNiNotification.tickerText = getNotifTicker(notif);
+        
+        // if not to popup dialog immediately, pending intent will open the dialog
+        Intent intent = !mPopupImmediately ? getDlgIntent(notif) : new Intent();    	        
+        PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, intent, 0);                
+        mNiNotification.setLatestEventInfo(mContext, title, message, pi);
+        
+        if (visible) {
+            notificationManager.notify(notif.notificationId, mNiNotification);
+        } else {
+            notificationManager.cancel(notif.notificationId);
+        }
+    }
+    
+    // Opens the notification dialog and waits for user input
+    private void openNiDialog(GpsNiNotification notif) 
+    {
+    	Intent intent = getDlgIntent(notif);
+    	
+    	if (DEBUG) Log.d(TAG, "openNiDialog, notifyId: " + notif.notificationId + 
+    			", requestorId: " + notif.requestorId + 
+    			", text: " + notif.text);               	
+
+    	mContext.startActivity(intent);
+    }
+    
+    // Construct the intent for bringing up the dialog activity, which shows the 
+    // notification and takes user input
+    private Intent getDlgIntent(GpsNiNotification notif)
+    {
+    	Intent intent = new Intent();
+    	String title = getDialogTitle(notif);
+    	String message = getDialogMessage(notif);
+    	
+    	// directly bring up the NI activity
+    	intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+    	intent.setClass(mContext, com.android.internal.app.NetInitiatedActivity.class);    	
+
+    	// put data in the intent
+    	intent.putExtra(NI_INTENT_KEY_NOTIF_ID, notif.notificationId);    	
+    	intent.putExtra(NI_INTENT_KEY_TITLE, title);
+    	intent.putExtra(NI_INTENT_KEY_MESSAGE, message);
+    	intent.putExtra(NI_INTENT_KEY_TIMEOUT, notif.timeout);
+    	intent.putExtra(NI_INTENT_KEY_DEFAULT_RESPONSE, notif.defaultResponse);
+    	
+    	if (DEBUG) Log.d(TAG, "generateIntent, title: " + title + ", message: " + message +
+    			", timeout: " + notif.timeout);
+    	
+    	return intent;
+    }
+    
+    // Converts a string (or Hex string) to a char array
+    static byte[] stringToByteArray(String original, boolean isHex)
+    {
+    	int length = isHex ? original.length() / 2 : original.length();
+    	byte[] output = new byte[length];
+    	int i;
+    	
+    	if (isHex)
+    	{
+    		for (i = 0; i < length; i++)
+    		{
+    			output[i] = (byte) Integer.parseInt(original.substring(i*2, i*2+2), 16);
+    		}
+    	}
+    	else {
+    		for (i = 0; i < length; i++)
+    		{
+    			output[i] = (byte) original.charAt(i);
+    		}
+    	}
+    	
+    	return output;
+    }
+    
+    /**
+     * Unpacks an byte array containing 7-bit packed characters into a String.
+     * 
+     * @param input a 7-bit packed char array
+     * @return the unpacked String
+     */
+    static String decodeGSMPackedString(byte[] input)
+    {
+    	final char CHAR_CR = 0x0D;
+    	int nStridx = 0;
+    	int nPckidx = 0;
+    	int num_bytes = input.length;
+    	int cPrev = 0;
+    	int cCurr = 0;
+    	byte nShift;
+    	byte nextChar;
+    	byte[] stringBuf = new byte[input.length * 2]; 
+    	String result = "";
+    	
+    	while(nPckidx < num_bytes)
+    	{
+    		nShift = (byte) (nStridx & 0x07);
+    		cCurr = input[nPckidx++];
+    		if (cCurr < 0) cCurr += 256;
+
+    		/* A 7-bit character can be split at the most between two bytes of packed
+    		 ** data.
+    		 */
+    		nextChar = (byte) (( (cCurr << nShift) | (cPrev >> (8-nShift)) ) & 0x7F);
+    		stringBuf[nStridx++] = nextChar;
+
+    		/* Special case where the whole of the next 7-bit character fits inside
+    		 ** the current byte of packed data.
+    		 */
+    		if(nShift == 6)
+    		{
+    			/* If the next 7-bit character is a CR (0x0D) and it is the last
+    			 ** character, then it indicates a padding character. Drop it.
+    			 */
+    			if (nPckidx == num_bytes || (cCurr >> 1) == CHAR_CR)
+    			{
+    				break;
+    			}
+    			
+    			nextChar = (byte) (cCurr >> 1); 
+    			stringBuf[nStridx++] = nextChar;
+    		}
+
+    		cPrev = cCurr;
+    	}
+    	
+    	try{
+    		result = new String(stringBuf, 0, nStridx, "US-ASCII");
+    	}
+    	catch (UnsupportedEncodingException e)
+    	{
+    		Log.e(TAG, e.getMessage());
+    	}
+    	
+    	return result;
+    }
+    
+    static String decodeUTF8String(byte[] input)
+    {
+    	String decoded = "";
+    	try {
+    		decoded = new String(input, "UTF-8");
+    	}
+    	catch (UnsupportedEncodingException e)
+    	{ 
+    		Log.e(TAG, e.getMessage());
+    	} 
+		return decoded;
+    }
+    
+    static String decodeUCS2String(byte[] input)
+    {
+    	String decoded = "";
+    	try {
+    		decoded = new String(input, "UTF-16");
+    	}
+    	catch (UnsupportedEncodingException e)
+    	{ 
+    		Log.e(TAG, e.getMessage());
+    	} 
+		return decoded;
+    }
+    
+    /** Decode NI string
+     * 
+     * @param original   The text string to be decoded
+     * @param isHex      Specifies whether the content of the string has been encoded as a Hex string. Encoding
+     *                   a string as Hex can allow zeros inside the coded text. 
+     * @param coding     Specifies the coding scheme of the string, such as GSM, UTF8, UCS2, etc. This coding scheme
+     * 					 needs to match those used passed to HAL from the native GPS driver. Decoding is done according
+     *                   to the <code> coding </code>, after a Hex string is decoded. Generally, if the
+     *                   notification strings don't need further decoding, <code> coding </code> encoding can be 
+     *                   set to -1, and <code> isHex </code> can be false.
+     * @return the decoded string
+     */
+    static private String decodeString(String original, boolean isHex, int coding)
+    {
+    	String decoded = original;
+    	byte[] input = stringToByteArray(original, isHex);
+
+    	switch (coding) {
+    	case GPS_ENC_NONE:
+    		decoded = original;
+    		break;
+    		
+    	case GPS_ENC_SUPL_GSM_DEFAULT:
+    		decoded = decodeGSMPackedString(input);
+    		break;
+    		
+    	case GPS_ENC_SUPL_UTF8:
+    		decoded = decodeUTF8String(input);
+    		break;
+    		
+    	case GPS_ENC_SUPL_UCS2:
+    		decoded = decodeUCS2String(input);
+    		break;
+    		
+    	case GPS_ENC_UNKNOWN:
+    		decoded = original;
+    		break;
+    		
+    	default:
+    		Log.e(TAG, "Unknown encoding " + coding + " for NI text " + original);
+    		break;
+    	}
+    	return decoded;
+    }
+    
+    // change this to configure notification display
+    static private String getNotifTicker(GpsNiNotification notif)
+    {
+    	String ticker = String.format("Position request! ReqId: [%s] ClientName: [%s]",
+    			decodeString(notif.requestorId, mIsHexInput, notif.requestorIdEncoding),
+    			decodeString(notif.text, mIsHexInput, notif.textEncoding));
+    	return ticker;
+    }
+    
+    // change this to configure notification display
+    static private String getNotifTitle(GpsNiNotification notif)
+    {
+    	String title = String.format("Position Request");
+    	return title;
+    }
+    
+    // change this to configure notification display
+    static private String getNotifMessage(GpsNiNotification notif)
+    {
+    	String message = String.format(
+    			"NI Request received from [%s] for client [%s]!", 
+    			decodeString(notif.requestorId, mIsHexInput, notif.requestorIdEncoding),
+    			decodeString(notif.text, mIsHexInput, notif.textEncoding));
+    	return message;
+    }       
+    
+    // change this to configure dialog display (for verification)
+    static public String getDialogTitle(GpsNiNotification notif)
+    {
+    	return getNotifTitle(notif);
+    }
+    
+    // change this to configure dialog display (for verification)
+    static private String getDialogMessage(GpsNiNotification notif)
+    {
+    	return getNotifMessage(notif);
+    }
+    
+}
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index d1b9351..754d5a2 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -1381,7 +1381,8 @@
                             address);
                     mConnectedDevices.remove(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP);
                 } else if (!isConnected &&
-                           (state == BluetoothA2dp.STATE_CONNECTED || state != BluetoothA2dp.STATE_PLAYING)){
+                             (state == BluetoothA2dp.STATE_CONNECTED ||
+                              state == BluetoothA2dp.STATE_PLAYING)) {
                     AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP,
                                                          AudioSystem.DEVICE_STATE_AVAILABLE,
                                                          address);
diff --git a/media/libmedia/AudioSystem.cpp b/media/libmedia/AudioSystem.cpp
index 98b55e9..bd1b2d7 100644
--- a/media/libmedia/AudioSystem.cpp
+++ b/media/libmedia/AudioSystem.cpp
@@ -883,5 +883,15 @@
     return result;
 }
 
+status_t AudioParameter::getAt(size_t index, String8& key, String8& value)
+{
+    if (mParameters.size() > index) {
+        key = mParameters.keyAt(index);
+        value = mParameters.valueAt(index);
+        return NO_ERROR;
+    } else {
+        return BAD_VALUE;
+    }
+}
 }; // namespace android
 
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 0c40b91..20b0da2 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -26,7 +26,6 @@
         AudioPlayer.cpp           \
         ESDS.cpp                  \
         OMXClient.cpp             \
-        OMXDecoder.cpp            \
         string.cpp
 
 LOCAL_C_INCLUDES:= \
diff --git a/media/libstagefright/MediaPlayerImpl.cpp b/media/libstagefright/MediaPlayerImpl.cpp
index e5301bb..2e609e3 100644
--- a/media/libstagefright/MediaPlayerImpl.cpp
+++ b/media/libstagefright/MediaPlayerImpl.cpp
@@ -33,14 +33,11 @@
 #include <media/stagefright/MetaData.h>
 #include <media/stagefright/MmapSource.h>
 #include <media/stagefright/OMXCodec.h>
-#include <media/stagefright/OMXDecoder.h>
 #include <media/stagefright/ShoutcastSource.h>
 #include <media/stagefright/TimeSource.h>
 #include <ui/PixelFormat.h>
 #include <ui/Surface.h>
 
-#define USE_OMX_CODEC   1
-
 namespace android {
 
 MediaPlayerImpl::MediaPlayerImpl(const char *uri)
@@ -406,13 +403,8 @@
 
     sp<MetaData> meta = source->getFormat();
 
-#if !USE_OMX_CODEC
-    mAudioDecoder = OMXDecoder::Create(
-            &mClient, meta, false /* createEncoder */, source);
-#else
     mAudioDecoder = OMXCodec::Create(
             mClient.interface(), meta, false /* createEncoder */, source);
-#endif
 }
 
 void MediaPlayerImpl::setVideoSource(const sp<MediaSource> &source) {
@@ -427,13 +419,8 @@
     success = meta->findInt32(kKeyHeight, &mVideoHeight);
     CHECK(success);
 
-#if !USE_OMX_CODEC
-    mVideoDecoder = OMXDecoder::Create(
-            &mClient, meta, false /* createEncoder */, source);
-#else
     mVideoDecoder = OMXCodec::Create(
             mClient.interface(), meta, false /* createEncoder */, source);
-#endif
 
     if (mISurface.get() != NULL || mSurface.get() != NULL) {
         depopulateISurface();
diff --git a/media/libstagefright/OMXClient.cpp b/media/libstagefright/OMXClient.cpp
index 2a32b4c..dba7a2a 100644
--- a/media/libstagefright/OMXClient.cpp
+++ b/media/libstagefright/OMXClient.cpp
@@ -18,11 +18,8 @@
 #define LOG_TAG "OMXClient"
 #include <utils/Log.h>
 
-#include <sys/socket.h>
-
 #include <binder/IServiceManager.h>
 #include <media/IMediaPlayerService.h>
-#include <media/IOMX.h>
 #include <media/stagefright/MediaDebug.h>
 #include <media/stagefright/OMXClient.h>
 
@@ -31,13 +28,7 @@
 OMXClient::OMXClient() {
 }
 
-OMXClient::~OMXClient() {
-    disconnect();
-}
-
 status_t OMXClient::connect() {
-    Mutex::Autolock autoLock(mLock);
-
     sp<IServiceManager> sm = defaultServiceManager();
     sp<IBinder> binder = sm->getService(String16("media.player"));
     sp<IMediaPlayerService> service = interface_cast<IMediaPlayerService>(binder);
@@ -47,175 +38,10 @@
     mOMX = service->createOMX();
     CHECK(mOMX.get() != NULL);
 
-    mReflector = new OMXClientReflector(this);
-
     return OK;
 }
 
 void OMXClient::disconnect() {
-    Mutex::Autolock autoLock(mLock);
-
-    if (mReflector.get() != NULL) {
-        return;
-    }
-
-    CHECK(mObservers.isEmpty());
-
-    mReflector->reset();
-    mReflector.clear();
-}
-
-status_t OMXClient::registerObserver(
-        IOMX::node_id node, OMXObserver *observer) {
-    Mutex::Autolock autoLock(&mLock);
-
-    ssize_t index = mObservers.indexOfKey(node);
-    if (index >= 0) {
-        return UNKNOWN_ERROR;
-    }
-
-    mObservers.add(node, observer);
-    observer->start();
-
-    mOMX->observe_node(node, mReflector);
-
-    return OK;
-}
-
-void OMXClient::unregisterObserver(IOMX::node_id node) {
-    Mutex::Autolock autoLock(mLock);
-
-    ssize_t index = mObservers.indexOfKey(node);
-    CHECK(index >= 0);
-
-    if (index < 0) {
-        return;
-    }
-
-    OMXObserver *observer = mObservers.valueAt(index);
-    observer->stop();
-    mObservers.removeItemsAt(index);
-}
-
-bool OMXClient::onOMXMessage(const omx_message &msg) {
-    bool done = false;
-
-    switch (msg.type) {
-        case omx_message::EVENT:
-        {
-            LOGV("OnEvent node:%p event:%d data1:%ld data2:%ld",
-                 msg.u.event_data.node,
-                 msg.u.event_data.event,
-                 msg.u.event_data.data1,
-                 msg.u.event_data.data2);
-
-            break;
-        }
-
-        case omx_message::FILL_BUFFER_DONE:
-        {
-            LOGV("FillBufferDone %p", msg.u.extended_buffer_data.buffer);
-            break;
-        }
-
-        case omx_message::EMPTY_BUFFER_DONE:
-        {
-            LOGV("EmptyBufferDone %p", msg.u.buffer_data.buffer);
-            break;
-        }
-
-        default:
-            LOGE("received unknown omx_message type %d", msg.type);
-            break;
-    }
-
-    Mutex::Autolock autoLock(mLock);
-    ssize_t index = mObservers.indexOfKey(msg.node);
-
-    if (index >= 0) {
-        mObservers.editValueAt(index)->postMessage(msg);
-    }
-
-    return done;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-OMXObserver::OMXObserver() {
-}
-
-OMXObserver::~OMXObserver() {
-}
-
-void OMXObserver::start() {
-    pthread_attr_t attr;
-    pthread_attr_init(&attr);
-    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-
-    int err = pthread_create(&mThread, &attr, ThreadWrapper, this);
-    CHECK_EQ(err, 0);
-
-    pthread_attr_destroy(&attr);
-}
-
-void OMXObserver::stop() {
-    omx_message msg;
-    msg.type = omx_message::QUIT_OBSERVER;
-    postMessage(msg);
-
-    void *dummy;
-    pthread_join(mThread, &dummy);
-}
-
-void OMXObserver::postMessage(const omx_message &msg) {
-    Mutex::Autolock autoLock(mLock);
-    mQueue.push_back(msg);
-    mQueueNotEmpty.signal();
-}
-
-// static
-void *OMXObserver::ThreadWrapper(void *me) {
-    static_cast<OMXObserver *>(me)->threadEntry();
-
-    return NULL;
-}
-
-void OMXObserver::threadEntry() {
-    for (;;) {
-        omx_message msg;
-
-        {
-            Mutex::Autolock autoLock(mLock);
-            while (mQueue.empty()) {
-                mQueueNotEmpty.wait(mLock);
-            }
-
-            msg = *mQueue.begin();
-            mQueue.erase(mQueue.begin());
-        }
-
-        if (msg.type == omx_message::QUIT_OBSERVER) {
-            break;
-        }
-
-        onOMXMessage(msg);
-    }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-OMXClientReflector::OMXClientReflector(OMXClient *client)
-    : mClient(client) {
-}
-
-void OMXClientReflector::on_message(const omx_message &msg) {
-    if (mClient != NULL) {
-        mClient->onOMXMessage(msg);
-    }
-}
-
-void OMXClientReflector::reset() {
-    mClient = NULL;
 }
 
 }  // namespace android
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 90ebd7e..eaad4fc 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -499,15 +499,25 @@
     // Enabling this code appears to be the right thing(tm), but,...
     // the TI decoder then loses the ability to output YUV420 and only outputs
     // YCbYCr (16bit)
+
 #if 1
-    if (!strcmp("OMX.TI.Video.Decoder", mComponentName)
-        && !strcasecmp("video/avc", mime)) {
+    if (!strcmp("OMX.TI.Video.Decoder", mComponentName)) {
         OMX_PARAM_COMPONENTROLETYPE role;
         role.nSize = sizeof(role);
         role.nVersion.s.nVersionMajor = 1;
         role.nVersion.s.nVersionMinor = 1;
-        strncpy((char *)role.cRole, "video_decoder.avc",
-                OMX_MAX_STRINGNAME_SIZE - 1);
+
+        if (!strcasecmp("video/avc", mime)) {
+            strncpy((char *)role.cRole, "video_decoder.avc",
+                    OMX_MAX_STRINGNAME_SIZE - 1);
+        } else if (!strcasecmp("video/mp4v-es", mime)) {
+            strncpy((char *)role.cRole, "video_decoder.mpeg4",
+                    OMX_MAX_STRINGNAME_SIZE - 1);
+        } else if (!strcasecmp("video/3gpp", mime)) {
+            strncpy((char *)role.cRole, "video_decoder.h263",
+                    OMX_MAX_STRINGNAME_SIZE - 1);
+        }
+
         role.cRole[OMX_MAX_STRINGNAME_SIZE - 1] = '\0';
 
         status_t err = mOMX->set_parameter(
@@ -634,6 +644,7 @@
       mSource(source),
       mCodecSpecificDataIndex(0),
       mState(LOADED),
+      mInitialBufferSubmit(true),
       mSignalledEOS(false),
       mNoMoreOutputData(false),
       mSeekTimeUs(-1) {
@@ -666,7 +677,7 @@
 }
 
 status_t OMXCodec::init() {
-    Mutex::Autolock autoLock(mLock);
+    // mLock is held.
 
     CHECK_EQ(mState, LOADED);
 
@@ -1107,8 +1118,11 @@
 
             setState(EXECUTING);
 
-            drainInputBuffers();
-            fillOutputBuffers();
+            // Buffers will be submitted to the component in the first
+            // call to OMXCodec::read as mInitialBufferSubmit is true at
+            // this point. This ensures that this on_message call returns,
+            // releases the lock and ::init can notice the state change and
+            // itself return.
             break;
         }
 
@@ -1258,7 +1272,7 @@
 }
 
 void OMXCodec::drainInputBuffers() {
-    CHECK_EQ(mState, EXECUTING);
+    CHECK(mState == EXECUTING || mState == RECONFIGURING);
 
     Vector<BufferInfo> *buffers = &mPortBuffers[kPortIndexInput];
     for (size_t i = 0; i < buffers->size(); ++i) {
@@ -1603,6 +1617,8 @@
 }
 
 status_t OMXCodec::start(MetaData *) {
+    Mutex::Autolock autoLock(mLock);
+
     if (mState != LOADED) {
         return UNKNOWN_ERROR;
     }
@@ -1618,6 +1634,7 @@
     }
 
     mCodecSpecificDataIndex = 0;
+    mInitialBufferSubmit = true;
     mSignalledEOS = false;
     mNoMoreOutputData = false;
     mSeekTimeUs = -1;
@@ -1703,6 +1720,18 @@
         return UNKNOWN_ERROR;
     }
 
+    if (mInitialBufferSubmit) {
+        mInitialBufferSubmit = false;
+
+        drainInputBuffers();
+
+        if (mState == EXECUTING) {
+            // Otherwise mState == RECONFIGURING and this code will trigger
+            // after the output port is reenabled.
+            fillOutputBuffers();
+        }
+    }
+
     int64_t seekTimeUs;
     if (options && options->getSeekTo(&seekTimeUs)) {
         LOGV("seeking to %lld us (%.2f secs)", seekTimeUs, seekTimeUs / 1E6);
diff --git a/media/libstagefright/OMXDecoder.cpp b/media/libstagefright/OMXDecoder.cpp
deleted file mode 100644
index a3172ed..0000000
--- a/media/libstagefright/OMXDecoder.cpp
+++ /dev/null
@@ -1,1650 +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.
- */
-
-//#define LOG_NDEBUG 0
-#define LOG_TAG "OMXDecoder"
-#include <utils/Log.h>
-
-#include <ctype.h>
-
-#include <OMX_Component.h>
-
-#include <media/stagefright/ESDS.h>
-#include <media/stagefright/MediaDebug.h>
-#include <media/stagefright/MetaData.h>
-#include <media/stagefright/OMXDecoder.h>
-
-namespace android {
-
-class OMXMediaBuffer : public MediaBuffer {
-public:
-    OMXMediaBuffer(IOMX::buffer_id buffer_id, const sp<IMemory> &mem)
-        : MediaBuffer(mem->pointer(),
-                      mem->size()),
-          mBufferID(buffer_id),
-          mMem(mem) {
-    }
-
-    IOMX::buffer_id buffer_id() const { return mBufferID; }
-
-private:
-    IOMX::buffer_id mBufferID;
-    sp<IMemory> mMem;
-
-    OMXMediaBuffer(const OMXMediaBuffer &);
-    OMXMediaBuffer &operator=(const OMXMediaBuffer &);
-};
-
-struct CodecInfo {
-    const char *mime;
-    const char *codec;
-};
-
-static const CodecInfo kDecoderInfo[] = {
-    { "audio/mpeg", "OMX.TI.MP3.decode" },
-    { "audio/mpeg", "OMX.PV.mp3dec" },
-    { "audio/3gpp", "OMX.TI.AMR.decode" },
-    { "audio/3gpp", "OMX.PV.amrdec" },
-    { "audio/mp4a-latm", "OMX.TI.AAC.decode" },
-    { "audio/mp4a-latm", "OMX.PV.aacdec" },
-    { "video/mp4v-es", "OMX.qcom.video.decoder.mpeg4" },
-    { "video/mp4v-es", "OMX.TI.Video.Decoder" },
-    { "video/mp4v-es", "OMX.PV.mpeg4dec" },
-    { "video/3gpp", "OMX.qcom.video.decoder.h263" },
-    { "video/3gpp", "OMX.TI.Video.Decoder" },
-    { "video/3gpp", "OMX.PV.h263dec" },
-    { "video/avc", "OMX.qcom.video.decoder.avc" },
-    { "video/avc", "OMX.TI.Video.Decoder" },
-    { "video/avc", "OMX.PV.avcdec" },
-};
-
-static const CodecInfo kEncoderInfo[] = {
-    { "audio/3gpp", "OMX.PV.amrencnb" },
-    { "audio/mp4a-latm", "OMX.PV.aacenc" },
-    { "video/mp4v-es", "OMX.qcom.video.encoder.mpeg4" },
-    { "video/mp4v-es", "OMX.TI.Video.encoder" },
-    { "video/mp4v-es", "OMX.PV.mpeg4enc" },
-    { "video/3gpp", "OMX.qcom.video.encoder.h263" },
-    { "video/3gpp", "OMX.TI.Video.encoder" },
-    { "video/3gpp", "OMX.PV.h263enc" },
-    { "video/avc", "OMX.TI.Video.encoder" },
-    { "video/avc", "OMX.PV.avcenc" },
-};
-
-static const char *GetCodec(const CodecInfo *info, size_t numInfos,
-                            const char *mime, int index) {
-    CHECK(index >= 0);
-    for(size_t i = 0; i < numInfos; ++i) {
-        if (!strcasecmp(mime, info[i].mime)) {
-            if (index == 0) {
-                return info[i].codec;
-            }
-
-            --index;
-        }
-    }
-
-    return NULL;
-}
-
-// static
-sp<OMXDecoder> OMXDecoder::Create(
-        OMXClient *client, const sp<MetaData> &meta,
-        bool createEncoder,
-        const sp<MediaSource> &source) {
-    const char *mime;
-    bool success = meta->findCString(kKeyMIMEType, &mime);
-    CHECK(success);
-
-    sp<IOMX> omx = client->interface();
-
-    const char *codec = NULL;
-    IOMX::node_id node = 0;
-    for (int index = 0;; ++index) {
-        if (createEncoder) {
-            codec = GetCodec(
-                    kEncoderInfo, sizeof(kEncoderInfo) / sizeof(kEncoderInfo[0]),
-                    mime, index);
-        } else {
-            codec = GetCodec(
-                    kDecoderInfo, sizeof(kDecoderInfo) / sizeof(kDecoderInfo[0]),
-                    mime, index);
-        }
-
-        if (!codec) {
-            return NULL;
-        }
-
-        LOGI("Attempting to allocate OMX node '%s'", codec);
-
-        status_t err = omx->allocate_node(codec, &node);
-        if (err == OK) {
-            break;
-        }
-    }
-
-    uint32_t quirks = 0;
-    if (!strcmp(codec, "OMX.PV.avcdec")) {
-        quirks |= kWantsNALFragments;
-    }
-    if (!strcmp(codec, "OMX.TI.AAC.decode")
-        || !strcmp(codec, "OMX.TI.MP3.decode")) {
-        quirks |= kDoesntReturnBuffersOnDisable;
-    }
-    if (!strcmp(codec, "OMX.TI.AAC.decode")) {
-        quirks |= kDoesntFlushOnExecutingToIdle;
-        quirks |= kDoesntProperlyFlushAllPortsAtOnce;
-    }
-    if (!strncmp(codec, "OMX.qcom.video.encoder.", 23)) {
-        quirks |= kRequiresAllocateBufferOnInputPorts;
-    }
-    if (!strncmp(codec, "OMX.qcom.video.decoder.", 23)) {
-        quirks |= kRequiresAllocateBufferOnOutputPorts;
-    }
-    if (!strncmp(codec, "OMX.qcom.video.", 15)) {
-        quirks |= kRequiresLoadedToIdleAfterAllocation;
-    }
-
-    sp<OMXDecoder> decoder = new OMXDecoder(
-            client, node, mime, codec, createEncoder, quirks,
-            source);
-
-    uint32_t type;
-    const void *data;
-    size_t size;
-    if (meta->findData(kKeyESDS, &type, &data, &size)) {
-        ESDS esds((const char *)data, size);
-        CHECK_EQ(esds.InitCheck(), OK);
-
-        const void *codec_specific_data;
-        size_t codec_specific_data_size;
-        esds.getCodecSpecificInfo(
-                &codec_specific_data, &codec_specific_data_size);
-
-        printf("found codec specific data of size %d\n",
-               codec_specific_data_size);
-
-        decoder->addCodecSpecificData(
-                codec_specific_data, codec_specific_data_size);
-    } else if (meta->findData(kKeyAVCC, &type, &data, &size)) {
-        printf("found avcc of size %d\n", size);
-
-        const uint8_t *ptr = (const uint8_t *)data + 6;
-        size -= 6;
-        while (size >= 2) {
-            size_t length = ptr[0] << 8 | ptr[1];
-
-            ptr += 2;
-            size -= 2;
-
-            // printf("length = %d, size = %d\n", length, size);
-
-            CHECK(size >= length);
-
-            decoder->addCodecSpecificData(ptr, length);
-
-            ptr += length;
-            size -= length;
-
-            if (size <= 1) {
-                break;
-            }
-
-            ptr++;  // XXX skip trailing 0x01 byte???
-            --size;
-        }
-    }
-
-    return decoder;
-}
-
-OMXDecoder::OMXDecoder(OMXClient *client, IOMX::node_id node,
-                       const char *mime, const char *codec,
-                       bool is_encoder,
-                       uint32_t quirks,
-                       const sp<MediaSource> &source)
-    : mClient(client),
-      mOMX(mClient->interface()),
-      mNode(node),
-      mComponentName(strdup(codec)),
-      mMIME(strdup(mime)),
-      mIsMP3(!strcasecmp(mime, "audio/mpeg")),
-      mIsAVC(!strcasecmp(mime, "video/avc")),
-      mIsEncoder(is_encoder),
-      mQuirks(quirks),
-      mSource(source),
-      mCodecSpecificDataIterator(mCodecSpecificData.begin()),
-      mState(OMX_StateLoaded),
-      mPortStatusMask(kPortStatusActive << 2 | kPortStatusActive),
-      mShutdownInitiated(false),
-      mDealer(new MemoryDealer(5 * 1024 * 1024)),
-      mSeeking(false),
-      mStarted(false),
-      mErrorCondition(OK),
-      mReachedEndOfInput(false) {
-    mClient->registerObserver(mNode, this);
-
-    mBuffers.push();  // input buffers
-    mBuffers.push();  // output buffers
-
-    setup();
-}
-
-OMXDecoder::~OMXDecoder() {
-    if (mStarted) {
-        stop();
-    }
-
-    for (List<CodecSpecificData>::iterator it = mCodecSpecificData.begin();
-         it != mCodecSpecificData.end(); ++it) {
-        free((*it).data);
-    }
-    mCodecSpecificData.clear();
-
-    mClient->unregisterObserver(mNode);
-
-    status_t err = mOMX->free_node(mNode);
-    CHECK_EQ(err, OK);
-    mNode = 0;
-
-    free(mMIME);
-    mMIME = NULL;
-
-    free(mComponentName);
-    mComponentName = NULL;
-}
-
-status_t OMXDecoder::start(MetaData *) {
-    CHECK(!mStarted);
-
-    // mDealer->dump("Decoder Dealer");
-
-    sp<MetaData> params = new MetaData;
-    if (mQuirks & kWantsNALFragments) {
-        params->setInt32(kKeyWantsNALFragments, true);
-    }
-
-    status_t err = mSource->start(params.get());
-
-    if (err != OK) {
-        return err;
-    }
-
-    postStart();
-
-    mStarted = true;
-
-    return OK;
-}
-
-status_t OMXDecoder::stop() {
-    CHECK(mStarted);
-
-    LOGI("Initiating OMX Node shutdown, busy polling.");
-    initiateShutdown();
-
-    // Important: initiateShutdown must be called first, _then_ release
-    // buffers we're holding onto.
-    while (!mOutputBuffers.empty()) {
-        MediaBuffer *buffer = *mOutputBuffers.begin();
-        mOutputBuffers.erase(mOutputBuffers.begin());
-
-        LOGV("releasing buffer %p.", buffer->data());
-
-        buffer->release();
-        buffer = NULL;
-    }
-
-    int attempt = 1;
-    while (mState != OMX_StateLoaded && attempt < 20) {
-        usleep(100000);
-
-        ++attempt;
-    }
-
-    if (mState != OMX_StateLoaded) {
-        LOGE("!!! OMX Node '%s' did NOT shutdown cleanly !!!", mComponentName);
-    } else {
-        LOGI("OMX Node '%s' has shutdown cleanly.", mComponentName);
-    }
-
-    mSource->stop();
-
-    mCodecSpecificDataIterator = mCodecSpecificData.begin();
-    mShutdownInitiated = false;
-    mSeeking = false;
-    mStarted = false;
-    mErrorCondition = OK;
-    mReachedEndOfInput = false;
-
-    return OK;
-}
-
-sp<MetaData> OMXDecoder::getFormat() {
-    return mOutputFormat;
-}
-
-status_t OMXDecoder::read(
-        MediaBuffer **out, const ReadOptions *options) {
-    CHECK(mStarted);
-
-    *out = NULL;
-
-    Mutex::Autolock autoLock(mLock);
-
-    if (mErrorCondition != OK && mErrorCondition != ERROR_END_OF_STREAM) {
-        // Errors are sticky.
-        return mErrorCondition;
-    }
-
-    int64_t seekTimeUs;
-    if (options && options->getSeekTo(&seekTimeUs)) {
-        LOGI("[%s] seeking to %lld us", mComponentName, seekTimeUs);
-
-        mErrorCondition = OK;
-        mReachedEndOfInput = false;
-
-        setPortStatus(kPortIndexInput, kPortStatusFlushing);
-        setPortStatus(kPortIndexOutput, kPortStatusFlushing);
-
-        mSeeking = true;
-        mSeekTimeUs = seekTimeUs;
-
-        while (!mOutputBuffers.empty()) {
-            OMXMediaBuffer *buffer =
-                static_cast<OMXMediaBuffer *>(*mOutputBuffers.begin());
-
-            // We could have used buffer->release() instead, but we're
-            // holding the lock and signalBufferReturned attempts to acquire
-            // the lock.
-            buffer->claim();
-            mBuffers.editItemAt(
-                    kPortIndexOutput).push_back(buffer->buffer_id());
-            buffer = NULL;
-
-            mOutputBuffers.erase(mOutputBuffers.begin());
-        }
-
-        // XXX One of TI's decoders appears to ignore a flush if it doesn't
-        // currently hold on to any buffers on the port in question and
-        // never sends the completion event... FIXME
-
-        status_t err = mOMX->send_command(mNode, OMX_CommandFlush, OMX_ALL);
-        CHECK_EQ(err, OK);
-
-        // Once flushing is completed buffers will again be scheduled to be
-        // filled/emptied.
-    }
-
-    while (mErrorCondition == OK && mOutputBuffers.empty()) {
-        mOutputBufferAvailable.wait(mLock);
-    }
-
-    if (!mOutputBuffers.empty()) {
-        MediaBuffer *buffer = *mOutputBuffers.begin();
-        mOutputBuffers.erase(mOutputBuffers.begin());
-
-        *out = buffer;
-
-        return OK;
-    } else {
-        CHECK(mErrorCondition != OK);
-        return mErrorCondition;
-    }
-}
-
-void OMXDecoder::addCodecSpecificData(const void *data, size_t size) {
-    CodecSpecificData specific;
-    specific.data = malloc(size);
-    memcpy(specific.data, data, size);
-    specific.size = size;
-
-    mCodecSpecificData.push_back(specific);
-    mCodecSpecificDataIterator = mCodecSpecificData.begin();
-}
-
-void OMXDecoder::onOMXMessage(const omx_message &msg) {
-    Mutex::Autolock autoLock(mLock);
-
-    switch (msg.type) {
-        case omx_message::START:
-        {
-            onStart();
-            break;
-        }
-
-        case omx_message::EVENT:
-        {
-            onEvent(msg.u.event_data.event, msg.u.event_data.data1,
-                    msg.u.event_data.data2);
-            break;
-        }
-
-        case omx_message::EMPTY_BUFFER_DONE:
-        {
-            onEmptyBufferDone(msg.u.buffer_data.buffer);
-            break;
-        }
-
-        case omx_message::FILL_BUFFER_DONE:
-        case omx_message::INITIAL_FILL_BUFFER:
-        {
-            onFillBufferDone(msg);
-            break;
-        }
-
-        default:
-            LOGE("received unknown omx_message type %d", msg.type);
-            break;
-    }
-}
-
-void OMXDecoder::setAMRFormat() {
-    OMX_AUDIO_PARAM_AMRTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    status_t err =
-        mOMX->get_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
-
-    CHECK_EQ(err, NO_ERROR);
-
-    def.eAMRFrameFormat = OMX_AUDIO_AMRFrameFormatFSF;
-    def.eAMRBandMode = OMX_AUDIO_AMRBandModeNB0;
-
-    err = mOMX->set_parameter(mNode, OMX_IndexParamAudioAmr, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::setAACFormat() {
-    OMX_AUDIO_PARAM_AACPROFILETYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    status_t err =
-        mOMX->get_parameter(mNode, OMX_IndexParamAudioAac, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    def.eAACStreamFormat = OMX_AUDIO_AACStreamFormatMP4ADTS;
-
-    err = mOMX->set_parameter(mNode, OMX_IndexParamAudioAac, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-status_t OMXDecoder::setVideoPortFormatType(
-        OMX_U32 portIndex,
-        OMX_VIDEO_CODINGTYPE compressionFormat,
-        OMX_COLOR_FORMATTYPE colorFormat) {
-    OMX_VIDEO_PARAM_PORTFORMATTYPE format;
-    format.nSize = sizeof(format);
-    format.nVersion.s.nVersionMajor = 1;
-    format.nVersion.s.nVersionMinor = 1;
-    format.nPortIndex = portIndex;
-    format.nIndex = 0;
-    bool found = false;
-
-    OMX_U32 index = 0;
-    for (;;) {
-        format.nIndex = index;
-        status_t err = mOMX->get_parameter(
-                mNode, OMX_IndexParamVideoPortFormat,
-                &format, sizeof(format));
-
-        if (err != OK) {
-            return err;
-        }
-
-        // The following CHECKion is violated by TI's video decoder.
-        // CHECK_EQ(format.nIndex, index);
-
-#if 1
-        LOGI("portIndex: %ld, index: %ld, eCompressionFormat=%d eColorFormat=%d",
-             portIndex,
-             index, format.eCompressionFormat, format.eColorFormat);
-#endif
-
-        if (!strcmp("OMX.TI.Video.encoder", mComponentName)) {
-            if (portIndex == kPortIndexInput
-                    && colorFormat == format.eColorFormat) {
-                // eCompressionFormat does not seem right.
-                found = true;
-                break;
-            }
-            if (portIndex == kPortIndexOutput
-                    && compressionFormat == format.eCompressionFormat) {
-                // eColorFormat does not seem right.
-                found = true;
-                break;
-            }
-        }
-
-        if (format.eCompressionFormat == compressionFormat
-            && format.eColorFormat == colorFormat) {
-            found = true;
-            break;
-        }
-
-        ++index;
-    }
-
-    if (!found) {
-        return UNKNOWN_ERROR;
-    }
-
-    LOGI("found a match.");
-    status_t err = mOMX->set_parameter(
-            mNode, OMX_IndexParamVideoPortFormat,
-            &format, sizeof(format));
-
-    return err;
-}
-
-void OMXDecoder::setVideoInputFormat(
-        const char *mime, OMX_U32 width, OMX_U32 height) {
-    LOGI("setVideoInputFormat width=%ld, height=%ld", width, height);
-
-    OMX_VIDEO_CODINGTYPE compressionFormat = OMX_VIDEO_CodingUnused;
-    if (!strcasecmp("video/avc", mMIME)) {
-        compressionFormat = OMX_VIDEO_CodingAVC;
-    } else if (!strcasecmp("video/mp4v-es", mMIME)) {
-        compressionFormat = OMX_VIDEO_CodingMPEG4;
-    } else if (!strcasecmp("video/3gpp", mMIME)) {
-        compressionFormat = OMX_VIDEO_CodingH263;
-    } else {
-        LOGE("Not a supported video mime type: %s", mime);
-        CHECK(!"Should not be here. Not a supported video mime type.");
-    }
-
-    OMX_COLOR_FORMATTYPE colorFormat =
-        0 ? OMX_COLOR_FormatYCbYCr : OMX_COLOR_FormatCbYCrY;
-
-    if (!strncmp("OMX.qcom.video.encoder.", mComponentName, 23)) {
-        colorFormat = OMX_COLOR_FormatYUV420SemiPlanar;
-    }
-
-    setVideoPortFormatType(
-            kPortIndexInput, OMX_VIDEO_CodingUnused,
-            colorFormat);
-
-    setVideoPortFormatType(
-            kPortIndexOutput, compressionFormat, OMX_COLOR_FormatUnused);
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexOutput;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-
-    CHECK_EQ(err, NO_ERROR);
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-
-    video_def->eCompressionFormat = compressionFormat;
-    video_def->eColorFormat = OMX_COLOR_FormatUnused;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    ////////////////////////////////////////////////////////////////////////////
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    def.nBufferSize = (width * height * 2); // (width * height * 3) / 2;
-    LOGI("setting nBufferSize = %ld", def.nBufferSize);
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-    video_def->eCompressionFormat = OMX_VIDEO_CodingUnused;
-    video_def->eColorFormat = colorFormat;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::setVideoOutputFormat(
-        const char *mime, OMX_U32 width, OMX_U32 height) {
-    LOGI("setVideoOutputFormat width=%ld, height=%ld", width, height);
-
-#if 1
-    // Enabling this code appears to be the right thing(tm), but,...
-    // the TI decoder then loses the ability to output YUV420 and only outputs
-    // YCbYCr (16bit)
-    if (!strcmp("OMX.TI.Video.Decoder", mComponentName)
-        && !strcasecmp("video/avc", mime)) {
-        OMX_PARAM_COMPONENTROLETYPE role;
-        role.nSize = sizeof(role);
-        role.nVersion.s.nVersionMajor = 1;
-        role.nVersion.s.nVersionMinor = 1;
-        strncpy((char *)role.cRole, "video_decoder.avc",
-                OMX_MAX_STRINGNAME_SIZE - 1);
-        role.cRole[OMX_MAX_STRINGNAME_SIZE - 1] = '\0';
-
-        status_t err = mOMX->set_parameter(
-                mNode, OMX_IndexParamStandardComponentRole,
-                &role, sizeof(role));
-        CHECK_EQ(err, OK);
-    }
-#endif
-
-    OMX_VIDEO_CODINGTYPE compressionFormat = OMX_VIDEO_CodingUnused;
-    if (!strcasecmp("video/avc", mime)) {
-        compressionFormat = OMX_VIDEO_CodingAVC;
-    } else if (!strcasecmp("video/mp4v-es", mime)) {
-        compressionFormat = OMX_VIDEO_CodingMPEG4;
-    } else if (!strcasecmp("video/3gpp", mime)) {
-        compressionFormat = OMX_VIDEO_CodingH263;
-    } else {
-        LOGE("Not a supported video mime type: %s", mime);
-        CHECK(!"Should not be here. Not a supported video mime type.");
-    }
-
-    setVideoPortFormatType(
-            kPortIndexInput, compressionFormat, OMX_COLOR_FormatUnused);
-
-#if 1
-    {
-        OMX_VIDEO_PARAM_PORTFORMATTYPE format;
-        format.nSize = sizeof(format);
-        format.nVersion.s.nVersionMajor = 1;
-        format.nVersion.s.nVersionMinor = 1;
-        format.nPortIndex = kPortIndexOutput;
-        format.nIndex = 0;
-
-        status_t err = mOMX->get_parameter(
-                mNode, OMX_IndexParamVideoPortFormat,
-                &format, sizeof(format));
-        CHECK_EQ(err, OK);
-
-        CHECK_EQ(format.eCompressionFormat, OMX_VIDEO_CodingUnused);
-
-        static const int OMX_QCOM_COLOR_FormatYVU420SemiPlanar = 0x7FA30C00;
-
-        CHECK(format.eColorFormat == OMX_COLOR_FormatYUV420Planar
-               || format.eColorFormat == OMX_COLOR_FormatYUV420SemiPlanar
-               || format.eColorFormat == OMX_COLOR_FormatCbYCrY
-               || format.eColorFormat == OMX_QCOM_COLOR_FormatYVU420SemiPlanar);
-
-        err = mOMX->set_parameter(
-                mNode, OMX_IndexParamVideoPortFormat,
-                &format, sizeof(format));
-        CHECK_EQ(err, OK);
-    }
-#endif
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexInput;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-
-    CHECK_EQ(err, NO_ERROR);
-
-#if 1
-    // XXX Need a (much) better heuristic to compute input buffer sizes.
-    const size_t X = 64 * 1024;
-    if (def.nBufferSize < X) {
-        def.nBufferSize = X;
-    }
-#endif
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-
-    video_def->eColorFormat = OMX_COLOR_FormatUnused;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    ////////////////////////////////////////////////////////////////////////////
-
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexOutput;
-
-    err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    CHECK_EQ(def.eDomain, OMX_PortDomainVideo);
-
-#if 0
-    def.nBufferSize =
-        (((width + 15) & -16) * ((height + 15) & -16) * 3) / 2;  // YUV420
-#endif
-
-    video_def->nFrameWidth = width;
-    video_def->nFrameHeight = height;
-
-    err = mOMX->set_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::setup() {
-    const sp<MetaData> &meta = mSource->getFormat();
-
-    const char *mime;
-    bool success = meta->findCString(kKeyMIMEType, &mime);
-    CHECK(success);
-
-    if (!strcasecmp(mime, "audio/3gpp")) {
-        setAMRFormat();
-    } else if (!strcasecmp(mime, "audio/mp4a-latm")) {
-        setAACFormat();
-    } else if (!strncasecmp(mime, "video/", 6)) {
-        int32_t width, height;
-        bool success = meta->findInt32(kKeyWidth, &width);
-        success = success && meta->findInt32(kKeyHeight, &height);
-        CHECK(success);
-
-        if (mIsEncoder) {
-            setVideoInputFormat(mime, width, height);
-        } else {
-            setVideoOutputFormat(mime, width, height);
-        }
-    }
-
-    // dumpPortDefinition(0);
-    // dumpPortDefinition(1);
-
-    mOutputFormat = new MetaData;
-    mOutputFormat->setCString(kKeyDecoderComponent, mComponentName);
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = kPortIndexOutput;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    switch (def.eDomain) {
-        case OMX_PortDomainAudio:
-        {
-            OMX_AUDIO_PORTDEFINITIONTYPE *audio_def = &def.format.audio;
-
-            CHECK_EQ(audio_def->eEncoding, OMX_AUDIO_CodingPCM);
-
-            OMX_AUDIO_PARAM_PCMMODETYPE params;
-            params.nSize = sizeof(params);
-            params.nVersion.s.nVersionMajor = 1;
-            params.nVersion.s.nVersionMinor = 1;
-            params.nPortIndex = kPortIndexOutput;
-
-            err = mOMX->get_parameter(
-                    mNode, OMX_IndexParamAudioPcm, &params, sizeof(params));
-            CHECK_EQ(err, OK);
-
-            CHECK_EQ(params.eNumData, OMX_NumericalDataSigned);
-            CHECK_EQ(params.nBitPerSample, 16);
-            CHECK_EQ(params.ePCMMode, OMX_AUDIO_PCMModeLinear);
-
-            int32_t numChannels, sampleRate;
-            meta->findInt32(kKeyChannelCount, &numChannels);
-            meta->findInt32(kKeySampleRate, &sampleRate);
-
-            mOutputFormat->setCString(kKeyMIMEType, "audio/raw");
-            mOutputFormat->setInt32(kKeyChannelCount, numChannels);
-            mOutputFormat->setInt32(kKeySampleRate, sampleRate);
-            break;
-        }
-
-        case OMX_PortDomainVideo:
-        {
-            OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-
-            if (video_def->eCompressionFormat == OMX_VIDEO_CodingUnused) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/raw");
-            } else if (video_def->eCompressionFormat == OMX_VIDEO_CodingMPEG4) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/mp4v-es");
-            } else if (video_def->eCompressionFormat == OMX_VIDEO_CodingH263) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/3gpp");
-            } else if (video_def->eCompressionFormat == OMX_VIDEO_CodingAVC) {
-                mOutputFormat->setCString(kKeyMIMEType, "video/avc");
-            } else {
-                CHECK(!"Unknown compression format.");
-            }
-
-            if (!strcmp(mComponentName, "OMX.PV.avcdec")) {
-                // This component appears to be lying to me.
-                mOutputFormat->setInt32(
-                        kKeyWidth, (video_def->nFrameWidth + 15) & -16);
-                mOutputFormat->setInt32(
-                        kKeyHeight, (video_def->nFrameHeight + 15) & -16);
-            } else {
-                mOutputFormat->setInt32(kKeyWidth, video_def->nFrameWidth);
-                mOutputFormat->setInt32(kKeyHeight, video_def->nFrameHeight);
-            }
-
-            mOutputFormat->setInt32(kKeyColorFormat, video_def->eColorFormat);
-            break;
-        }
-
-        default:
-        {
-            CHECK(!"should not be here, neither audio nor video.");
-            break;
-        }
-    }
-}
-
-void OMXDecoder::onStart() {
-    if (!(mQuirks & kRequiresLoadedToIdleAfterAllocation)) {
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
-        CHECK_EQ(err, NO_ERROR);
-    }
-
-    allocateBuffers(kPortIndexInput);
-    allocateBuffers(kPortIndexOutput);
-
-    if (mQuirks & kRequiresLoadedToIdleAfterAllocation) {
-        // XXX this should happen before AllocateBuffers, but qcom's
-        // h264 vdec disagrees.
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateIdle);
-        CHECK_EQ(err, NO_ERROR);
-    }
-}
-
-void OMXDecoder::allocateBuffers(OMX_U32 port_index) {
-    CHECK(mBuffers[port_index].empty());
-
-    OMX_U32 num_buffers;
-    OMX_U32 buffer_size;
-
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nVersion.s.nRevision = 0;
-    def.nVersion.s.nStep = 0;
-    def.nPortIndex = port_index;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    num_buffers = def.nBufferCountActual;
-    buffer_size = def.nBufferSize;
-
-    LOGV("[%s] port %ld: allocating %ld buffers of size %ld each\n",
-           mComponentName, port_index, num_buffers, buffer_size);
-
-    for (OMX_U32 i = 0; i < num_buffers; ++i) {
-        sp<IMemory> mem = mDealer->allocate(buffer_size);
-        if (mem.get() == NULL) {
-            LOGE("[%s] allocating IMemory of size %ld FAILED.",
-                 mComponentName, buffer_size);
-        }
-        CHECK(mem.get() != NULL);
-
-        IOMX::buffer_id buffer;
-        status_t err;
-
-        if (port_index == kPortIndexInput
-                && (mQuirks & kRequiresAllocateBufferOnInputPorts)) {
-            // qcom's H.263 encoder appears to want to allocate its own input
-            // buffers.
-            err = mOMX->allocate_buffer_with_backup(mNode, port_index, mem, &buffer);
-            if (err != OK) {
-                LOGE("[%s] allocate_buffer_with_backup failed with error %d",
-                     mComponentName, err);
-            }
-        } else if (port_index == kPortIndexOutput
-                && (mQuirks & kRequiresAllocateBufferOnOutputPorts)) {
-#if 1
-            err = mOMX->allocate_buffer_with_backup(mNode, port_index, mem, &buffer);
-#else
-            // XXX This is fine as long as we are either running the player
-            // inside the media server process or we are using the
-            // QComHardwareRenderer to output the frames.
-            err = mOMX->allocate_buffer(mNode, port_index, buffer_size, &buffer);
-#endif
-            if (err != OK) {
-                LOGE("[%s] allocate_buffer_with_backup failed with error %d",
-                     mComponentName, err);
-            }
-        } else {
-            err = mOMX->use_buffer(mNode, port_index, mem, &buffer);
-            if (err != OK) {
-                LOGE("[%s] use_buffer failed with error %d",
-                     mComponentName, err);
-            }
-        }
-        CHECK_EQ(err, OK);
-
-        LOGV("allocated %s buffer %p.",
-             port_index == kPortIndexInput ? "INPUT" : "OUTPUT",
-             buffer);
-
-        mBuffers.editItemAt(port_index).push_back(buffer);
-        mBufferMap.add(buffer, mem);
-
-        if (port_index == kPortIndexOutput) {
-            OMXMediaBuffer *media_buffer = new OMXMediaBuffer(buffer, mem);
-            media_buffer->setObserver(this);
-
-            mMediaBufferMap.add(buffer, media_buffer);
-        }
-    }
-
-    LOGV("allocate %s buffers done.",
-         port_index == kPortIndexInput ? "INPUT" : "OUTPUT");
-}
-
-void OMXDecoder::onEvent(
-        OMX_EVENTTYPE event, OMX_U32 data1, OMX_U32 data2) {
-    LOGV("[%s] onEvent event=%d, data1=%ld, data2=%ld",
-         mComponentName, event, data1, data2);
-
-    switch (event) {
-        case OMX_EventCmdComplete: {
-            onEventCmdComplete(
-                    static_cast<OMX_COMMANDTYPE>(data1), data2);
-
-            break;
-        }
-
-        case OMX_EventPortSettingsChanged: {
-            onEventPortSettingsChanged(data1);
-            break;
-        }
-
-        case OMX_EventBufferFlag: {
-            // initiateShutdown();
-            break;
-        }
-
-        default:
-            break;
-    }
-}
-
-void OMXDecoder::onEventCmdComplete(OMX_COMMANDTYPE type, OMX_U32 data) {
-    switch (type) {
-        case OMX_CommandStateSet: {
-            OMX_STATETYPE state = static_cast<OMX_STATETYPE>(data);
-            onStateChanged(state);
-            break;
-        }
-
-        case OMX_CommandPortDisable: {
-            OMX_U32 port_index = data;
-            CHECK_EQ(getPortStatus(port_index), kPortStatusDisabled);
-
-            status_t err =
-                mOMX->send_command(mNode, OMX_CommandPortEnable, port_index);
-
-            allocateBuffers(port_index);
-
-            break;
-        }
-
-        case OMX_CommandPortEnable: {
-            OMX_U32 port_index = data;
-            CHECK(getPortStatus(port_index) ==kPortStatusDisabled);
-            setPortStatus(port_index, kPortStatusActive);
-
-            CHECK_EQ(port_index, kPortIndexOutput);
-
-            BufferList *obuffers = &mBuffers.editItemAt(kPortIndexOutput);
-            while (!obuffers->empty()) {
-                IOMX::buffer_id buffer = *obuffers->begin();
-                obuffers->erase(obuffers->begin());
-
-                mOMX->fill_buffer(mNode, buffer);
-            }
-
-            break;
-        }
-
-        case OMX_CommandFlush: {
-            OMX_U32 port_index = data;
-            LOGV("Port %ld flush complete.", port_index);
-
-            PortStatus status = getPortStatus(port_index);
-
-            CHECK(status == kPortStatusFlushing
-                    || status == kPortStatusFlushingToDisabled
-                    || status == kPortStatusFlushingToShutdown);
-
-            switch (status) {
-                case kPortStatusFlushing:
-                {
-                    // This happens when we're flushing before a seek.
-                    setPortStatus(port_index, kPortStatusActive);
-                    BufferList *buffers = &mBuffers.editItemAt(port_index);
-                    while (!buffers->empty()) {
-                        IOMX::buffer_id buffer = *buffers->begin();
-                        buffers->erase(buffers->begin());
-
-                        if (port_index == kPortIndexInput) {
-                            postEmptyBufferDone(buffer);
-                        } else {
-                            postInitialFillBuffer(buffer);
-                        }
-                    }
-                    break;
-                }
-
-                case kPortStatusFlushingToDisabled:
-                {
-                    // Port settings have changed and the (buggy) OMX component
-                    // does not properly return buffers on disabling, we need to
-                    // do a flush first and _then_ disable the port in question.
-
-                    setPortStatus(port_index, kPortStatusDisabled);
-                    status_t err = mOMX->send_command(
-                            mNode, OMX_CommandPortDisable, port_index);
-                    CHECK_EQ(err, OK);
-
-                    freePortBuffers(port_index);
-                    break;
-                }
-
-                default:
-                {
-                    CHECK_EQ(status, kPortStatusFlushingToShutdown);
-
-                    setPortStatus(port_index, kPortStatusShutdown);
-                    if (getPortStatus(kPortIndexInput) == kPortStatusShutdown
-                        && getPortStatus(kPortIndexOutput) == kPortStatusShutdown) {
-                        status_t err = mOMX->send_command(
-                                mNode, OMX_CommandStateSet, OMX_StateIdle);
-                        CHECK_EQ(err, OK);
-                    }
-                    break;
-                }
-            }
-            break;
-        }
-
-        default:
-            break;
-    }
-}
-
-void OMXDecoder::onEventPortSettingsChanged(OMX_U32 port_index) {
-    CHECK_EQ(getPortStatus(port_index), kPortStatusActive);
-
-    status_t err;
-
-    if (mQuirks & kDoesntReturnBuffersOnDisable) {
-        // Decoder does not properly return our buffers when disabled...
-        // Need to flush port instead and _then_ disable.
-
-        setPortStatus(port_index, kPortStatusFlushingToDisabled);
-
-        err = mOMX->send_command(mNode, OMX_CommandFlush, port_index);
-    } else {
-        setPortStatus(port_index, kPortStatusDisabled);
-
-        err = mOMX->send_command(mNode, OMX_CommandPortDisable, port_index);
-    }
-
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::onStateChanged(OMX_STATETYPE to) {
-    if (mState == OMX_StateLoaded) {
-        CHECK_EQ(to, OMX_StateIdle);
-
-        mState = to;
-
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateExecuting);
-        CHECK_EQ(err, NO_ERROR);
-    } else if (mState == OMX_StateIdle) {
-        if (to == OMX_StateExecuting) {
-            mState = to;
-
-            BufferList *ibuffers = &mBuffers.editItemAt(kPortIndexInput);
-            while (!ibuffers->empty()) {
-                IOMX::buffer_id buffer = *ibuffers->begin();
-                ibuffers->erase(ibuffers->begin());
-
-                postEmptyBufferDone(buffer);
-            }
-
-            BufferList *obuffers = &mBuffers.editItemAt(kPortIndexOutput);
-            while (!obuffers->empty()) {
-                IOMX::buffer_id buffer = *obuffers->begin();
-                obuffers->erase(obuffers->begin());
-
-                postInitialFillBuffer(buffer);
-            }
-        } else {
-            CHECK_EQ(to, OMX_StateLoaded);
-
-            mState = to;
-
-            setPortStatus(kPortIndexInput, kPortStatusActive);
-            setPortStatus(kPortIndexOutput, kPortStatusActive);
-        }
-    } else if (mState == OMX_StateExecuting) {
-        CHECK_EQ(to, OMX_StateIdle);
-
-        mState = to;
-
-        LOGV("Executing->Idle complete, initiating Idle->Loaded");
-        status_t err =
-            mOMX->send_command(mNode, OMX_CommandStateSet, OMX_StateLoaded);
-        CHECK_EQ(err, NO_ERROR);
-
-        freePortBuffers(kPortIndexInput);
-        freePortBuffers(kPortIndexOutput);
-    }
-}
-
-void OMXDecoder::initiateShutdown() {
-    Mutex::Autolock autoLock(mLock);
-
-    if (mShutdownInitiated) {
-        return;
-    }
-
-    if (mState == OMX_StateLoaded) {
-        return;
-    }
-
-    CHECK_EQ(mState, OMX_StateExecuting);
-
-    mShutdownInitiated = true;
-
-    status_t err;
-    if (mQuirks & kDoesntFlushOnExecutingToIdle) {
-        if (mQuirks & kDoesntProperlyFlushAllPortsAtOnce) {
-            err = mOMX->send_command(mNode, OMX_CommandFlush, kPortIndexInput);
-            CHECK_EQ(err, OK);
-
-            err = mOMX->send_command(mNode, OMX_CommandFlush, kPortIndexOutput);
-        } else {
-            err = mOMX->send_command(mNode, OMX_CommandFlush, OMX_ALL);
-        }
-
-        setPortStatus(kPortIndexInput, kPortStatusFlushingToShutdown);
-        setPortStatus(kPortIndexOutput, kPortStatusFlushingToShutdown);
-    } else {
-        err = mOMX->send_command(
-                mNode, OMX_CommandStateSet, OMX_StateIdle);
-
-        setPortStatus(kPortIndexInput, kPortStatusShutdown);
-        setPortStatus(kPortIndexOutput, kPortStatusShutdown);
-    }
-    CHECK_EQ(err, OK);
-}
-
-void OMXDecoder::setPortStatus(OMX_U32 port_index, PortStatus status) {
-    int shift = 3 * port_index;
-
-    mPortStatusMask &= ~(7 << shift);
-    mPortStatusMask |= status << shift;
-}
-
-OMXDecoder::PortStatus OMXDecoder::getPortStatus(
-        OMX_U32 port_index) const {
-    int shift = 3 * port_index;
-
-    return static_cast<PortStatus>((mPortStatusMask >> shift) & 7);
-}
-
-void OMXDecoder::onEmptyBufferDone(IOMX::buffer_id buffer) {
-    LOGV("[%s] onEmptyBufferDone (%p)", mComponentName, buffer);
-
-    status_t err;
-    switch (getPortStatus(kPortIndexInput)) {
-        case kPortStatusDisabled:
-            freeInputBuffer(buffer);
-            err = NO_ERROR;
-            break;
-
-        case kPortStatusShutdown:
-            LOGV("We're shutting down, enqueue INPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexInput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        case kPortStatusFlushing:
-        case kPortStatusFlushingToDisabled:
-        case kPortStatusFlushingToShutdown:
-            LOGV("We're currently flushing, enqueue INPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexInput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        default:
-            onRealEmptyBufferDone(buffer);
-            err = NO_ERROR;
-            break;
-    }
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::onFillBufferDone(const omx_message &msg) {
-    IOMX::buffer_id buffer = msg.u.extended_buffer_data.buffer;
-
-    LOGV("[%s] on%sFillBufferDone (%p, size:%ld)", mComponentName,
-         msg.type == omx_message::INITIAL_FILL_BUFFER ? "Initial" : "",
-         buffer, msg.u.extended_buffer_data.range_length);
-
-    status_t err;
-    switch (getPortStatus(kPortIndexOutput)) {
-        case kPortStatusDisabled:
-            freeOutputBuffer(buffer);
-            err = NO_ERROR;
-            break;
-        case kPortStatusShutdown:
-            LOGV("We're shutting down, enqueue OUTPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexOutput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        case kPortStatusFlushing:
-        case kPortStatusFlushingToDisabled:
-        case kPortStatusFlushingToShutdown:
-            LOGV("We're currently flushing, enqueue OUTPUT buffer %p.", buffer);
-            mBuffers.editItemAt(kPortIndexOutput).push_back(buffer);
-            err = NO_ERROR;
-            break;
-
-        default:
-        {
-            if (msg.type == omx_message::INITIAL_FILL_BUFFER) {
-                mOMX->fill_buffer(mNode, buffer);
-            } else {
-                LOGV("[%s] Filled OUTPUT buffer %p, flags=0x%08lx.",
-                     mComponentName, buffer, msg.u.extended_buffer_data.flags);
-
-                onRealFillBufferDone(msg);
-            }
-            err = NO_ERROR;
-            break;
-        }
-    }
-    CHECK_EQ(err, NO_ERROR);
-}
-
-void OMXDecoder::onRealEmptyBufferDone(IOMX::buffer_id buffer) {
-    if (mReachedEndOfInput) {
-        // We already sent the EOS notification.
-
-        mBuffers.editItemAt(kPortIndexInput).push_back(buffer);
-        return;
-    }
-
-    const sp<IMemory> mem = mBufferMap.valueFor(buffer);
-    CHECK(mem.get() != NULL);
-
-    static const uint8_t kNALStartCode[4] = { 0x00, 0x00, 0x00, 0x01 };
-
-    if (mCodecSpecificDataIterator != mCodecSpecificData.end()) {
-        List<CodecSpecificData>::iterator it = mCodecSpecificDataIterator;
-
-        size_t range_length = 0;
-
-        if (mIsAVC && !(mQuirks & kWantsNALFragments)) {
-            CHECK((*mCodecSpecificDataIterator).size + 4 <= mem->size());
-
-            memcpy(mem->pointer(), kNALStartCode, 4);
-
-            memcpy((uint8_t *)mem->pointer() + 4, (*it).data, (*it).size);
-            range_length = (*it).size + 4;
-        } else {
-            CHECK((*mCodecSpecificDataIterator).size <= mem->size());
-
-            memcpy((uint8_t *)mem->pointer(), (*it).data, (*it).size);
-            range_length = (*it).size;
-        }
-
-        ++mCodecSpecificDataIterator;
-
-        mOMX->empty_buffer(
-                mNode, buffer, 0, range_length, 
-                OMX_BUFFERFLAG_ENDOFFRAME | OMX_BUFFERFLAG_CODECCONFIG,
-                0);
-
-        return;
-    }
-
-    LOGV("[%s] waiting for input data", mComponentName);
-
-    MediaBuffer *input_buffer;
-    for (;;) {
-        status_t err;
-
-        if (mSeeking) {
-            MediaSource::ReadOptions options;
-            options.setSeekTo(mSeekTimeUs);
-
-            mSeeking = false;
-
-            err = mSource->read(&input_buffer, &options);
-        } else {
-            err = mSource->read(&input_buffer);
-        }
-        CHECK((err == OK && input_buffer != NULL)
-               || (err != OK && input_buffer == NULL));
-
-        if (err == ERROR_END_OF_STREAM) {
-            LOGE("[%s] Reached end of stream.", mComponentName);
-            mReachedEndOfInput = true;
-        } else {
-            LOGV("[%s] got input data", mComponentName);
-        }
-
-        if (err != OK) {
-            mOMX->empty_buffer(
-                    mNode, buffer, 0, 0, OMX_BUFFERFLAG_EOS, 0);
-
-            return;
-        }
-
-        if (mSeeking) {
-            input_buffer->release();
-            input_buffer = NULL;
-
-            continue;
-        }
-
-        break;
-    }
-
-    const uint8_t *src_data =
-        (const uint8_t *)input_buffer->data() + input_buffer->range_offset();
-
-    size_t src_length = input_buffer->range_length();
-    if (src_length == 195840) {
-        // When feeding the output of the AVC decoder into the H263 encoder,
-        // buffer sizes mismatch if width % 16 != 0 || height % 16 != 0.
-        src_length = 194400;  // XXX HACK
-    } else if (src_length == 115200) {
-        src_length = 114240;  // XXX HACK
-    }
-
-    if (src_length > mem->size()) {
-        LOGE("src_length=%d > mem->size() = %d\n",
-             src_length, mem->size());
-    }
-
-    CHECK(src_length <= mem->size());
-    memcpy(mem->pointer(), src_data, src_length);
-
-    OMX_U32 flags = 0;
-    if (!mIsMP3) {
-        // Only mp3 audio data may be streamed, all other data is assumed
-        // to be fed into the decoder at frame boundaries.
-        flags |= OMX_BUFFERFLAG_ENDOFFRAME;
-    }
-
-    int32_t units, scale;
-    bool success =
-        input_buffer->meta_data()->findInt32(kKeyTimeUnits, &units);
-
-    success = success &&
-        input_buffer->meta_data()->findInt32(kKeyTimeScale, &scale);
-
-    OMX_TICKS timestamp = 0;
-
-    if (success) {
-        if (mQuirks & kMeasuresTimeInMilliseconds) {
-            timestamp = ((OMX_S64)units * 1000) / scale;
-        } else {
-            timestamp = ((OMX_S64)units * 1000000) / scale;
-        }
-    }
-
-    input_buffer->release();
-    input_buffer = NULL;
-
-    LOGV("[%s] Calling EmptyBuffer on buffer %p size:%d flags:0x%08lx",
-         mComponentName, buffer, src_length, flags);
-
-    mOMX->empty_buffer(
-            mNode, buffer, 0, src_length, flags, timestamp);
-}
-
-void OMXDecoder::onRealFillBufferDone(const omx_message &msg) {
-    OMXMediaBuffer *media_buffer =
-        mMediaBufferMap.valueFor(msg.u.extended_buffer_data.buffer);
-
-    media_buffer->set_range(
-            msg.u.extended_buffer_data.range_offset,
-            msg.u.extended_buffer_data.range_length);
-
-    media_buffer->add_ref();
-
-    media_buffer->meta_data()->clear();
-
-    if (mQuirks & kMeasuresTimeInMilliseconds) {
-        media_buffer->meta_data()->setInt32(
-                kKeyTimeUnits,
-                msg.u.extended_buffer_data.timestamp);
-    } else {
-        media_buffer->meta_data()->setInt32(
-                kKeyTimeUnits,
-                (msg.u.extended_buffer_data.timestamp + 500) / 1000);
-    }
-
-    media_buffer->meta_data()->setInt32(kKeyTimeScale, 1000);
-
-    if (msg.u.extended_buffer_data.flags & OMX_BUFFERFLAG_SYNCFRAME) {
-        media_buffer->meta_data()->setInt32(kKeyIsSyncFrame, true);
-    }
-
-    media_buffer->meta_data()->setPointer(
-            kKeyPlatformPrivate,
-            msg.u.extended_buffer_data.platform_private);
-
-    media_buffer->meta_data()->setPointer(
-            kKeyBufferID,
-            msg.u.extended_buffer_data.buffer);
-
-    if (msg.u.extended_buffer_data.flags & OMX_BUFFERFLAG_EOS) {
-        mErrorCondition = ERROR_END_OF_STREAM;
-    }
-
-    mOutputBuffers.push_back(media_buffer);
-    mOutputBufferAvailable.signal();
-}
-
-void OMXDecoder::signalBufferReturned(MediaBuffer *_buffer) {
-    Mutex::Autolock autoLock(mLock);
-
-    OMXMediaBuffer *media_buffer = static_cast<OMXMediaBuffer *>(_buffer);
-
-    IOMX::buffer_id buffer = media_buffer->buffer_id();
-
-    PortStatus outputStatus = getPortStatus(kPortIndexOutput);
-    if (outputStatus == kPortStatusShutdown
-            || outputStatus == kPortStatusFlushing
-            || outputStatus == kPortStatusFlushingToDisabled
-            || outputStatus == kPortStatusFlushingToShutdown) {
-        mBuffers.editItemAt(kPortIndexOutput).push_back(buffer);
-    } else {
-        LOGV("[%s] Calling FillBuffer on buffer %p.", mComponentName, buffer);
-
-        mOMX->fill_buffer(mNode, buffer);
-    }
-}
-
-void OMXDecoder::freeInputBuffer(IOMX::buffer_id buffer) {
-    LOGV("freeInputBuffer %p", buffer);
-
-    status_t err = mOMX->free_buffer(mNode, kPortIndexInput, buffer);
-    CHECK_EQ(err, NO_ERROR);
-    mBufferMap.removeItem(buffer);
-
-    LOGV("freeInputBuffer %p done", buffer);
-}
-
-void OMXDecoder::freeOutputBuffer(IOMX::buffer_id buffer) {
-    LOGV("freeOutputBuffer %p", buffer);
-
-    status_t err = mOMX->free_buffer(mNode, kPortIndexOutput, buffer);
-    CHECK_EQ(err, NO_ERROR);
-    mBufferMap.removeItem(buffer);
-
-    ssize_t index = mMediaBufferMap.indexOfKey(buffer);
-    CHECK(index >= 0);
-    MediaBuffer *mbuffer = mMediaBufferMap.editValueAt(index);
-    mMediaBufferMap.removeItemsAt(index);
-    mbuffer->setObserver(NULL);
-    mbuffer->release();
-    mbuffer = NULL;
-
-    LOGV("freeOutputBuffer %p done", buffer);
-}
-
-void OMXDecoder::dumpPortDefinition(OMX_U32 port_index) {
-    OMX_PARAM_PORTDEFINITIONTYPE def;
-    def.nSize = sizeof(def);
-    def.nVersion.s.nVersionMajor = 1;
-    def.nVersion.s.nVersionMinor = 1;
-    def.nPortIndex = port_index;
-
-    status_t err = mOMX->get_parameter(
-            mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));
-    CHECK_EQ(err, NO_ERROR);
-
-    LOGI("DumpPortDefinition on port %ld", port_index);
-    LOGI("nBufferCountActual = %ld, nBufferCountMin = %ld, nBufferSize = %ld",
-         def.nBufferCountActual, def.nBufferCountMin, def.nBufferSize);
-    switch (def.eDomain) {
-        case OMX_PortDomainAudio:
-        {
-            LOGI("eDomain = AUDIO");
-
-            if (port_index == kPortIndexOutput) {
-                OMX_AUDIO_PORTDEFINITIONTYPE *audio_def = &def.format.audio;
-                CHECK_EQ(audio_def->eEncoding, OMX_AUDIO_CodingPCM);
-
-                OMX_AUDIO_PARAM_PCMMODETYPE params;
-                params.nSize = sizeof(params);
-                params.nVersion.s.nVersionMajor = 1;
-                params.nVersion.s.nVersionMinor = 1;
-                params.nPortIndex = port_index;
-
-                err = mOMX->get_parameter(
-                        mNode, OMX_IndexParamAudioPcm, &params, sizeof(params));
-                CHECK_EQ(err, OK);
-
-                CHECK(params.nChannels == 1 || params.bInterleaved);
-                CHECK_EQ(params.eNumData, OMX_NumericalDataSigned);
-                CHECK_EQ(params.nBitPerSample, 16);
-                CHECK_EQ(params.ePCMMode, OMX_AUDIO_PCMModeLinear);
-
-                LOGI("nChannels = %ld, nSamplingRate = %ld",
-                     params.nChannels, params.nSamplingRate);
-            }
-
-            break;
-        }
-
-        case OMX_PortDomainVideo:
-        {
-            LOGI("eDomain = VIDEO");
-
-            OMX_VIDEO_PORTDEFINITIONTYPE *video_def = &def.format.video;
-            LOGI("nFrameWidth = %ld, nFrameHeight = %ld, nStride = %ld, "
-                 "nSliceHeight = %ld",
-                 video_def->nFrameWidth, video_def->nFrameHeight,
-                 video_def->nStride, video_def->nSliceHeight);
-            LOGI("nBitrate = %ld, xFrameRate = %.2f",
-                 video_def->nBitrate, video_def->xFramerate / 65536.0f);
-            LOGI("eCompressionFormat = %d, eColorFormat = %d",
-                 video_def->eCompressionFormat, video_def->eColorFormat);
-
-            break;
-        }
-
-        default:
-            LOGI("eDomain = UNKNOWN");
-            break;
-    }
-}
-
-void OMXDecoder::postStart() {
-    omx_message msg;
-    msg.type = omx_message::START;
-    postMessage(msg);
-}
-
-void OMXDecoder::postEmptyBufferDone(IOMX::buffer_id buffer) {
-    omx_message msg;
-    msg.type = omx_message::EMPTY_BUFFER_DONE;
-    msg.node = mNode;
-    msg.u.buffer_data.buffer = buffer;
-    postMessage(msg);
-}
-
-void OMXDecoder::postInitialFillBuffer(IOMX::buffer_id buffer) {
-    omx_message msg;
-    msg.type = omx_message::INITIAL_FILL_BUFFER;
-    msg.node = mNode;
-    msg.u.buffer_data.buffer = buffer;
-    postMessage(msg);
-}
-
-void OMXDecoder::freePortBuffers(OMX_U32 port_index) {
-    BufferList *buffers = &mBuffers.editItemAt(port_index);
-    while (!buffers->empty()) {
-        IOMX::buffer_id buffer = *buffers->begin();
-        buffers->erase(buffers->begin());
-
-        if (port_index == kPortIndexInput) {
-            freeInputBuffer(buffer);
-        } else {
-            freeOutputBuffer(buffer);
-        }
-    }
-}
-
-}  // namespace android
diff --git a/media/libstagefright/SampleTable.cpp b/media/libstagefright/SampleTable.cpp
index 5e32559..8efa7c7 100644
--- a/media/libstagefright/SampleTable.cpp
+++ b/media/libstagefright/SampleTable.cpp
@@ -272,7 +272,7 @@
 
         *offset = ntohl(offset32);
     } else {
-        CHECK_EQ(mChunkOffsetOffset, kChunkOffsetType64);
+        CHECK_EQ(mChunkOffsetType, kChunkOffsetType64);
 
         uint64_t offset64;
         if (mDataSource->read_at(
diff --git a/media/tests/MediaFrameworkTest/res/drawable-hdpi/icon.png b/media/tests/MediaFrameworkTest/res/drawable-hdpi/icon.png
new file mode 100644
index 0000000..a02138e
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/media/tests/MediaFrameworkTest/res/drawable/icon.png b/media/tests/MediaFrameworkTest/res/drawable-mdpi/icon.png
similarity index 100%
rename from media/tests/MediaFrameworkTest/res/drawable/icon.png
rename to media/tests/MediaFrameworkTest/res/drawable-mdpi/icon.png
Binary files differ
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index 5a72fcd..2e11698 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -148,7 +148,7 @@
     @Override
     public void onCreate() {
         super.onCreate();
-        Log.i("TtsService", "TtsService.onCreate()");
+        Log.v("TtsService", "TtsService.onCreate()");
 
         mResolver = getContentResolver();
 
@@ -279,7 +279,6 @@
 
 
     private int isLanguageAvailable(String lang, String country, String variant) {
-        //Log.v("TtsService", "TtsService.isLanguageAvailable(" + lang + ", " + country + ", " +variant+")");
         int res = TextToSpeech.LANG_NOT_SUPPORTED;
         try {
             res = sNativeSynth.isLanguageAvailable(lang, country, variant);
@@ -462,6 +461,9 @@
                     result = TextToSpeech.SUCCESS;
                 }
                 Log.i("TtsService", "Stopped");
+            } else {
+                Log.e("TtsService", "TTS stop(): queue locked longer than expected");
+                result = TextToSpeech.ERROR;
             }
         } catch (InterruptedException e) {
           Log.e("TtsService", "TTS stop: tryLock interrupted");
@@ -575,6 +577,9 @@
                     result = TextToSpeech.SUCCESS;
                 }
                 Log.i("TtsService", "Stopped all");
+            } else {
+                Log.e("TtsService", "TTS stopAll(): queue locked longer than expected");
+                result = TextToSpeech.ERROR;
             }
         } catch (InterruptedException e) {
           Log.e("TtsService", "TTS stopAll: tryLock interrupted");
@@ -725,7 +730,7 @@
             }
         }
         Thread synth = (new Thread(new SynthThread()));
-        //synth.setPriority(Thread.MIN_PRIORITY);
+        synth.setPriority(Thread.MAX_PRIORITY);
         synth.start();
     }
 
@@ -799,7 +804,7 @@
             }
         }
         Thread synth = (new Thread(new SynthThread()));
-        //synth.setPriority(Thread.MIN_PRIORITY);
+        synth.setPriority(Thread.MAX_PRIORITY);
         synth.start();
     }
 
@@ -827,7 +832,7 @@
         if (cb == null){
             return;
         }
-        Log.i("TtsService", "TTS callback: dispatch started");
+        Log.v("TtsService", "TTS callback: dispatch started");
         // Broadcast to all clients the new value.
         final int N = mCallbacks.beginBroadcast();
         try {
@@ -837,7 +842,7 @@
             // the dead object for us.
         }
         mCallbacks.finishBroadcast();
-        Log.i("TtsService", "TTS callback: dispatch completed to " + N);
+        Log.v("TtsService", "TTS callback: dispatch completed to " + N);
     }
 
     private SpeechItem splitCurrentTextIfNeeded(SpeechItem currentSpeechItem){
@@ -888,7 +893,7 @@
             SoundResource sr = getSoundResource(mCurrentSpeechItem);
             // Synth speech as needed - synthesizer should call
             // processSpeechQueue to continue running the queue
-            Log.i("TtsService", "TTS processing: " + mCurrentSpeechItem.mText);
+            Log.v("TtsService", "TTS processing: " + mCurrentSpeechItem.mText);
             if (sr == null) {
                 if (mCurrentSpeechItem.mType == SpeechItem.TEXT) {
                     mCurrentSpeechItem = splitCurrentTextIfNeeded(mCurrentSpeechItem);
diff --git a/packages/VpnServices/res/values/strings.xml b/packages/VpnServices/res/values/strings.xml
index 074655e..d82f52a 100755
--- a/packages/VpnServices/res/values/strings.xml
+++ b/packages/VpnServices/res/values/strings.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
-<resources>
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Title for the VPN Services activity. -->
     <string name="app_label">VPN Services</string>
 
-    <string name="vpn_notification_title_connected">%s VPN connected</string>
-    <string name="vpn_notification_title_disconnected">%s VPN disconnected</string>
+    <string name="vpn_notification_title_connected"><xliff:g id="profilename">%s</xliff:g> VPN connected</string>
+    <string name="vpn_notification_title_disconnected"><xliff:g id="profilename">%s</xliff:g> VPN disconnected</string>
     <string name="vpn_notification_hint_disconnected">Touch to reconnect to a VPN.</string>
 </resources>
 
diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnService.java b/packages/VpnServices/src/com/android/server/vpn/VpnService.java
index e3ac996..53167f6 100644
--- a/packages/VpnServices/src/com/android/server/vpn/VpnService.java
+++ b/packages/VpnServices/src/com/android/server/vpn/VpnService.java
@@ -56,10 +56,6 @@
     private static final String REMOTE_IP = "net.ipremote";
     private static final String DNS_DOMAIN_SUFFICES = "net.dns.search";
 
-    private static final int CHALLENGE_ERROR_CODE = 5;
-    private static final int REMOTE_HUNG_UP_ERROR_CODE = 7;
-    private static final int AUTH_ERROR_CODE = 51;
-
     private final String TAG = VpnService.class.getSimpleName();
 
     // FIXME: profile is only needed in connecting phase, so we can just save
@@ -202,7 +198,7 @@
 
     private void waitUntilConnectedOrTimedout() throws IOException {
         sleep(2000); // 2 seconds
-        for (int i = 0; i < 60; i++) {
+        for (int i = 0; i < 80; i++) {
             if (mState != VpnState.CONNECTING) {
                 break;
             } else if (VPN_IS_UP.equals(
@@ -464,22 +460,8 @@
 
         synchronized int getSocketError() {
             for (DaemonProxy s : mDaemonList) {
-                switch (getResultFromSocket(s)) {
-                    case 0:
-                        continue;
-
-                    case AUTH_ERROR_CODE:
-                        return VpnManager.VPN_ERROR_AUTH;
-
-                    case CHALLENGE_ERROR_CODE:
-                        return VpnManager.VPN_ERROR_CHALLENGE;
-
-                    case REMOTE_HUNG_UP_ERROR_CODE:
-                        return VpnManager.VPN_ERROR_REMOTE_HUNG_UP;
-
-                    default:
-                        return VpnManager.VPN_ERROR_CONNECTION_FAILED;
-                }
+                int errCode = getResultFromSocket(s);
+                if (errCode != 0) return errCode;
             }
             return 0;
         }
diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java b/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
index 4892a7b..e5be847 100644
--- a/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
+++ b/packages/VpnServices/src/com/android/server/vpn/VpnServiceBinder.java
@@ -91,7 +91,8 @@
 
     void removeStates() {
         try {
-            new File(STATES_FILE_PATH).delete();
+            File f = new File(STATES_FILE_PATH);
+            if (f.exists()) f.delete();
         } catch (Throwable e) {
             if (DBG) Log.d("VpnServiceBinder", "     remove states: " + e);
         }
diff --git a/services/java/com/android/server/DockObserver.java b/services/java/com/android/server/DockObserver.java
index 2bd039f..73853595 100644
--- a/services/java/com/android/server/DockObserver.java
+++ b/services/java/com/android/server/DockObserver.java
@@ -36,17 +36,15 @@
     private static final String DOCK_UEVENT_MATCH = "DEVPATH=/devices/virtual/switch/dock";
     private static final String DOCK_STATE_PATH = "/sys/class/switch/dock/state";
 
-    private int mDockState;
-    private boolean mPendingIntent;
+    private int mDockState = Intent.EXTRA_DOCK_STATE_UNDOCKED;
+    private boolean mSystemReady;
 
     private final Context mContext;
 
     public DockObserver(Context context) {
         mContext = context;
-
-        startObserving(DOCK_UEVENT_MATCH);
-
         init();  // set initial status
+        startObserving(DOCK_UEVENT_MATCH);
     }
 
     @Override
@@ -55,55 +53,59 @@
             Log.v(TAG, "Dock UEVENT: " + event.toString());
         }
 
-        try {
-            update(Integer.parseInt(event.get("SWITCH_STATE")));
-        } catch (NumberFormatException e) {
-            Log.e(TAG, "Could not parse switch state from event " + event);
+        synchronized (this) {
+            try {
+                int newState = Integer.parseInt(event.get("SWITCH_STATE"));
+                if (newState != mDockState) {
+                    mDockState = newState;
+                    if (mSystemReady) {
+                        update();
+                    }
+                }
+            } catch (NumberFormatException e) {
+                Log.e(TAG, "Could not parse switch state from event " + event);
+            }
         }
     }
 
-    private synchronized final void init() {
+    private final void init() {
         char[] buffer = new char[1024];
 
-        int newState = mDockState;
         try {
             FileReader file = new FileReader(DOCK_STATE_PATH);
             int len = file.read(buffer, 0, 1024);
-            newState = Integer.valueOf((new String(buffer, 0, len)).trim());
+            mDockState = Integer.valueOf((new String(buffer, 0, len)).trim());
 
         } catch (FileNotFoundException e) {
             Log.w(TAG, "This kernel does not have dock station support");
         } catch (Exception e) {
             Log.e(TAG, "" , e);
         }
-
-        update(newState);
     }
 
-    private synchronized final void update(int newState) {
-        if (newState != mDockState) {
-            mDockState = newState;
-
-            mPendingIntent = true;
-            mHandler.sendEmptyMessage(0);
+    void systemReady() {
+        synchronized (this) {
+            // don't bother broadcasting undocked here
+            if (mDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) {
+                update();
+            }
+            mSystemReady = true;
         }
     }
 
-    private synchronized final void sendIntent() {
-        Log.d(TAG, "Broadcasting dock state " + mDockState);
-
-        // Pack up the values and broadcast them to everyone
-        Intent intent = new Intent(Intent.ACTION_DOCK_EVENT);
-        intent.putExtra(Intent.EXTRA_DOCK_STATE, mDockState);
-        mContext.sendStickyBroadcast(intent);
+    private final void update() {
+        mHandler.sendEmptyMessage(0);
     }
 
     private final Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            if (mPendingIntent) {
-                sendIntent();
-                mPendingIntent = false;
+            synchronized (this) {
+                Log.d(TAG, "Broadcasting dock state " + mDockState);
+                // Pack up the values and broadcast them to everyone
+                Intent intent = new Intent(Intent.ACTION_DOCK_EVENT);
+                intent.putExtra(Intent.EXTRA_DOCK_STATE, mDockState);
+                mContext.sendStickyBroadcast(intent);
             }
         }
     };
diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java
index c65c2be..7c33e37 100644
--- a/services/java/com/android/server/LocationManagerService.java
+++ b/services/java/com/android/server/LocationManagerService.java
@@ -49,6 +49,7 @@
 import android.location.ILocationListener;
 import android.location.ILocationManager;
 import android.location.ILocationProvider;
+import android.location.INetInitiatedListener;
 import android.location.Location;
 import android.location.LocationManager;
 import android.location.LocationProvider;
@@ -71,6 +72,7 @@
 import com.android.internal.location.GpsLocationProvider;
 import com.android.internal.location.LocationProviderProxy;
 import com.android.internal.location.MockProvider;
+import com.android.internal.location.GpsNetInitiatedHandler;
 
 /**
  * The service class that manages LocationProviders and issues location
@@ -118,6 +120,7 @@
     private final Context mContext;
     private IGeocodeProvider mGeocodeProvider;
     private IGpsStatusProvider mGpsStatusProvider;
+    private INetInitiatedListener mNetInitiatedListener;
     private LocationWorkerHandler mLocationHandler;
 
     // Cache the real providers for use in addTestProvider() and removeTestProvider()
@@ -541,6 +544,7 @@
             // Create a gps location provider
             GpsLocationProvider provider = new GpsLocationProvider(mContext, this);
             mGpsStatusProvider = provider.getGpsStatusProvider();
+            mNetInitiatedListener = provider.getNetInitiatedListener();
             LocationProviderProxy proxy = new LocationProviderProxy(LocationManager.GPS_PROVIDER, provider);
             addProvider(proxy);
             mGpsLocationProvider = proxy;
@@ -1131,6 +1135,22 @@
         }
     }
 
+    public boolean sendNiResponse(int notifId, int userResponse)
+    {
+        if (Binder.getCallingUid() != Process.myUid()) {
+            throw new SecurityException(
+                    "calling sendNiResponse from outside of the system is not allowed");
+        }
+        try {
+            return mNetInitiatedListener.sendNiResponse(notifId, userResponse);
+        }
+        catch (RemoteException e)
+        {
+            Log.e(TAG, "RemoteException in LocationManagerService.sendNiResponse");
+            return false;
+        }
+    }
+
     class ProximityAlert {
         final int  mUid;
         final double mLatitude;
diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java
index 2f4d716..8ec6ec3 100644
--- a/services/java/com/android/server/PackageManagerService.java
+++ b/services/java/com/android/server/PackageManagerService.java
@@ -35,6 +35,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ComponentInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageInstallObserver;
@@ -88,6 +89,7 @@
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
@@ -221,6 +223,14 @@
     // etc/permissions.xml file.
     final HashMap<String, String> mSharedLibraries = new HashMap<String, String>();
     
+    // Temporary for building the final shared libraries for an .apk.
+    String[] mTmpSharedLibraries = null;
+    
+    // These are the features this devices supports that were read from the
+    // etc/permissions.xml file.
+    final HashMap<String, FeatureInfo> mAvailableFeatures =
+            new HashMap<String, FeatureInfo>();
+    
     // All available activities, for your resolving pleasure.
     final ActivityIntentResolver mActivities =
             new ActivityIntentResolver();
@@ -671,7 +681,21 @@
                                 + parser.getPositionDescription());
                     } else {
                         Log.i(TAG, "Got library " + lname + " in " + lfile);
-                        this.mSharedLibraries.put(lname, lfile);
+                        mSharedLibraries.put(lname, lfile);
+                    }
+                    XmlUtils.skipCurrentTag(parser);
+                    continue;
+                    
+                } else if ("feature".equals(name)) {
+                    String fname = parser.getAttributeValue(null, "name");
+                    if (fname == null) {
+                        Log.w(TAG, "<feature> without name at "
+                                + parser.getPositionDescription());
+                    } else {
+                        Log.i(TAG, "Got feature " + fname);
+                        FeatureInfo fi = new FeatureInfo();
+                        fi.name = fname;
+                        mAvailableFeatures.put(fname, fi);
                     }
                     XmlUtils.skipCurrentTag(parser);
                     continue;
@@ -1001,12 +1025,30 @@
         Set<String> libSet;
         synchronized (mPackages) {
             libSet = mSharedLibraries.keySet();
+            int size = libSet.size();
+            if (size > 0) {
+                String[] libs = new String[size];
+                libSet.toArray(libs);
+                return libs;
+            }
         }
-        int size = libSet.size();
-        if (size > 0) {
-            String[] libs = new String[size];
-            libSet.toArray(libs);
-            return libs;
+        return null;
+    }
+
+    public FeatureInfo[] getSystemAvailableFeatures() {
+        Collection<FeatureInfo> featSet;
+        synchronized (mPackages) {
+            featSet = mAvailableFeatures.values();
+            int size = featSet.size();
+            if (size > 0) {
+                FeatureInfo[] features = new FeatureInfo[size+1];
+                featSet.toArray(features);
+                FeatureInfo fi = new FeatureInfo();
+                fi.reqGlEsVersion = SystemProperties.getInt("ro.opengles.version",
+                        FeatureInfo.GL_ES_VERSION_UNDEFINED);
+                features[size] = fi;
+                return features;
+            }
         }
         return null;
     }
@@ -2065,17 +2107,62 @@
         
         synchronized (mPackages) {
             // Check all shared libraries and map to their actual file path.
-            if (pkg.usesLibraryFiles != null) {
-                for (int i=0; i<pkg.usesLibraryFiles.length; i++) {
-                    String file = mSharedLibraries.get(pkg.usesLibraryFiles[i]);
+            if (pkg.usesLibraries != null || pkg.usesOptionalLibraries != null) {
+                if (mTmpSharedLibraries == null ||
+                        mTmpSharedLibraries.length < mSharedLibraries.size()) {
+                    mTmpSharedLibraries = new String[mSharedLibraries.size()];
+                }
+                int num = 0;
+                int N = pkg.usesLibraries != null ? pkg.usesLibraries.size() : 0;
+                for (int i=0; i<N; i++) {
+                    String file = mSharedLibraries.get(pkg.usesLibraries.get(i));
                     if (file == null) {
                         Log.e(TAG, "Package " + pkg.packageName
                                 + " requires unavailable shared library "
-                                + pkg.usesLibraryFiles[i] + "; ignoring!");
+                                + pkg.usesLibraries.get(i) + "; failing!");
                         mLastScanError = PackageManager.INSTALL_FAILED_MISSING_SHARED_LIBRARY;
                         return null;
                     }
-                    pkg.usesLibraryFiles[i] = file;
+                    mTmpSharedLibraries[num] = file;
+                    num++;
+                }
+                N = pkg.usesOptionalLibraries != null ? pkg.usesOptionalLibraries.size() : 0;
+                for (int i=0; i<N; i++) {
+                    String file = mSharedLibraries.get(pkg.usesOptionalLibraries.get(i));
+                    if (file == null) {
+                        Log.w(TAG, "Package " + pkg.packageName
+                                + " desires unavailable shared library "
+                                + pkg.usesOptionalLibraries.get(i) + "; ignoring!");
+                    } else {
+                        mTmpSharedLibraries[num] = file;
+                        num++;
+                    }
+                }
+                if (num > 0) {
+                    pkg.usesLibraryFiles = new String[num];
+                    System.arraycopy(mTmpSharedLibraries, 0,
+                            pkg.usesLibraryFiles, 0, num);
+                }
+                
+                if (pkg.reqFeatures != null) {
+                    N = pkg.reqFeatures.size();
+                    for (int i=0; i<N; i++) {
+                        FeatureInfo fi = pkg.reqFeatures.get(i);
+                        if ((fi.flags&FeatureInfo.FLAG_REQUIRED) == 0) {
+                            // Don't care.
+                            continue;
+                        }
+                        
+                        if (fi.name != null) {
+                            if (mAvailableFeatures.get(fi.name) == null) {
+                                Log.e(TAG, "Package " + pkg.packageName
+                                        + " requires unavailable feature "
+                                        + fi.name + "; failing!");
+                                mLastScanError = PackageManager.INSTALL_FAILED_MISSING_FEATURE;
+                                return null;
+                            }
+                        }
+                    }
                 }
             }
             
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 1249289..38df47b 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -150,6 +150,7 @@
     private int mUserState;
     private boolean mKeyboardVisible = false;
     private boolean mUserActivityAllowed = true;
+    private boolean mProximitySensorActive = false;
     private int mTotalDelaySetting;
     private int mKeylightDelay;
     private int mDimDelay;
@@ -948,6 +949,9 @@
 
     private void sendNotificationLocked(boolean on, int why)
     {
+        if (mProximitySensorActive) {
+            why = WindowManagerPolicy.OFF_BECAUSE_OF_PROXIMITY_SENSOR;
+        }
         if (!on) {
             mStillNeedSleepNotification = false;
         }
@@ -1252,6 +1256,10 @@
             if (noChangeLights) {
                 newState = (newState & ~LIGHTS_MASK) | (mPowerState & LIGHTS_MASK);
             }
+            if (mProximitySensorActive) {
+                // don't turn on the screen when the proximity sensor lock is held
+                newState = (newState & ~SCREEN_BRIGHT);
+            }
 
             if (batteryIsLow()) {
                 newState |= BATTERY_LOW_BIT;
@@ -1748,11 +1756,13 @@
                 Log.d(TAG, "userActivity mLastEventTime=" + mLastEventTime + " time=" + time
                         + " mUserActivityAllowed=" + mUserActivityAllowed
                         + " mUserState=0x" + Integer.toHexString(mUserState)
-                        + " mWakeLockState=0x" + Integer.toHexString(mWakeLockState));
+                        + " mWakeLockState=0x" + Integer.toHexString(mWakeLockState)
+                        + " mProximitySensorActive=" + mProximitySensorActive
+                        + " force=" + force);
             }
             if (mLastEventTime <= time || force) {
                 mLastEventTime = time;
-                if (mUserActivityAllowed || force) {
+                if ((mUserActivityAllowed && !mProximitySensorActive) || force) {
                     // Only turn on button backlights if a button was pressed.
                     if (eventType == BUTTON_EVENT) {
                         mUserState = (mKeyboardVisible ? ALL_BRIGHT : SCREEN_BUTTON_BRIGHT);
@@ -2042,22 +2052,37 @@
     }
 
     private void enableProximityLockLocked() {
+        if (mSpew) {
+            Log.d(TAG, "enableProximityLockLocked");
+        }
         mSensorManager.registerListener(this, mProximitySensor, SensorManager.SENSOR_DELAY_NORMAL);
     }
 
     private void disableProximityLockLocked() {
+        if (mSpew) {
+            Log.d(TAG, "disableProximityLockLocked");
+        }
         mSensorManager.unregisterListener(this);
+        mProximitySensorActive = false;
     }
 
     public void onSensorChanged(SensorEvent event) {
         long milliseconds = event.timestamp / 1000000;
-        if (event.values[0] == 0.0) {
-            goToSleep(milliseconds);
-        } else {
-            // proximity sensor negative events user activity.
-            // temporarily set mUserActivityAllowed to true so this will work
-            // even when the keyguard is on.
-            synchronized (mLocks) {
+        synchronized (mLocks) {
+            if (event.values[0] == 0.0) {
+                if (mSpew) {
+                    Log.d(TAG, "onSensorChanged: proximity active");
+                }
+                goToSleepLocked(milliseconds);
+                mProximitySensorActive = true;
+            } else {
+                // proximity sensor negative events user activity.
+                // temporarily set mUserActivityAllowed to true so this will work
+                // even when the keyguard is on.
+                if (mSpew) {
+                    Log.d(TAG, "onSensorChanged: proximity inactive");
+                }
+                mProximitySensorActive = false;
                 boolean savedActivityAllowed = mUserActivityAllowed;
                 mUserActivityAllowed = true;
                 userActivity(milliseconds, false);
diff --git a/services/java/com/android/server/SensorService.java b/services/java/com/android/server/SensorService.java
index ceef39f..4dfeb9d 100644
--- a/services/java/com/android/server/SensorService.java
+++ b/services/java/com/android/server/SensorService.java
@@ -84,12 +84,16 @@
                     if (hasSensor(sensor)) {
                         removeSensor(sensor);
                         try {
-                            deactivateIfUnused(sensor);
+                            deactivateIfUnusedLocked(sensor);
                         } catch (RemoteException e) {
                             Log.w(TAG, "RemoteException in binderDied");
                         }
                     }
                 }
+                if (mListeners.size() == 0) {
+                    _sensors_control_wake();
+                    _sensors_control_close();
+                }
                 mListeners.notify();
             }
         }
@@ -102,9 +106,12 @@
     }
     
     public Bundle getDataChannel() throws RemoteException {
-        return _sensors_control_open();
+        // synchronize so we do not require sensor HAL to be thread-safe.
+        synchronized(mListeners) {
+            return _sensors_control_open();
+        }
     }
-    
+
     public boolean enableSensor(IBinder binder, String name, int sensor, int enable)
              throws RemoteException {
         if (localLOGV) Log.d(TAG, "enableSensor " + name + "(#" + sensor + ") " + enable);
@@ -163,7 +170,7 @@
                 l.addSensor(sensor, enable);
             } else {
                 l.removeSensor(sensor);
-                deactivateIfUnused(sensor);
+                deactivateIfUnusedLocked(sensor);
                 if (l.mSensors == 0) {
                     mListeners.remove(l);
                     binder.unlinkToDeath(l, 0);
@@ -173,12 +180,13 @@
             
             if (mListeners.size() == 0) {
                 _sensors_control_wake();
+                _sensors_control_close();
             }
         }        
         return true;
     }
 
-    void deactivateIfUnused(int sensor) throws RemoteException {
+    private void deactivateIfUnusedLocked(int sensor) throws RemoteException {
         int size = mListeners.size();
         for (int i=0 ; i<size ; i++) {
             if (mListeners.get(i).hasSensor(sensor))
@@ -187,10 +195,11 @@
         _sensors_control_activate(sensor, false);
     }
 
-    ArrayList<Listener> mListeners = new ArrayList<Listener>();
+    private ArrayList<Listener> mListeners = new ArrayList<Listener>();
 
     private static native int _sensors_control_init();
     private static native Bundle _sensors_control_open();
+    private static native int _sensors_control_close();
     private static native boolean _sensors_control_activate(int sensor, boolean activate);
     private static native int _sensors_control_set_delay(int ms);
     private static native int _sensors_control_wake();
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 98f35f4..df01c61 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -19,7 +19,6 @@
 import com.android.server.am.ActivityManagerService;
 import com.android.server.status.StatusBarService;
 
-import dalvik.system.PathClassLoader;
 import dalvik.system.VMRuntime;
 
 import android.app.ActivityManagerNative;
@@ -42,9 +41,6 @@
 import android.util.Log;
 import android.accounts.AccountManagerService;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
 class ServerThread extends Thread {
     private static final String TAG = "SystemServer";
     private final static boolean INCLUDE_DEMO = false;
@@ -396,6 +392,7 @@
         if (wallpaper != null) wallpaper.systemReady();
         if (battery != null) battery.systemReady();
         if (connectivity != null) connectivity.systemReady();
+        if (dock != null) dock.systemReady();
         Watchdog.getInstance().start();
 
         Looper.loop();
diff --git a/services/java/com/android/server/WallpaperManagerService.java b/services/java/com/android/server/WallpaperManagerService.java
index 3c62aa0..c101463 100644
--- a/services/java/com/android/server/WallpaperManagerService.java
+++ b/services/java/com/android/server/WallpaperManagerService.java
@@ -32,6 +32,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.res.Resources;
 import android.os.Binder;
+import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.os.FileObserver;
@@ -232,6 +233,16 @@
                 mWidth = width;
                 mHeight = height;
                 saveSettingsLocked();
+                if (mWallpaperConnection != null) {
+                    if (mWallpaperConnection.mEngine != null) {
+                        try {
+                            mWallpaperConnection.mEngine.setDesiredSize(
+                                    width, height);
+                        } catch (RemoteException e) {
+                        }
+                        notifyCallbacksLocked();
+                    }
+                }
             }
         }
     }
@@ -248,9 +259,14 @@
         }
     }
 
-    public ParcelFileDescriptor getWallpaper(IWallpaperManagerCallback cb) {
+    public ParcelFileDescriptor getWallpaper(IWallpaperManagerCallback cb,
+            Bundle outParams) {
         synchronized (mLock) {
             try {
+                if (outParams != null) {
+                    outParams.putInt("width", mWidth);
+                    outParams.putInt("height", mHeight);
+                }
                 mCallbacks.register(cb);
                 File f = WALLPAPER_FILE;
                 if (!f.exists()) {
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 1384ede..81e0136 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -412,6 +412,8 @@
     // to another, and this is the higher one in Z-order.
     WindowState mUpperWallpaperTarget = null;
     int mWallpaperAnimLayerAdjustment;
+    float mLastWallpaperX;
+    float mLastWallpaperY;
     
     AppWindowToken mFocusedApp = null;
 
@@ -1217,7 +1219,8 @@
                     + w.isReadyForDisplay() + " drawpending=" + w.mDrawPending
                     + " commitdrawpending=" + w.mCommitDrawPending);
             if ((w.mAttrs.flags&FLAG_SHOW_WALLPAPER) != 0 && w.isReadyForDisplay()
-                    && !w.mDrawPending && !w.mCommitDrawPending) {
+                    && (mWallpaperTarget == w
+                            || (!w.mDrawPending && !w.mCommitDrawPending))) {
                 if (DEBUG_WALLPAPER) Log.v(TAG,
                         "Found wallpaper activity: #" + i + "=" + w);
                 foundW = w;
@@ -1370,6 +1373,11 @@
         // what is below it for later.
         foundW = foundI > 0 ? (WindowState)localmWindows.get(foundI-1) : null;
         
+        if (visible) {
+            mLastWallpaperX = mWallpaperTarget.mWallpaperX;
+            mLastWallpaperY = mWallpaperTarget.mWallpaperY;
+        }
+        
         // Start stepping backwards from here, ensuring that our wallpaper windows
         // are correctly placed.
         int curTokenIndex = mWallpaperTokens.size();
@@ -1382,8 +1390,7 @@
                 WindowState wallpaper = token.windows.get(curWallpaperIndex);
                 
                 if (visible) {
-                    updateWallpaperOffsetLocked(mWallpaperTarget,
-                            wallpaper, dw, dh);                        
+                    updateWallpaperOffsetLocked(wallpaper, dw, dh);                        
                 }
                 
                 // First, make sure the client has the current visibility
@@ -1454,36 +1461,35 @@
         }
     }
 
-    boolean updateWallpaperOffsetLocked(WindowState target,
-            WindowState wallpaperWin, int dw, int dh) {
+    boolean updateWallpaperOffsetLocked(WindowState wallpaperWin, int dw, int dh) {
         boolean changed = false;
         boolean rawChanged = false;
-        if (target.mWallpaperX >= 0) {
+        if (mLastWallpaperX >= 0) {
             int availw = wallpaperWin.mFrame.right-wallpaperWin.mFrame.left-dw;
-            int offset = availw > 0 ? -(int)(availw*target.mWallpaperX+.5f) : 0;
+            int offset = availw > 0 ? -(int)(availw*mLastWallpaperX+.5f) : 0;
             changed = wallpaperWin.mXOffset != offset;
             if (changed) {
                 if (DEBUG_WALLPAPER) Log.v(TAG, "Update wallpaper "
                         + wallpaperWin + " x: " + offset);
                 wallpaperWin.mXOffset = offset;
             }
-            if (wallpaperWin.mWallpaperX != target.mWallpaperX) {
-                wallpaperWin.mWallpaperX = target.mWallpaperX;
+            if (wallpaperWin.mWallpaperX != mLastWallpaperX) {
+                wallpaperWin.mWallpaperX = mLastWallpaperX;
                 rawChanged = true;
             }
         }
         
-        if (target.mWallpaperY >= 0) {
+        if (mLastWallpaperY >= 0) {
             int availh = wallpaperWin.mFrame.bottom-wallpaperWin.mFrame.top-dh;
-            int offset = availh > 0 ? -(int)(availh*target.mWallpaperY+.5f) : 0;
+            int offset = availh > 0 ? -(int)(availh*mLastWallpaperY+.5f) : 0;
             if (wallpaperWin.mYOffset != offset) {
                 if (DEBUG_WALLPAPER) Log.v(TAG, "Update wallpaper "
                         + wallpaperWin + " y: " + offset);
                 changed = true;
                 wallpaperWin.mYOffset = offset;
             }
-            if (wallpaperWin.mWallpaperY != target.mWallpaperY) {
-                wallpaperWin.mWallpaperY = target.mWallpaperY;
+            if (wallpaperWin.mWallpaperY != mLastWallpaperY) {
+                wallpaperWin.mWallpaperY = mLastWallpaperY;
                 rawChanged = true;
             }
         }
@@ -1510,6 +1516,8 @@
         
         WindowState target = mWallpaperTarget;
         if (target != null) {
+            mLastWallpaperX = target.mWallpaperX;
+            mLastWallpaperY = target.mWallpaperY;
             int curTokenIndex = mWallpaperTokens.size();
             while (curTokenIndex > 0) {
                 curTokenIndex--;
@@ -1518,7 +1526,7 @@
                 while (curWallpaperIndex > 0) {
                     curWallpaperIndex--;
                     WindowState wallpaper = token.windows.get(curWallpaperIndex);
-                    if (updateWallpaperOffsetLocked(target, wallpaper, dw, dh)) {
+                    if (updateWallpaperOffsetLocked(wallpaper, dw, dh)) {
                         wallpaper.computeShownFrameLocked();
                         changed = true;
                     }
@@ -1544,8 +1552,7 @@
                 curWallpaperIndex--;
                 WindowState wallpaper = token.windows.get(curWallpaperIndex);
                 if (visible) {
-                    updateWallpaperOffsetLocked(mWallpaperTarget,
-                            wallpaper, dw, dh);                        
+                    updateWallpaperOffsetLocked(wallpaper, dw, dh);                        
                 }
                 
                 if (wallpaper.mWallpaperVisible != visible) {
@@ -2187,6 +2194,10 @@
             }
             newConfig = updateOrientationFromAppTokensLocked(null, null);
             performLayoutAndPlaceSurfacesLocked();
+            if (displayed && win.mIsWallpaper) {
+                updateWallpaperOffsetLocked(win, mDisplay.getWidth(),
+                        mDisplay.getHeight());
+            }
             if (win.mAppToken != null) {
                 win.mAppToken.updateReportedVisibilityLocked();
             }
@@ -3009,6 +3020,23 @@
                 return;
             }
 
+            // If this is a translucent or wallpaper window, then don't
+            // show a starting window -- the current effect (a full-screen
+            // opaque starting window that fades away to the real contents
+            // when it is ready) does not work for this.
+            if (theme != 0) {
+                AttributeCache.Entry ent = AttributeCache.instance().get(pkg, theme,
+                        com.android.internal.R.styleable.Window);
+                if (ent.array.getBoolean(
+                        com.android.internal.R.styleable.Window_windowIsTranslucent, false)) {
+                    return;
+                }
+                if (ent.array.getBoolean(
+                        com.android.internal.R.styleable.Window_windowShowWallpaper, false)) {
+                    return;
+                }
+            }
+            
             mStartingIconInTransition = true;
             wtoken.startingData = new StartingData(
                     pkg, theme, nonLocalizedLabel,
@@ -6543,10 +6571,9 @@
             visibleInsets.right = frame.right-visible.right;
             visibleInsets.bottom = frame.bottom-visible.bottom;
 
-            if (mIsWallpaper && (fw != frame.width() || fh != frame.height())
-                    && mWallpaperTarget != null) {
-                updateWallpaperOffsetLocked(mWallpaperTarget, this,
-                        mDisplay.getWidth(), mDisplay.getHeight());
+            if (mIsWallpaper && (fw != frame.width() || fh != frame.height())) {
+                updateWallpaperOffsetLocked(this, mDisplay.getWidth(),
+                        mDisplay.getHeight());
             }
             
             if (localLOGV) {
@@ -6779,10 +6806,10 @@
         }
 
         // This must be called while inside a transaction.
-        void commitFinishDrawingLocked(long currentTime) {
+        boolean commitFinishDrawingLocked(long currentTime) {
             //Log.i(TAG, "commitFinishDrawingLocked: " + mSurface);
             if (!mCommitDrawPending) {
-                return;
+                return false;
             }
             mCommitDrawPending = false;
             mReadyToShow = true;
@@ -6791,6 +6818,7 @@
             if (atoken == null || atoken.allDrawn || starting) {
                 performShowLocked();
             }
+            return true;
         }
 
         // This must be called while inside a transaction.
@@ -8639,6 +8667,7 @@
                 restart = false;
 
                 boolean tokenMayBeDrawn = false;
+                boolean wallpaperMayChange = false;
 
                 mPolicy.beginAnimationLw(dw, dh);
 
@@ -8649,7 +8678,12 @@
 
                     if (w.mSurface != null) {
                         // Execute animation.
-                        w.commitFinishDrawingLocked(currentTime);
+                        if (w.commitFinishDrawingLocked(currentTime)) {
+                            if ((w.mAttrs.flags
+                                    & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER) != 0) {
+                                wallpaperMayChange = true;
+                            }
+                        }
                         if (w.stepAnimationLocked(currentTime, dw, dh)) {
                             animating = true;
                             //w.dump("  ");
@@ -8787,6 +8821,8 @@
                         mH.removeMessages(H.APP_TRANSITION_TIMEOUT);
 
                         adjustWallpaperWindowsLocked();
+                        wallpaperMayChange = false;
+                        
                         if (DEBUG_APP_TRANSITIONS) Log.v(TAG,
                                 "New wallpaper target=" + mWallpaperTarget
                                 + ", lower target=" + mLowerWallpaperTarget
@@ -8885,6 +8921,13 @@
                         restart = true;
                     }
                 }
+                
+                if (wallpaperMayChange) {
+                    if (adjustWallpaperWindowsLocked()) {
+                        assignLayersLocked();
+                    }
+                }
+                
             } while (restart);
 
             // THIRD LOOP: Update the surfaces of all windows.
@@ -9834,6 +9877,10 @@
             pw.print("  mInputMethodTarget="); pw.println(mInputMethodTarget);
             pw.print("  mInputMethodWindow="); pw.println(mInputMethodWindow);
             pw.print("  mWallpaperTarget="); pw.println(mWallpaperTarget);
+            if (mLowerWallpaperTarget != null && mUpperWallpaperTarget != null) {
+                pw.print("  mLowerWallpaperTarget="); pw.println(mLowerWallpaperTarget);
+                pw.print("  mUpperWallpaperTarget="); pw.println(mUpperWallpaperTarget);
+            }
             pw.print("  mInTouchMode="); pw.println(mInTouchMode);
             pw.print("  mSystemBooted="); pw.print(mSystemBooted);
                     pw.print(" mDisplayEnabled="); pw.println(mDisplayEnabled);
@@ -9848,6 +9895,8 @@
                     pw.print(mInputMethodAnimLayerAdjustment);
                     pw.print("  mWallpaperAnimLayerAdjustment=");
                     pw.println(mWallpaperAnimLayerAdjustment);
+            pw.print("  mLastWallpaperX="); pw.print(mLastWallpaperX);
+                    pw.print(" mLastWallpaperY="); pw.println(mLastWallpaperY);
             pw.print("  mDisplayFrozen="); pw.print(mDisplayFrozen);
                     pw.print(" mWindowsFreezingScreen="); pw.print(mWindowsFreezingScreen);
                     pw.print(" mAppsFreezingScreen="); pw.println(mAppsFreezingScreen);
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 23eb7c1..d4e69c0 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -239,6 +239,9 @@
     // How long to wait after going idle before forcing apps to GC.
     static final int GC_TIMEOUT = 5*1000;
 
+    // The minimum amount of time between successive GC requests for a process.
+    static final int GC_MIN_INTERVAL = 60*1000;
+
     // How long we wait until giving up on an activity telling us it has
     // finished destroying itself.
     static final int DESTROY_TIMEOUT = 10*1000;
@@ -253,10 +256,23 @@
     // is no longer considered to be a relaunch of the service.
     static final int SERVICE_RESTART_DURATION = 5*1000;
 
+    // How long a service needs to be running until it will start back at
+    // SERVICE_RESTART_DURATION after being killed.
+    static final int SERVICE_RESET_RUN_DURATION = 60*1000;
+
+    // Multiplying factor to increase restart duration time by, for each time
+    // a service is killed before it has run for SERVICE_RESET_RUN_DURATION.
+    static final int SERVICE_RESTART_DURATION_FACTOR = 4;
+    
+    // The minimum amount of time between restarting services that we allow.
+    // That is, when multiple services are restarting, we won't allow each
+    // to restart less than this amount of time from the last one.
+    static final int SERVICE_MIN_RESTART_TIME_BETWEEN = 10*1000;
+
     // Maximum amount of time for there to be no activity on a service before
     // we consider it non-essential and allow its process to go on the
     // LRU background list.
-    static final int MAX_SERVICE_INACTIVITY = 10*60*1000;
+    static final int MAX_SERVICE_INACTIVITY = 30*60*1000;
     
     // How long we wait until we timeout on key dispatching.
     static final int KEY_DISPATCHING_TIMEOUT = 5*1000;
@@ -1102,8 +1118,7 @@
                         }
                     }
                 }
-                break;
-            }
+            } break;
             case SHOW_UID_ERROR_MSG: {
                 // XXX This is a temporary dialog, no need to localize.
                 AlertDialog d = new BaseErrorDialog(mContext);
@@ -1147,7 +1162,7 @@
                 synchronized (ActivityManagerService.this) {
                     resumeTopActivityLocked(null);
                 }
-            }
+            } break;
             case PROC_START_TIMEOUT_MSG: {
                 if (mDidDexOpt) {
                     mDidDexOpt = false;
@@ -1160,12 +1175,12 @@
                 synchronized (ActivityManagerService.this) {
                     processStartTimedOutLocked(app);
                 }
-            }
+            } break;
             case DO_PENDING_ACTIVITY_LAUNCHES_MSG: {
                 synchronized (ActivityManagerService.this) {
                     doPendingActivityLaunchesLocked(true);
                 }
-            }
+            } break;
             case KILL_APPLICATION_MSG: {
                 synchronized (ActivityManagerService.this) {
                     int uid = msg.arg1;
@@ -2900,7 +2915,7 @@
      * or null if none was found.
      */
     private final HistoryRecord performClearTaskLocked(int taskId,
-            HistoryRecord newR, boolean doClear) {
+            HistoryRecord newR, int launchFlags, boolean doClear) {
         int i = mHistory.size();
         
         // First find the requested task.
@@ -2943,7 +2958,8 @@
                 // Finally, if this is a normal launch mode (that is, not
                 // expecting onNewIntent()), then we will finish the current
                 // instance of the activity so a new fresh one can be started.
-                if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE) {
+                if (ret.launchMode == ActivityInfo.LAUNCH_MULTIPLE
+                        && (launchFlags&Intent.FLAG_ACTIVITY_SINGLE_TOP) == 0) {
                     if (!ret.finishing) {
                         int index = indexOfTokenLocked(ret);
                         if (index >= 0) {
@@ -3340,7 +3356,7 @@
                         // cases this means we are resetting the task to its
                         // initial state.
                         HistoryRecord top = performClearTaskLocked(
-                                taskTop.task.taskId, r, true);
+                                taskTop.task.taskId, r, launchFlags, true);
                         if (top != null) {
                             if (top.frontOfTask) {
                                 // Activity aliases may mean we use different
@@ -3483,7 +3499,7 @@
                 // task, but the caller has asked to clear that task if the
                 // activity is already running.
                 HistoryRecord top = performClearTaskLocked(
-                        sourceRecord.task.taskId, r, true);
+                        sourceRecord.task.taskId, r, launchFlags, true);
                 if (top != null) {
                     logStartActivity(LOG_AM_NEW_INTENT, r, top.task);
                     deliverNewIntentLocked(top, r.intent);
@@ -4443,17 +4459,26 @@
                 if (!haveBg) {
                     Log.i(TAG, "Low Memory: No more background processes.");
                     EventLog.writeEvent(LOG_AM_LOW_MEMORY, mLRUProcesses.size());
+                    long now = SystemClock.uptimeMillis();
                     for (i=0; i<count; i++) {
                         ProcessRecord rec = mLRUProcesses.get(i);
-                        if (rec.thread != null) {
-                            rec.lastRequestedGc = SystemClock.uptimeMillis();
-                            try {
-                                rec.thread.scheduleLowMemory();
-                            } catch (RemoteException e) {
-                                // Don't care if the process is gone.
+                        if (rec.thread != null &&
+                                (rec.lastLowMemory+GC_MIN_INTERVAL) <= now) {
+                            // The low memory report is overriding any current
+                            // state for a GC request.  Make sure to do
+                            // visible/foreground processes first.
+                            if (rec.setAdj <= VISIBLE_APP_ADJ) {
+                                rec.lastRequestedGc = 0;
+                            } else {
+                                rec.lastRequestedGc = rec.lastLowMemory;
                             }
+                            rec.reportLowMemory = true;
+                            rec.lastLowMemory = now;
+                            mProcessesToGc.remove(rec);
+                            addProcessToGcListLocked(rec);
                         }
                     }
+                    scheduleAppGcsLocked();
                 }
             }
         } else if (Config.LOGD) {
@@ -5137,7 +5162,7 @@
                     isRestrictedBackupMode || !normalMode,
                     mConfiguration, getCommonServicesLocked());
             updateLRUListLocked(app, false);
-            app.lastRequestedGc = SystemClock.uptimeMillis();
+            app.lastRequestedGc = app.lastLowMemory = SystemClock.uptimeMillis();
         } catch (Exception e) {
             // todo: Yikes!  What should we do?  For now we will try to
             // start another process, but that could easily get us in
@@ -8949,6 +8974,24 @@
                         "OnHold Norm", "OnHold PERS", false);
             }
 
+            if (mProcessesToGc.size() > 0) {
+                if (needSep) pw.println(" ");
+                needSep = true;
+                pw.println("  Processes that are waiting to GC:");
+                long now = SystemClock.uptimeMillis();
+                for (int i=0; i<mProcessesToGc.size(); i++) {
+                    ProcessRecord proc = mProcessesToGc.get(i);
+                    pw.print("    Process "); pw.println(proc);
+                    pw.print("      lowMem="); pw.print(proc.reportLowMemory);
+                            pw.print(", last gced=");
+                            pw.print(now-proc.lastRequestedGc);
+                            pw.print(" ms ago, last lowMwm=");
+                            pw.print(now-proc.lastLowMemory);
+                            pw.println(" ms ago");
+                    
+                }
+            }
+            
             if (mProcessCrashTimes.getMap().size() > 0) {
                 if (needSep) pw.println(" ");
                 needSep = true;
@@ -10112,8 +10155,9 @@
             boolean allowCancel) {
         boolean canceled = false;
         
+        final long now = SystemClock.uptimeMillis();
         long minDuration = SERVICE_RESTART_DURATION;
-        long resetTime = minDuration*2*2*2;
+        long resetTime = SERVICE_RESET_RUN_DURATION;
         
         // Any delivered but not yet finished starts should be put back
         // on the pending list.
@@ -10149,24 +10193,46 @@
             // the beginning, so we don't infinitely increase the duration
             // on a service that just occasionally gets killed (which is
             // a normal case, due to process being killed to reclaim memory).
-            long now = SystemClock.uptimeMillis();
             if (now > (r.restartTime+resetTime)) {
                 r.restartCount = 1;
                 r.restartDelay = minDuration;
             } else {
-                r.restartDelay *= 4;
+                r.restartDelay *= SERVICE_RESTART_DURATION_FACTOR;
                 if (r.restartDelay < minDuration) {
                     r.restartDelay = minDuration;
                 }
             }
         }
+        
+        r.nextRestartTime = now + r.restartDelay;
+        
+        // Make sure that we don't end up restarting a bunch of services
+        // all at the same time.
+        boolean repeat;
+        do {
+            repeat = false;
+            for (int i=mRestartingServices.size()-1; i>=0; i--) {
+                ServiceRecord r2 = mRestartingServices.get(i);
+                if (r2 != r && r.nextRestartTime
+                        >= (r2.nextRestartTime-SERVICE_MIN_RESTART_TIME_BETWEEN)
+                        && r.nextRestartTime
+                        < (r2.nextRestartTime+SERVICE_MIN_RESTART_TIME_BETWEEN)) {
+                    r.nextRestartTime = r2.nextRestartTime + SERVICE_MIN_RESTART_TIME_BETWEEN;
+                    r.restartDelay = r.nextRestartTime - now;
+                    repeat = true;
+                    break;
+                }
+            }
+        } while (repeat);
+        
         if (!mRestartingServices.contains(r)) {
             mRestartingServices.add(r);
         }
+        
         r.cancelNotification();
         
         mHandler.removeCallbacks(r.restarter);
-        mHandler.postDelayed(r.restarter, r.restartDelay);
+        mHandler.postAtTime(r.restarter, r.nextRestartTime);
         r.nextRestartTime = SystemClock.uptimeMillis() + r.restartDelay;
         Log.w(TAG, "Scheduling restart of crashed service "
                 + r.shortName + " in " + r.restartDelay + "ms");
@@ -12656,15 +12722,15 @@
         if (app == TOP_APP) {
             // The last app on the list is the foreground app.
             adj = FOREGROUND_APP_ADJ;
-            app.adjType = "top";
+            app.adjType = "top-activity";
         } else if (app.instrumentationClass != null) {
             // Don't want to kill running instrumentation.
             adj = FOREGROUND_APP_ADJ;
-            app.adjType = "instr";
+            app.adjType = "instrumentation";
         } else if (app.persistentActivities > 0) {
             // Special persistent activities...  shouldn't be used these days.
             adj = FOREGROUND_APP_ADJ;
-            app.adjType = "pers";
+            app.adjType = "persistent";
         } else if (app.curReceiver != null ||
                 (mPendingBroadcast != null && mPendingBroadcast.curApp == app)) {
             // An app that is currently receiving a broadcast also
@@ -12693,6 +12759,7 @@
         } else if ((N=app.activities.size()) != 0) {
             // This app is in the background with paused activities.
             adj = hiddenAdj;
+            app.adjType = "bg-activities";
             for (int j=0; j<N; j++) {
                 if (((HistoryRecord)app.activities.get(j)).visible) {
                     // This app has a visible activity!
@@ -12732,7 +12799,7 @@
             // its services we may bump it up from there.
             if (adj > hiddenAdj) {
                 adj = hiddenAdj;
-                app.adjType = "services";
+                app.adjType = "bg-services";
             }
             final long now = SystemClock.uptimeMillis();
             // This process is more important if the top activity is
@@ -12874,7 +12941,12 @@
         try {
             app.lastRequestedGc = SystemClock.uptimeMillis();
             if (app.thread != null) {
-                app.thread.processInBackground();
+                if (app.reportLowMemory) {
+                    app.reportLowMemory = false;
+                    app.thread.scheduleLowMemory();
+                } else {
+                    app.thread.processInBackground();
+                }
             }
         } catch (Exception e) {
             // whatever.
@@ -12903,14 +12975,24 @@
         if (canGcNow()) {
             while (mProcessesToGc.size() > 0) {
                 ProcessRecord proc = mProcessesToGc.remove(0);
-                if (proc.curRawAdj > VISIBLE_APP_ADJ) {
-                    // To avoid spamming the system, we will GC processes one
-                    // at a time, waiting a few seconds between each.
-                    performAppGcLocked(proc);
-                    scheduleAppGcsLocked();
-                    return;
+                if (proc.curRawAdj > VISIBLE_APP_ADJ || proc.reportLowMemory) {
+                    if ((proc.lastRequestedGc+GC_MIN_INTERVAL)
+                            <= SystemClock.uptimeMillis()) {
+                        // To avoid spamming the system, we will GC processes one
+                        // at a time, waiting a few seconds between each.
+                        performAppGcLocked(proc);
+                        scheduleAppGcsLocked();
+                        return;
+                    } else {
+                        // It hasn't been long enough since we last GCed this
+                        // process...  put it in the list to wait for its time.
+                        addProcessToGcListLocked(proc);
+                        break;
+                    }
                 }
             }
+            
+            scheduleAppGcsLocked();
         }
     }
     
@@ -12931,8 +13013,39 @@
      */
     final void scheduleAppGcsLocked() {
         mHandler.removeMessages(GC_BACKGROUND_PROCESSES_MSG);
-        Message msg = mHandler.obtainMessage(GC_BACKGROUND_PROCESSES_MSG);
-        mHandler.sendMessageDelayed(msg, GC_TIMEOUT);
+        
+        if (mProcessesToGc.size() > 0) {
+            // Schedule a GC for the time to the next process.
+            ProcessRecord proc = mProcessesToGc.get(0);
+            Message msg = mHandler.obtainMessage(GC_BACKGROUND_PROCESSES_MSG);
+            
+            long when = mProcessesToGc.get(0).lastRequestedGc + GC_MIN_INTERVAL;
+            long now = SystemClock.uptimeMillis();
+            if (when < (now+GC_TIMEOUT)) {
+                when = now + GC_TIMEOUT;
+            }
+            mHandler.sendMessageAtTime(msg, when);
+        }
+    }
+    
+    /**
+     * Add a process to the array of processes waiting to be GCed.  Keeps the
+     * list in sorted order by the last GC time.  The process can't already be
+     * on the list.
+     */
+    final void addProcessToGcListLocked(ProcessRecord proc) {
+        boolean added = false;
+        for (int i=mProcessesToGc.size()-1; i>=0; i--) {
+            if (mProcessesToGc.get(i).lastRequestedGc <
+                    proc.lastRequestedGc) {
+                added = true;
+                mProcessesToGc.add(i+1, proc);
+                break;
+            }
+        }
+        if (!added) {
+            mProcessesToGc.add(0, proc);
+        }
     }
     
     /**
@@ -12942,11 +13055,11 @@
      */
     final void scheduleAppGcLocked(ProcessRecord app) {
         long now = SystemClock.uptimeMillis();
-        if ((app.lastRequestedGc+5000) > now) {
+        if ((app.lastRequestedGc+GC_MIN_INTERVAL) > now) {
             return;
         }
         if (!mProcessesToGc.contains(app)) {
-            mProcessesToGc.add(app);
+            addProcessToGcListLocked(app);
             scheduleAppGcsLocked();
         }
     }
diff --git a/services/java/com/android/server/am/ProcessRecord.java b/services/java/com/android/server/am/ProcessRecord.java
index 544d034..76fdf09 100644
--- a/services/java/com/android/server/am/ProcessRecord.java
+++ b/services/java/com/android/server/am/ProcessRecord.java
@@ -71,6 +71,8 @@
     ComponentName instrumentationResultClass;// copy of instrumentationClass
     BroadcastRecord curReceiver;// receiver currently running in the app
     long lastRequestedGc;       // When we last asked the app to do a gc
+    long lastLowMemory;         // When we last told the app that memory is low
+    boolean reportLowMemory;    // Set to true when waiting to report low mem
     int lastPss;                // Last pss size reported by app.
     String adjType;             // Debugging: primary thing impacting oom_adj.
     Object adjSource;           // Debugging: option dependent object.
diff --git a/services/java/com/android/server/am/ServiceRecord.java b/services/java/com/android/server/am/ServiceRecord.java
index afbf9c7..2534410 100644
--- a/services/java/com/android/server/am/ServiceRecord.java
+++ b/services/java/com/android/server/am/ServiceRecord.java
@@ -136,6 +136,7 @@
         if (permission != null) {
             pw.print(prefix); pw.print("permission="); pw.println(permission);
         }
+        long now = SystemClock.uptimeMillis();
         pw.print(prefix); pw.print("baseDir="); pw.print(baseDir);
                 if (!resDir.equals(baseDir)) pw.print(" resDir="); pw.print(resDir);
                 pw.print(" dataDir="); pw.println(dataDir);
@@ -145,8 +146,8 @@
                     pw.print(" foregroundId="); pw.print(foregroundId);
                     pw.print(" foregroundNoti="); pw.println(foregroundNoti);
         }
-        pw.print(prefix); pw.print("lastActivity="); pw.print(lastActivity);
-                pw.print(" executingStart="); pw.print(executingStart);
+        pw.print(prefix); pw.print("lastActivity="); pw.print(lastActivity-now);
+                pw.print(" executingStart="); pw.print(executingStart-now);
                 pw.print(" restartTime="); pw.println(restartTime);
         if (startRequested || lastStartId != 0) {
             pw.print(prefix); pw.print("startRequested="); pw.print(startRequested);
@@ -158,8 +159,8 @@
                 || restartDelay != 0 || nextRestartTime != 0) {
             pw.print(prefix); pw.print("executeNesting="); pw.print(executeNesting);
                     pw.print(" restartCount="); pw.print(restartCount);
-                    pw.print(" restartDelay="); pw.print(restartDelay);
-                    pw.print(" nextRestartTime="); pw.print(nextRestartTime);
+                    pw.print(" restartDelay="); pw.print(restartDelay-now);
+                    pw.print(" nextRestartTime="); pw.print(nextRestartTime-now);
                     pw.print(" crashCount="); pw.println(crashCount);
         }
         if (deliveredStarts.size() > 0) {
diff --git a/services/jni/com_android_server_SensorService.cpp b/services/jni/com_android_server_SensorService.cpp
index 7390786..3911d1f 100644
--- a/services/jni/com_android_server_SensorService.cpp
+++ b/services/jni/com_android_server_SensorService.cpp
@@ -111,6 +111,15 @@
     return bundle;
 }
 
+static jint
+android_close(JNIEnv *env, jclass clazz)
+{
+    if (sSensorDevice->close_data_source)
+        return sSensorDevice->close_data_source(sSensorDevice);
+    else
+        return 0;
+}
+
 static jboolean
 android_activate(JNIEnv *env, jclass clazz, jint sensor, jboolean activate)
 {
@@ -135,6 +144,7 @@
 static JNINativeMethod gMethods[] = {
     {"_sensors_control_init",     "()I",   (void*) android_init },
     {"_sensors_control_open",     "()Landroid/os/Bundle;",  (void*) android_open },
+    {"_sensors_control_close",     "()I",  (void*) android_close },
     {"_sensors_control_activate", "(IZ)Z", (void*) android_activate },
     {"_sensors_control_wake",     "()I", (void*) android_data_wake },
     {"_sensors_control_set_delay","(I)I", (void*) android_set_delay },
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 598f945..14b1563d 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -421,4 +421,6 @@
     static public final int RESULT_ERROR_NULL_PDU           = 3;
     /** Failed because service is currently unavailable */
     static public final int RESULT_ERROR_NO_SERVICE         = 4;
+    /** Failed because we reached the sending queue limit.  {@hide} */
+    static public final int RESULT_ERROR_LIMIT_EXCEEDED     = 5;
 }
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index cfb465e..ece708a 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -71,7 +71,7 @@
         DORMANT
     }
 
-    //***** Event Codes
+    /***** Event Codes *****/
     protected static final int EVENT_DATA_SETUP_COMPLETE = 1;
     protected static final int EVENT_RADIO_AVAILABLE = 3;
     protected static final int EVENT_RECORDS_LOADED = 4;
@@ -100,8 +100,9 @@
     public static final int EVENT_CLEAN_UP_CONNECTION = 34;
     protected static final int EVENT_CDMA_OTA_PROVISION = 35;
     protected static final int EVENT_RESTART_RADIO = 36;
+    private static final int EVENT_ENABLE_APN_REQUEST = 37;
 
-    //***** Constants
+    /***** Constants *****/
 
     protected static final int APN_INVALID_ID = -1;
     protected static final int APN_DEFAULT_ID = 0;
@@ -111,6 +112,9 @@
     protected static final int APN_HIPRI_ID = 4;
     protected static final int APN_NUM_TYPES = 5;
 
+    protected static final int APN_DISABLED = 0;
+    protected static final int APN_ENABLED = 1;
+
     protected boolean[] dataEnabled = new boolean[APN_NUM_TYPES];
     protected int enabledCount = 0;
 
@@ -247,7 +251,7 @@
     }
 
     // abstract handler methods
-    protected abstract void onTrySetupData(String reason);
+    protected abstract boolean onTrySetupData(String reason);
     protected abstract void onRoamingOff();
     protected abstract void onRoamingOn();
     protected abstract void onRadioAvailable();
@@ -258,10 +262,39 @@
     protected abstract void onVoiceCallEnded();
     protected abstract void onCleanUpConnection(boolean tearDown, String reason);
 
-  //***** Overridden from Handler
+    @Override
     public void handleMessage (Message msg) {
         switch (msg.what) {
 
+            case EVENT_ENABLE_APN_REQUEST:
+                int apnId = msg.arg1;
+                synchronized (this) {
+                    if (DBG) {
+                        Log.d(LOG_TAG, "got EVENT_ENABLE_APN_REQUEST with apnType = " + apnId +
+                                " and enable = " + msg.arg2);
+                        Log.d(LOG_TAG, "dataEnabled[apnId] = " + dataEnabled[apnId] +
+                                ", enabledCount = " + enabledCount);
+                    }
+                    if (msg.arg2 == APN_ENABLED) {
+                        // enable
+                        if (!dataEnabled[apnId]) {
+                            dataEnabled[apnId] = true;
+                            enabledCount++;
+                        }
+                        onTrySetupData(null);
+                    } else {
+                        // disable
+                        if (dataEnabled[apnId]) {
+                            dataEnabled[apnId] = false;
+                            enabledCount--;
+                            if (enabledCount == 0) {
+                                onCleanUpConnection(true, Phone.REASON_DATA_DISABLED);
+                            }
+                        }
+                    }
+                }
+                break;
+
             case EVENT_TRY_SETUP_DATA:
                 String reason = null;
                 if (msg.obj instanceof String) {
@@ -322,7 +355,7 @@
      * @return {@code false} if data connectivity has been explicitly disabled,
      * {@code true} otherwise.
      */
-    public boolean getDataEnabled() {
+    public synchronized boolean getDataEnabled() {
         return dataEnabled[APN_DEFAULT_ID];
     }
 
@@ -379,7 +412,7 @@
 
     protected abstract void setState(State s);
 
-    protected boolean isEnabled(int id) {
+    protected synchronized boolean isEnabled(int id) {
         if (id != APN_INVALID_ID) {
             return dataEnabled[id];
         }
@@ -429,7 +462,7 @@
      * {@link Phone#APN_TYPE_MMS} and {@link Phone#APN_TYPE_SUPL}.
      * @return
      */
-    public int disableApnType(String type) {
+    public synchronized int disableApnType(String type) {
         if (DBG) Log.d(LOG_TAG, "disableApnType("+type+")");
         int id = apnTypeToId(type);
         if (id == APN_INVALID_ID) {
@@ -452,27 +485,14 @@
         }
     }
 
-    protected synchronized void setEnabled(int id, boolean enable) {
+    protected void setEnabled(int id, boolean enable) {
         if (DBG) Log.d(LOG_TAG, "setEnabled(" + id + ", " + enable + ") with old state = " +
                 dataEnabled[id] + " and enabledCount = " + enabledCount);
-        if (dataEnabled[id] != enable) {
-            dataEnabled[id] = enable;
 
-            // count the total number of enabled APN's
-            // if we just enabled the first APN, start our Data connection,
-            // if we disabled the last, stop our data connection
-            if (enable) {
-                enabledCount++;
-                if (enabledCount == 1) {
-                    setPrivateDataEnabled(true);
-                }
-            } else {
-                enabledCount--;
-                if (enabledCount == 0) {
-                    setPrivateDataEnabled(false);
-                }
-            }
-        }
+        Message msg = obtainMessage(EVENT_ENABLE_APN_REQUEST);
+        msg.arg1 = id;
+        msg.arg2 = (enable ? APN_ENABLED : APN_DISABLED);
+        sendMessage(msg);
     }
 
     /**
@@ -487,21 +507,9 @@
      * @return {@code true} if the operation succeeded
      */
     public boolean setDataEnabled(boolean enable) {
-        if (DBG) Log.d(LOG_TAG, "setDataEnabled("+enable+")");
+        if (DBG) Log.d(LOG_TAG, "setDataEnabled(" + enable + ")");
         setEnabled(APN_DEFAULT_ID, enable);
         return true;
     }
 
-    private void setPrivateDataEnabled(boolean enable) {
-        if (DBG) Log.d(LOG_TAG, "setPrivateDataEnabled("+enable+")");
-        if (enable) {
-            sendMessage(obtainMessage(EVENT_TRY_SETUP_DATA));
-        } else {
-            Message msg = obtainMessage(EVENT_CLEAN_UP_CONNECTION);
-            msg.arg1 = 1; // tearDown is true
-            msg.obj = Phone.REASON_DATA_DISABLED;
-            sendMessage(msg);
-        }
-    }
-
 }
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index cac4de9..63c23ae 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -239,6 +239,11 @@
     String getCdmaEriText();
 
     /**
+     * Returns true if CDMA provisioning needs to run.
+     */
+    boolean getCdmaNeedsProvisioning();
+
+    /**
       * Returns the unread count of voicemails
       */
     int getVoiceMessageCount();
diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java
index 3f9744f..e818175 100644
--- a/telephony/java/com/android/internal/telephony/Phone.java
+++ b/telephony/java/com/android/internal/telephony/Phone.java
@@ -1388,7 +1388,7 @@
      */
     String getIccSerialNumber();
 
-    //***** CDMA support methods
+    /* CDMA support methods */
 
     /*
      * TODO(Moto) TODO(Teleca): can getCdmaMin, getEsn, getMeid use more generic calls
diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java
index 9edb4c2..e340f85 100644
--- a/telephony/java/com/android/internal/telephony/PhoneBase.java
+++ b/telephony/java/com/android/internal/telephony/PhoneBase.java
@@ -31,7 +31,6 @@
 import android.preference.PreferenceManager;
 import android.provider.Settings;
 import android.telephony.ServiceState;
-import android.telephony.SignalStrength;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -55,7 +54,7 @@
  *
  */
 
-public abstract class PhoneBase implements Phone {
+public abstract class PhoneBase extends Handler implements Phone {
     private static final String LOG_TAG = "PHONE";
     private static final boolean LOCAL_DEBUG = true;
 
@@ -68,7 +67,7 @@
     // Key used to read/write "disable data connection on boot" pref (used for testing)
     public static final String DATA_DISABLED_ON_BOOT_KEY = "disabled_on_boot_key";
 
-    //***** Event Constants
+    /* Event Constants */
     protected static final int EVENT_RADIO_AVAILABLE             = 1;
     /** Supplementary Service Notification received. */
     protected static final int EVENT_SSN                         = 2;
@@ -84,20 +83,22 @@
     protected static final int EVENT_SET_CALL_FORWARD_DONE       = 12;
     protected static final int EVENT_GET_CALL_FORWARD_DONE       = 13;
     protected static final int EVENT_CALL_RING                   = 14;
+    protected static final int EVENT_CALL_RING_CONTINUE          = 15;
+
     // Used to intercept the carrier selection calls so that
     // we can save the values.
-    protected static final int EVENT_SET_NETWORK_MANUAL_COMPLETE    = 15;
-    protected static final int EVENT_SET_NETWORK_AUTOMATIC_COMPLETE = 16;
-    protected static final int EVENT_SET_CLIR_COMPLETE              = 17;
-    protected static final int EVENT_REGISTERED_TO_NETWORK          = 18;
-    protected static final int EVENT_SET_VM_NUMBER_DONE             = 19;
+    protected static final int EVENT_SET_NETWORK_MANUAL_COMPLETE    = 16;
+    protected static final int EVENT_SET_NETWORK_AUTOMATIC_COMPLETE = 17;
+    protected static final int EVENT_SET_CLIR_COMPLETE              = 18;
+    protected static final int EVENT_REGISTERED_TO_NETWORK          = 19;
+    protected static final int EVENT_SET_VM_NUMBER_DONE             = 20;
     // Events for CDMA support
-    protected static final int EVENT_GET_DEVICE_IDENTITY_DONE       = 20;
-    protected static final int EVENT_RUIM_RECORDS_LOADED            = 21;
-    protected static final int EVENT_NV_READY                       = 22;
-    protected static final int EVENT_SET_ENHANCED_VP                = 23;
-    protected static final int EVENT_EMERGENCY_CALLBACK_MODE_ENTER  = 24;
-    protected static final int EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE = 25;
+    protected static final int EVENT_GET_DEVICE_IDENTITY_DONE       = 21;
+    protected static final int EVENT_RUIM_RECORDS_LOADED            = 22;
+    protected static final int EVENT_NV_READY                       = 23;
+    protected static final int EVENT_SET_ENHANCED_VP                = 24;
+    protected static final int EVENT_EMERGENCY_CALLBACK_MODE_ENTER  = 25;
+    protected static final int EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE = 26;
 
     // Key used to read/write current CLIR setting
     public static final String CLIR_KEY = "clir_key";
@@ -105,11 +106,14 @@
     // Key used to read/write "disable DNS server check" pref (used for testing)
     public static final String DNS_SERVER_CHECK_DISABLED_KEY = "dns_server_check_disabled_key";
 
-    //***** Instance Variables
+    /* Instance Variables */
     public CommandsInterface mCM;
     protected IccFileHandler mIccFileHandler;
     boolean mDnsCheckDisabled = false;
     public DataConnectionTracker mDataConnection;
+    boolean mDoesRilSendMultipleCallRing;
+    int mCallRingContinueToken = 0;
+    int mCallRingDelay;
 
     /**
      * Set a system property, unless we're in unit test mode
@@ -172,8 +176,8 @@
      * @param notifier An instance of DefaultPhoneNotifier,
      * unless unit testing.
      */
-    protected PhoneBase(PhoneNotifier notifier, Context context) {
-        this(notifier, context, false);
+    protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci) {
+        this(notifier, context, ci, false);
     }
 
     /**
@@ -185,11 +189,12 @@
      * @param unitTestMode when true, prevents notifications
      * of state change events
      */
-    protected PhoneBase(PhoneNotifier notifier, Context context,
+    protected PhoneBase(PhoneNotifier notifier, Context context, CommandsInterface ci,
             boolean unitTestMode) {
         this.mNotifier = notifier;
         this.mContext = context;
         mLooper = Looper.myLooper();
+        mCM = ci;
 
         setPropertiesByCarrier();
 
@@ -197,6 +202,70 @@
 
         SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
         mDnsCheckDisabled = sp.getBoolean(DNS_SERVER_CHECK_DISABLED_KEY, false);
+        mCM.setOnCallRing(this, EVENT_CALL_RING, null);
+
+        /**
+         *  Some RIL's don't always send RIL_UNSOL_CALL_RING so it needs
+         *  to be generated locally. Ideally all ring tones should be loops
+         * and this wouldn't be necessary. But to minimize changes to upper
+         * layers it is requested that it be generated by lower layers.
+         *
+         * By default old phones won't have the property set but do generate
+         * the RIL_UNSOL_CALL_RING so the default if there is no property is
+         * true.
+         */
+        mDoesRilSendMultipleCallRing = SystemProperties.getBoolean(
+                TelephonyProperties.PROPERTY_RIL_SENDS_MULTIPLE_CALL_RING, true);
+        Log.d(LOG_TAG, "mDoesRilSendMultipleCallRing=" + mDoesRilSendMultipleCallRing);
+
+        mCallRingDelay = SystemProperties.getInt(
+                TelephonyProperties.PROPERTY_CALL_RING_DELAY, 3000);
+        Log.d(LOG_TAG, "mCallRingDelay=" + mCallRingDelay);
+    }
+
+    public void dispose() {
+        synchronized(PhoneProxy.lockForRadioTechnologyChange) {
+            mCM.unSetOnCallRing(this);
+        }
+    }
+
+    /**
+     * When overridden the derived class needs to call
+     * super.handleMessage(msg) so this method has a
+     * a chance to process the message.
+     *
+     * @param msg
+     */
+    @Override
+    public void handleMessage(Message msg) {
+        AsyncResult ar;
+
+        switch(msg.what) {
+            case EVENT_CALL_RING:
+                Log.d(LOG_TAG, "Event EVENT_CALL_RING Received state=" + getState());
+                ar = (AsyncResult)msg.obj;
+                if (ar.exception == null) {
+                    Phone.State state = getState();
+                    if ((!mDoesRilSendMultipleCallRing)
+                            && ((state == Phone.State.RINGING) || (state == Phone.State.IDLE))) {
+                        mCallRingContinueToken += 1;
+                        sendIncomingCallRingNotification(mCallRingContinueToken);
+                    } else {
+                        notifyIncomingRing();
+                    }
+                }
+                break;
+
+            case EVENT_CALL_RING_CONTINUE:
+                Log.d(LOG_TAG, "Event EVENT_CALL_RING_CONTINUE Received stat=" + getState());
+                if (getState() == Phone.State.RINGING) {
+                    sendIncomingCallRingNotification(msg.arg1);
+                }
+                break;
+
+            default:
+                throw new RuntimeException("unexpected event not handled");
+        }
     }
 
     // Inherited documentation suffices.
@@ -290,16 +359,6 @@
         mCM.unregisterForInCallVoicePrivacyOff(h);
     }
 
-    /**
-     * Notifiy registrants of a new ringing Connection.
-     * Subclasses of Phone probably want to replace this with a
-     * version scoped to their packages
-     */
-    protected void notifyNewRingingConnectionP(Connection cn) {
-        AsyncResult ar = new AsyncResult(null, cn, null);
-        mNewRingingConnectionRegistrants.notifyRegistrants(ar);
-    }
-
     // Inherited documentation suffices.
     public void registerForIncomingRing(
             Handler h, int what, Object obj) {
@@ -553,16 +612,22 @@
         }
     }
 
-    /*
-     * Retrieves the Handler of the Phone instance
+    /**
+     * Get state
      */
-    public abstract Handler getHandler();
+    public abstract Phone.State getState();
 
     /**
      * Retrieves the IccFileHandler of the Phone instance
      */
     public abstract IccFileHandler getIccFileHandler();
 
+    /*
+     * Retrieves the Handler of the Phone instance
+     */
+    public Handler getHandler() {
+        return this;
+    }
 
     /**
      *  Query the status of the CDMA roaming preference
@@ -902,4 +967,39 @@
         mDataConnection.setState(dcState);
         notifyDataConnection(null);
     }
+
+    /**
+     * Notifiy registrants of a new ringing Connection.
+     * Subclasses of Phone probably want to replace this with a
+     * version scoped to their packages
+     */
+    protected void notifyNewRingingConnectionP(Connection cn) {
+        AsyncResult ar = new AsyncResult(null, cn, null);
+        mNewRingingConnectionRegistrants.notifyRegistrants(ar);
+    }
+
+    /**
+     * Notify registrants of a RING event.
+     */
+    private void notifyIncomingRing() {
+        AsyncResult ar = new AsyncResult(null, this, null);
+        mIncomingRingRegistrants.notifyRegistrants(ar);
+    }
+
+    /**
+     * Send the incoming call Ring notification if conditions are right.
+     */
+    private void sendIncomingCallRingNotification(int token) {
+        if (!mDoesRilSendMultipleCallRing && (token == mCallRingContinueToken)) {
+            Log.d(LOG_TAG, "Sending notifyIncomingRing");
+            notifyIncomingRing();
+            sendMessageDelayed(
+                    obtainMessage(EVENT_CALL_RING_CONTINUE, token, 0), mCallRingDelay);
+        } else {
+            Log.d(LOG_TAG, "Ignoring ring notification request,"
+                    + " mDoesRilSendMultipleCallRing=" + mDoesRilSendMultipleCallRing
+                    + " token=" + token
+                    + " mCallRingContinueToken=" + mCallRingContinueToken);
+        }
+    }
 }
diff --git a/telephony/java/com/android/internal/telephony/SMSDispatcher.java b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
index d66c20b..bbfc6c9 100644
--- a/telephony/java/com/android/internal/telephony/SMSDispatcher.java
+++ b/telephony/java/com/android/internal/telephony/SMSDispatcher.java
@@ -61,6 +61,7 @@
 import static android.telephony.SmsManager.RESULT_ERROR_NO_SERVICE;
 import static android.telephony.SmsManager.RESULT_ERROR_NULL_PDU;
 import static android.telephony.SmsManager.RESULT_ERROR_RADIO_OFF;
+import static android.telephony.SmsManager.RESULT_ERROR_LIMIT_EXCEEDED;
 
 
 public abstract class SMSDispatcher extends Handler {
@@ -105,6 +106,9 @@
     /** Alert is timeout */
     static final protected int EVENT_ALERT_TIMEOUT = 9;
 
+    /** Stop the sending */
+    static final protected int EVENT_STOP_SENDING = 10;
+
     protected Phone mPhone;
     protected Context mContext;
     protected ContentResolver mResolver;
@@ -120,6 +124,8 @@
     private static final int SEND_RETRY_DELAY = 2000;
     /** single part SMS */
     private static final int SINGLE_PART_SMS = 1;
+    /** Message sending queue limit */
+    private static final int MO_MSG_QUEUE_LIMIT = 5;
 
     /**
      * Message reference for a CONCATENATED_8_BIT_REFERENCE or
@@ -130,7 +136,7 @@
 
     private SmsCounter mCounter;
 
-    private SmsTracker mSTracker;
+    private ArrayList mSTrackers = new ArrayList(MO_MSG_QUEUE_LIMIT);
 
     /** Wake lock to ensure device stays awake while dispatching the SMS intent. */
     private PowerManager.WakeLock mWakeLock;
@@ -214,7 +220,6 @@
         mContext = phone.getContext();
         mResolver = mContext.getContentResolver();
         mCm = phone.mCM;
-        mSTracker = null;
 
         createWakelock();
 
@@ -330,17 +335,41 @@
         case EVENT_ALERT_TIMEOUT:
             ((AlertDialog)(msg.obj)).dismiss();
             msg.obj = null;
-            mSTracker = null;
+            if (mSTrackers.isEmpty() == false) {
+                try {
+                    SmsTracker sTracker = (SmsTracker)mSTrackers.remove(0);
+                    sTracker.mSentIntent.send(RESULT_ERROR_LIMIT_EXCEEDED);
+                } catch (CanceledException ex) {
+                    Log.e(TAG, "failed to send back RESULT_ERROR_LIMIT_EXCEEDED");
+                }
+            }
+            if (Config.LOGD) {
+                Log.d(TAG, "EVENT_ALERT_TIMEOUT, message stop sending");
+            }
             break;
 
         case EVENT_SEND_CONFIRMED_SMS:
-            if (mSTracker!=null) {
-                if (isMultipartTracker(mSTracker)) {
-                    sendMultipartSms(mSTracker);
+            if (mSTrackers.isEmpty() == false) {
+                SmsTracker sTracker = (SmsTracker)mSTrackers.remove(mSTrackers.size() - 1);
+                if (isMultipartTracker(sTracker)) {
+                    sendMultipartSms(sTracker);
                 } else {
-                    sendSms(mSTracker);
+                    sendSms(sTracker);
                 }
-                mSTracker = null;
+                removeMessages(EVENT_ALERT_TIMEOUT, msg.obj);
+            }
+            break;
+
+        case EVENT_STOP_SENDING:
+            if (mSTrackers.isEmpty() == false) {
+                // Remove the latest one.
+                try {
+                    SmsTracker sTracker = (SmsTracker)mSTrackers.remove(mSTrackers.size() - 1);
+                    sTracker.mSentIntent.send(RESULT_ERROR_LIMIT_EXCEEDED);
+                } catch (CanceledException ex) {
+                    Log.e(TAG, "failed to send back RESULT_ERROR_LIMIT_EXCEEDED");
+                }
+                removeMessages(EVENT_ALERT_TIMEOUT, msg.obj);
             }
             break;
         }
@@ -693,6 +722,15 @@
      * An SmsTracker for the current message.
      */
     protected void handleReachSentLimit(SmsTracker tracker) {
+        if (mSTrackers.size() >= MO_MSG_QUEUE_LIMIT) {
+            // Deny the sending when the queue limit is reached.
+            try {
+                tracker.mSentIntent.send(RESULT_ERROR_LIMIT_EXCEEDED);
+            } catch (CanceledException ex) {
+                Log.e(TAG, "failed to send back RESULT_ERROR_LIMIT_EXCEEDED");
+            }
+            return;
+        }
 
         Resources r = Resources.getSystem();
 
@@ -702,13 +740,13 @@
                 .setTitle(r.getString(R.string.sms_control_title))
                 .setMessage(appName + " " + r.getString(R.string.sms_control_message))
                 .setPositiveButton(r.getString(R.string.sms_control_yes), mListener)
-                .setNegativeButton(r.getString(R.string.sms_control_no), null)
+                .setNegativeButton(r.getString(R.string.sms_control_no), mListener)
                 .create();
 
         d.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
         d.show();
 
-        mSTracker = tracker;
+        mSTrackers.add(tracker);
         sendMessageDelayed ( obtainMessage(EVENT_ALERT_TIMEOUT, d),
                 DEFAULT_SMS_TIMOUEOUT);
     }
@@ -819,6 +857,9 @@
                 if (which == DialogInterface.BUTTON_POSITIVE) {
                     Log.d(TAG, "click YES to send out sms");
                     sendMessage(obtainMessage(EVENT_SEND_CONFIRMED_SMS));
+                } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+                    Log.d(TAG, "click NO to stop sending");
+                    sendMessage(obtainMessage(EVENT_STOP_SENDING));
                 }
             }
         };
diff --git a/telephony/java/com/android/internal/telephony/TelephonyProperties.java b/telephony/java/com/android/internal/telephony/TelephonyProperties.java
index 60e0a44..de5bbc1 100644
--- a/telephony/java/com/android/internal/telephony/TelephonyProperties.java
+++ b/telephony/java/com/android/internal/telephony/TelephonyProperties.java
@@ -120,4 +120,14 @@
      */
     static final String PROPERTY_DISABLE_CALL = "ro.telephony.disable-call";
 
+    /**
+     * Set to true for vendor RIL's that send multiple UNSOL_CALL_RING notifications.
+     */
+    static final String PROPERTY_RIL_SENDS_MULTIPLE_CALL_RING =
+        "ro.telephony.call_ring.multiple";
+
+    /**
+     * The number of milli-seconds between CALL_RING notifications.
+     */
+    static final String PROPERTY_CALL_RING_DELAY = "ro.telephony.call_ring.delay";
 }
diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
index 66eb789..ebe3e096 100755
--- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
@@ -26,7 +26,6 @@
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Handler;
-import android.os.Looper;
 import android.os.Message;
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
@@ -35,7 +34,6 @@
 import android.os.RemoteException;
 import android.os.SystemProperties;
 import android.preference.PreferenceManager;
-import android.provider.Settings;
 import android.provider.Telephony;
 import android.telephony.CellLocation;
 import android.telephony.PhoneNumberUtils;
@@ -96,20 +94,20 @@
     static final int RESTART_ECM_TIMER = 0; // restart Ecm timer
     static final int CANCEL_ECM_TIMER = 1; // cancel Ecm timer
 
-    //***** Instance Variables
+    // Instance Variables
     CdmaCallTracker mCT;
     CdmaSMSDispatcher mSMS;
     CdmaServiceStateTracker mSST;
     RuimFileHandler mRuimFileHandler;
     RuimRecords mRuimRecords;
     RuimCard mRuimCard;
-    MyHandler h;
     RuimPhoneBookInterfaceManager mRuimPhoneBookInterfaceManager;
     RuimSmsInterfaceManager mRuimSmsInterfaceManager;
     PhoneSubInfo mSubInfo;
     EriManager mEriManager;
     WakeLock mWakeLock;
 
+
     // mNvLoadedRegistrants are informed after the EVENT_NV_READY
     private RegistrantList mNvLoadedRegistrants = new RegistrantList();
 
@@ -139,17 +137,14 @@
     Registrant mPostDialHandler;
 
 
-    //***** Constructors
+    // Constructors
     public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier) {
         this(context,ci,notifier, false);
     }
 
     public CDMAPhone(Context context, CommandsInterface ci, PhoneNotifier notifier,
             boolean unitTestMode) {
-        super(notifier, context, unitTestMode);
-
-        h = new MyHandler();
-        mCM = ci;
+        super(notifier, context, ci, unitTestMode);
 
         mCM.setPhoneType(RILConstants.CDMA_PHONE);
         mCT = new CdmaCallTracker(this);
@@ -164,15 +159,14 @@
         mSubInfo = new PhoneSubInfo(this);
         mEriManager = new EriManager(this, context, EriManager.ERI_FROM_XML);
 
-        mCM.registerForAvailable(h, EVENT_RADIO_AVAILABLE, null);
-        mRuimRecords.registerForRecordsLoaded(h, EVENT_RUIM_RECORDS_LOADED, null);
-        mCM.registerForOffOrNotAvailable(h, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
-        mCM.registerForOn(h, EVENT_RADIO_ON, null);
-        mCM.setOnSuppServiceNotification(h, EVENT_SSN, null);
-        mCM.setOnCallRing(h, EVENT_CALL_RING, null);
-        mSST.registerForNetworkAttach(h, EVENT_REGISTERED_TO_NETWORK, null);
-        mCM.registerForNVReady(h, EVENT_NV_READY, null);
-        mCM.setEmergencyCallbackMode(h, EVENT_EMERGENCY_CALLBACK_MODE_ENTER, null);
+        mCM.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null);
+        mRuimRecords.registerForRecordsLoaded(this, EVENT_RUIM_RECORDS_LOADED, null);
+        mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
+        mCM.registerForOn(this, EVENT_RADIO_ON, null);
+        mCM.setOnSuppServiceNotification(this, EVENT_SSN, null);
+        mSST.registerForNetworkAttach(this, EVENT_REGISTERED_TO_NETWORK, null);
+        mCM.registerForNVReady(this, EVENT_NV_READY, null);
+        mCM.setEmergencyCallbackMode(this, EVENT_EMERGENCY_CALLBACK_MODE_ENTER, null);
 
         PowerManager pm
             = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
@@ -207,23 +201,23 @@
         // Updates MCC MNC device configuration information
         updateMccMncConfiguration(operatorNumeric);
 
+
         // Notify voicemails.
         notifier.notifyMessageWaitingChanged(this);
     }
 
     public void dispose() {
         synchronized(PhoneProxy.lockForRadioTechnologyChange) {
+            super.dispose();
 
             //Unregister from all former registered events
-            mRuimRecords.unregisterForRecordsLoaded(h); //EVENT_RUIM_RECORDS_LOADED
-            mCM.unregisterForAvailable(h); //EVENT_RADIO_AVAILABLE
-            mCM.unregisterForOffOrNotAvailable(h); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE
-            mCM.unregisterForOn(h); //EVENT_RADIO_ON
-            mCM.unregisterForNVReady(h); //EVENT_NV_READY
-            mSST.unregisterForNetworkAttach(h); //EVENT_REGISTERED_TO_NETWORK
-            mCM.unSetOnSuppServiceNotification(h);
-            mCM.unSetOnCallRing(h);
-
+            mRuimRecords.unregisterForRecordsLoaded(this); //EVENT_RUIM_RECORDS_LOADED
+            mCM.unregisterForAvailable(this); //EVENT_RADIO_AVAILABLE
+            mCM.unregisterForOffOrNotAvailable(this); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE
+            mCM.unregisterForOn(this); //EVENT_RADIO_ON
+            mCM.unregisterForNVReady(this); //EVENT_NV_READY
+            mSST.unregisterForNetworkAttach(this); //EVENT_REGISTERED_TO_NETWORK
+            mCM.unSetOnSuppServiceNotification(this);
 
             //Force all referenced classes to unregister their former registered events
             mCT.dispose();
@@ -262,8 +256,6 @@
         }
     }
 
-
-    //***** Overridden from Phone
     public ServiceState getServiceState() {
         return mSST.ss;
     }
@@ -701,7 +693,7 @@
                                    Message onComplete) {
         Message resp;
         mVmNumber = voiceMailNumber;
-        resp = h.obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete);
+        resp = obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete);
         mRuimRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp);
     }
 
@@ -826,14 +818,6 @@
         super.notifyNewRingingConnectionP(c);
     }
 
-    /**
-     * Notifiy registrants of a RING event.
-     */
-    void notifyIncomingRing() {
-        AsyncResult ar = new AsyncResult(null, this, null);
-        mIncomingRingRegistrants.notifyRegistrants(ar);
-    }
-
     /*package*/ void notifyDisconnect(Connection cn) {
         mDisconnectRegistrants.notifyResult(cn);
     }
@@ -883,7 +867,7 @@
             mWakeLock.release();
         }
         // Send a message which will invoke handleExitEmergencyCallbackMode
-        mCM.exitEmergencyCallbackMode(h.obtainMessage(EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE));
+        mCM.exitEmergencyCallbackMode(obtainMessage(EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE));
     }
 
     private void handleEnterEmergencyCallbackMode(Message msg) {
@@ -902,7 +886,7 @@
             // if no one invokes exitEmergencyCallbackMode() directly.
             long delayInMillis = SystemProperties.getLong(
                     TelephonyProperties.PROPERTY_ECM_EXIT_TIMER, DEFAULT_ECM_EXIT_TIMER_VALUE);
-            h.postDelayed(mExitEcmRunnable, delayInMillis);
+            postDelayed(mExitEcmRunnable, delayInMillis);
             // We don't want to go to sleep while in Ecm
             mWakeLock.acquire();
         }
@@ -915,7 +899,7 @@
                     + ar.exception + mIsPhoneInEcmState);
         }
         // Remove pending exit Ecm runnable, if any
-        h.removeCallbacks(mExitEcmRunnable);
+        removeCallbacks(mExitEcmRunnable);
 
         if (mEcmExitRespRegistrant != null) {
             mEcmExitRespRegistrant.notifyRegistrant(ar);
@@ -941,13 +925,13 @@
     void handleTimerInEmergencyCallbackMode(int action) {
         switch(action) {
         case CANCEL_ECM_TIMER:
-            h.removeCallbacks(mExitEcmRunnable);
+            removeCallbacks(mExitEcmRunnable);
             mEcmTimerResetRegistrants.notifyResult(new Boolean(true));
             break;
         case RESTART_ECM_TIMER:
             long delayInMillis = SystemProperties.getLong(
                     TelephonyProperties.PROPERTY_ECM_EXIT_TIMER, DEFAULT_ECM_EXIT_TIMER_VALUE);
-            h.postDelayed(mExitEcmRunnable, delayInMillis);
+            postDelayed(mExitEcmRunnable, delayInMillis);
             mEcmTimerResetRegistrants.notifyResult(new Boolean(false));
             break;
         default:
@@ -969,123 +953,108 @@
         mEcmTimerResetRegistrants.remove(h);
     }
 
-    //***** Inner Classes
-    class MyHandler extends Handler {
-        MyHandler() {
-        }
+    @Override
+    public void handleMessage(Message msg) {
+        AsyncResult ar;
+        Message     onComplete;
 
-        MyHandler(Looper l) {
-            super(l);
-        }
+        switch(msg.what) {
+            case EVENT_RADIO_AVAILABLE: {
+                mCM.getBasebandVersion(obtainMessage(EVENT_GET_BASEBAND_VERSION_DONE));
 
-        @Override
-        public void handleMessage(Message msg) {
-            AsyncResult ar;
-            Message     onComplete;
+                mCM.getDeviceIdentity(obtainMessage(EVENT_GET_DEVICE_IDENTITY_DONE));
+            }
+            break;
 
-            switch(msg.what) {
-                case EVENT_RADIO_AVAILABLE: {
-                    mCM.getBasebandVersion(obtainMessage(EVENT_GET_BASEBAND_VERSION_DONE));
+            case EVENT_GET_BASEBAND_VERSION_DONE:{
+                ar = (AsyncResult)msg.obj;
 
-                    mCM.getDeviceIdentity(obtainMessage(EVENT_GET_DEVICE_IDENTITY_DONE));
+                if (ar.exception != null) {
+                    break;
                 }
-                break;
 
-                case EVENT_GET_BASEBAND_VERSION_DONE:{
-                    ar = (AsyncResult)msg.obj;
+                if (DBG) Log.d(LOG_TAG, "Baseband version: " + ar.result);
+                setSystemProperty(TelephonyProperties.PROPERTY_BASEBAND_VERSION, (String)ar.result);
+            }
+            break;
 
-                    if (ar.exception != null) {
-                        break;
-                    }
+            case EVENT_GET_DEVICE_IDENTITY_DONE:{
+                ar = (AsyncResult)msg.obj;
 
-                    if (DBG) Log.d(LOG_TAG, "Baseband version: " + ar.result);
-                    setSystemProperty(TelephonyProperties.PROPERTY_BASEBAND_VERSION, (String)ar.result);
+                if (ar.exception != null) {
+                    break;
                 }
-                break;
+                String[] respId = (String[])ar.result;
+                mEsn  =  respId[2];
+                mMeid =  respId[3];
+            }
+            break;
 
-                case EVENT_GET_DEVICE_IDENTITY_DONE:{
-                    ar = (AsyncResult)msg.obj;
+            case EVENT_EMERGENCY_CALLBACK_MODE_ENTER:{
+                handleEnterEmergencyCallbackMode(msg);
+            }
+            break;
 
-                    if (ar.exception != null) {
-                        break;
-                    }
-                    String[] respId = (String[])ar.result;
-                    mEsn  =  respId[2];
-                    mMeid =  respId[3];
+            case  EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE:{
+                handleExitEmergencyCallbackMode(msg);
+            }
+            break;
+
+            case EVENT_RUIM_RECORDS_LOADED:{
+                Log.d(LOG_TAG, "Event EVENT_RUIM_RECORDS_LOADED Received");
+            }
+            break;
+
+            case EVENT_RADIO_OFF_OR_NOT_AVAILABLE:{
+                Log.d(LOG_TAG, "Event EVENT_RADIO_OFF_OR_NOT_AVAILABLE Received");
+            }
+            break;
+
+            case EVENT_RADIO_ON:{
+                Log.d(LOG_TAG, "Event EVENT_RADIO_ON Received");
+            }
+            break;
+
+            case EVENT_SSN:{
+                Log.d(LOG_TAG, "Event EVENT_SSN Received");
+            }
+            break;
+
+            case EVENT_REGISTERED_TO_NETWORK:{
+                Log.d(LOG_TAG, "Event EVENT_REGISTERED_TO_NETWORK Received");
+            }
+            break;
+
+            case EVENT_NV_READY:{
+                Log.d(LOG_TAG, "Event EVENT_NV_READY Received");
+                //Inform the Service State Tracker
+                mEriManager.loadEriFile();
+                mNvLoadedRegistrants.notifyRegistrants();
+                if(mEriManager.isEriFileLoaded()) {
+                    // when the ERI file is loaded
+                    Log.d(LOG_TAG, "ERI read, notify registrants");
+                    mEriFileLoadedRegistrants.notifyRegistrants();
                 }
-                break;
+                setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE,"false");
+            }
+            break;
 
-                case EVENT_EMERGENCY_CALLBACK_MODE_ENTER:{
-                    handleEnterEmergencyCallbackMode(msg);
+            case EVENT_SET_VM_NUMBER_DONE:{
+                ar = (AsyncResult)msg.obj;
+                if (IccException.class.isInstance(ar.exception)) {
+                    storeVoiceMailNumber(mVmNumber);
+                    ar.exception = null;
                 }
-                break;
+                onComplete = (Message) ar.userObj;
+                if (onComplete != null) {
+                    AsyncResult.forMessage(onComplete, ar.result, ar.exception);
+                    onComplete.sendToTarget();
+                }
+            }
+            break;
 
-                case  EVENT_EXIT_EMERGENCY_CALLBACK_RESPONSE:{
-                    handleExitEmergencyCallbackMode(msg);
-                }
-                break;
-
-                case EVENT_RUIM_RECORDS_LOADED:{
-                    Log.d(LOG_TAG, "Event EVENT_RUIM_RECORDS_LOADED Received");
-                }
-                break;
-
-                case EVENT_RADIO_OFF_OR_NOT_AVAILABLE:{
-                    Log.d(LOG_TAG, "Event EVENT_RADIO_OFF_OR_NOT_AVAILABLE Received");
-                }
-                break;
-
-                case EVENT_RADIO_ON:{
-                    Log.d(LOG_TAG, "Event EVENT_RADIO_ON Received");
-                }
-                break;
-
-                case EVENT_SSN:{
-                    Log.d(LOG_TAG, "Event EVENT_SSN Received");
-                }
-                break;
-
-                case EVENT_CALL_RING:{
-                    Log.d(LOG_TAG, "Event EVENT_CALL_RING Received");
-                }
-                break;
-
-                case EVENT_REGISTERED_TO_NETWORK:{
-                    Log.d(LOG_TAG, "Event EVENT_REGISTERED_TO_NETWORK Received");
-                }
-                break;
-
-                case EVENT_NV_READY:{
-                    Log.d(LOG_TAG, "Event EVENT_NV_READY Received");
-                    //Inform the Service State Tracker
-                    mEriManager.loadEriFile();
-                    mNvLoadedRegistrants.notifyRegistrants();
-                    if(mEriManager.isEriFileLoaded()) {
-                        // when the ERI file is loaded
-                        Log.d(LOG_TAG, "ERI read, notify registrants");
-                        mEriFileLoadedRegistrants.notifyRegistrants();
-                    }
-                    setSystemProperty(TelephonyProperties.PROPERTY_INECM_MODE,"false");
-                }
-                break;
-
-                case EVENT_SET_VM_NUMBER_DONE:{
-                    ar = (AsyncResult)msg.obj;
-                    if (IccException.class.isInstance(ar.exception)) {
-                        storeVoiceMailNumber(mVmNumber);
-                        ar.exception = null;
-                    }
-                    onComplete = (Message) ar.userObj;
-                    if (onComplete != null) {
-                        AsyncResult.forMessage(onComplete, ar.result, ar.exception);
-                        onComplete.sendToTarget();
-                    }
-                }
-                break;
-
-                default:{
-                    throw new RuntimeException("unexpected event not handled");
-                }
+            default:{
+                super.handleMessage(msg);
             }
         }
     }
@@ -1140,13 +1109,6 @@
     /**
      * {@inheritDoc}
      */
-    public Handler getHandler() {
-        return h;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
     public IccFileHandler getIccFileHandler() {
         return this.mIccFileHandler;
     }
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 2b78097..ffaa1cd 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -146,7 +146,7 @@
     };
 
 
-    //***** Constructor
+    /* Constructor */
 
     CdmaDataConnectionTracker(CDMAPhone p) {
         super(p);
@@ -174,7 +174,9 @@
         filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
         filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
 
-        p.getContext().registerReceiver(mIntentReceiver, filter, null, p.h);
+        // TODO: Why is this registering the phone as the receiver of the intent
+        //       and not its own handler?
+        p.getContext().registerReceiver(mIntentReceiver, filter, null, p);
 
         mDataConnectionTracker = this;
 
@@ -566,8 +568,7 @@
     private boolean retryAfterDisconnected(String reason) {
         boolean retry = true;
 
-        if ( Phone.REASON_RADIO_TURNED_OFF.equals(reason) ||
-             Phone.REASON_DATA_DISABLED.equals(reason) ) {
+        if ( Phone.REASON_RADIO_TURNED_OFF.equals(reason) ) {
             retry = false;
         }
         return retry;
@@ -627,8 +628,8 @@
     /**
      * @override com.android.internal.telephony.DataConnectionTracker
      */
-    protected void onTrySetupData(String reason) {
-        trySetupData(reason);
+    protected boolean onTrySetupData(String reason) {
+        return trySetupData(reason);
     }
 
     /**
diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
index 3c1308b..ac7331e 100755
--- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
@@ -23,13 +23,11 @@
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Handler;
-import android.os.Looper;
 import android.os.Message;
 import android.os.Registrant;
 import android.os.RegistrantList;
 import android.os.SystemProperties;
 import android.preference.PreferenceManager;
-import android.provider.Settings;
 import android.provider.Telephony;
 import android.telephony.CellLocation;
 import android.telephony.PhoneNumberUtils;
@@ -98,14 +96,13 @@
     // Key used to read/write the SIM IMSI used for storing the voice mail
     public static final String VM_SIM_IMSI = "vm_sim_imsi_key";
 
-    //***** Instance Variables
+    // Instance Variables
     GsmCallTracker mCT;
     GsmServiceStateTracker mSST;
     GsmSMSDispatcher mSMS;
     SIMRecords mSIMRecords;
     SimCard mSimCard;
     StkService mStkService;
-    MyHandler h;
     ArrayList <GsmMmiCode> mPendingMMIs = new ArrayList<GsmMmiCode>();
     SimPhoneBookInterfaceManager mSimPhoneBookIntManager;
     SimSmsInterfaceManager mSimSmsIntManager;
@@ -129,7 +126,7 @@
     private String mVmNumber;
 
 
-    //***** Constructors
+    // Constructors
 
     public
     GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifier) {
@@ -138,9 +135,7 @@
 
     public
     GSMPhone (Context context, CommandsInterface ci, PhoneNotifier notifier, boolean unitTestMode) {
-        super(notifier, context, unitTestMode);
-        h = new MyHandler();
-        mCM = ci;
+        super(notifier, context, ci, unitTestMode);
 
         if (ci instanceof SimulatedRadioControl) {
             mSimulatedRadioControl = (SimulatedRadioControl) ci;
@@ -162,14 +157,13 @@
         mStkService = StkService.getInstance(mCM, mSIMRecords, mContext,
                 (SIMFileHandler)mIccFileHandler, mSimCard);
 
-        mCM.registerForAvailable(h, EVENT_RADIO_AVAILABLE, null);
-        mSIMRecords.registerForRecordsLoaded(h, EVENT_SIM_RECORDS_LOADED, null);
-        mCM.registerForOffOrNotAvailable(h, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
-        mCM.registerForOn(h, EVENT_RADIO_ON, null);
-        mCM.setOnUSSD(h, EVENT_USSD, null);
-        mCM.setOnSuppServiceNotification(h, EVENT_SSN, null);
-        mCM.setOnCallRing(h, EVENT_CALL_RING, null);
-        mSST.registerForNetworkAttach(h, EVENT_REGISTERED_TO_NETWORK, null);
+        mCM.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null);
+        mSIMRecords.registerForRecordsLoaded(this, EVENT_SIM_RECORDS_LOADED, null);
+        mCM.registerForOffOrNotAvailable(this, EVENT_RADIO_OFF_OR_NOT_AVAILABLE, null);
+        mCM.registerForOn(this, EVENT_RADIO_ON, null);
+        mCM.setOnUSSD(this, EVENT_USSD, null);
+        mCM.setOnSuppServiceNotification(this, EVENT_SSN, null);
+        mSST.registerForNetworkAttach(this, EVENT_REGISTERED_TO_NETWORK, null);
 
         if (false) {
             try {
@@ -212,15 +206,16 @@
 
     public void dispose() {
         synchronized(PhoneProxy.lockForRadioTechnologyChange) {
+            super.dispose();
+
             //Unregister from all former registered events
-            mCM.unregisterForAvailable(h); //EVENT_RADIO_AVAILABLE
-            mSIMRecords.unregisterForRecordsLoaded(h); //EVENT_SIM_RECORDS_LOADED
-            mCM.unregisterForOffOrNotAvailable(h); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE
-            mCM.unregisterForOn(h); //EVENT_RADIO_ON
-            mSST.unregisterForNetworkAttach(h); //EVENT_REGISTERED_TO_NETWORK
-            mCM.unSetOnUSSD(h);
-            mCM.unSetOnSuppServiceNotification(h);
-            mCM.unSetOnCallRing(h);
+            mCM.unregisterForAvailable(this); //EVENT_RADIO_AVAILABLE
+            mSIMRecords.unregisterForRecordsLoaded(this); //EVENT_SIM_RECORDS_LOADED
+            mCM.unregisterForOffOrNotAvailable(this); //EVENT_RADIO_OFF_OR_NOT_AVAILABLE
+            mCM.unregisterForOn(this); //EVENT_RADIO_ON
+            mSST.unregisterForNetworkAttach(this); //EVENT_REGISTERED_TO_NETWORK
+            mCM.unSetOnUSSD(this);
+            mCM.unSetOnSuppServiceNotification(this);
 
             mPendingMMIs.clear();
 
@@ -258,8 +253,6 @@
     }
 
 
-    //***** Overridden from Phone
-
     public ServiceState
     getServiceState() {
         return mSST.ss;
@@ -391,14 +384,6 @@
         super.notifyNewRingingConnectionP(c);
     }
 
-    /**
-     * Notifiy registrants of a RING event.
-     */
-    void notifyIncomingRing() {
-        AsyncResult ar = new AsyncResult(null, this, null);
-        mIncomingRingRegistrants.notifyRegistrants(ar);
-    }
-
     /*package*/ void
     notifyDisconnect(Connection cn) {
         mDisconnectRegistrants.notifyResult(cn);
@@ -917,7 +902,7 @@
 
         Message resp;
         mVmNumber = voiceMailNumber;
-        resp = h.obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete);
+        resp = obtainMessage(EVENT_SET_VM_NUMBER_DONE, 0, 0, onComplete);
         mSIMRecords.setVoiceMailNumber(alphaTag, mVmNumber, resp);
     }
 
@@ -956,7 +941,7 @@
             if (LOCAL_DEBUG) Log.d(LOG_TAG, "requesting call forwarding query.");
             Message resp;
             if (commandInterfaceCFReason == CF_REASON_UNCONDITIONAL) {
-                resp = h.obtainMessage(EVENT_GET_CALL_FORWARD_DONE, onComplete);
+                resp = obtainMessage(EVENT_GET_CALL_FORWARD_DONE, onComplete);
             } else {
                 resp = onComplete;
             }
@@ -974,7 +959,7 @@
 
             Message resp;
             if (commandInterfaceCFReason == CF_REASON_UNCONDITIONAL) {
-                resp = h.obtainMessage(EVENT_SET_CALL_FORWARD_DONE,
+                resp = obtainMessage(EVENT_SET_CALL_FORWARD_DONE,
                         isCfEnable(commandInterfaceCFAction) ? 1 : 0, 0, onComplete);
             } else {
                 resp = onComplete;
@@ -995,7 +980,7 @@
     public void setOutgoingCallerIdDisplay(int commandInterfaceCLIRMode,
                                            Message onComplete) {
         mCM.setCLIR(commandInterfaceCLIRMode,
-                h.obtainMessage(EVENT_SET_CLIR_COMPLETE, commandInterfaceCLIRMode, 0, onComplete));
+                obtainMessage(EVENT_SET_CLIR_COMPLETE, commandInterfaceCLIRMode, 0, onComplete));
     }
 
     public void getCallWaiting(Message onComplete) {
@@ -1043,7 +1028,7 @@
         nsm.operatorAlphaLong = "";
 
         // get the message
-        Message msg = h.obtainMessage(EVENT_SET_NETWORK_AUTOMATIC_COMPLETE, nsm);
+        Message msg = obtainMessage(EVENT_SET_NETWORK_AUTOMATIC_COMPLETE, nsm);
         if (LOCAL_DEBUG)
             Log.d(LOG_TAG, "wrapping and sending message to connect automatically");
 
@@ -1061,7 +1046,7 @@
         nsm.operatorAlphaLong = network.operatorAlphaLong;
 
         // get the message
-        Message msg = h.obtainMessage(EVENT_SET_NETWORK_MANUAL_COMPLETE, nsm);
+        Message msg = obtainMessage(EVENT_SET_NETWORK_MANUAL_COMPLETE, nsm);
 
         mCM.setNetworkSelectionModeManual(network.operatorNumeric, msg);
     }
@@ -1247,178 +1232,163 @@
         }
     }
 
-    //***** Inner Classes
+    @Override
+    public void handleMessage (Message msg) {
+        AsyncResult ar;
+        Message onComplete;
 
-    class MyHandler extends Handler {
-        MyHandler() {
-        }
+        switch (msg.what) {
+            case EVENT_RADIO_AVAILABLE: {
+                mCM.getBasebandVersion(
+                        obtainMessage(EVENT_GET_BASEBAND_VERSION_DONE));
 
-        MyHandler(Looper l) {
-            super(l);
-        }
+                mCM.getIMEI(obtainMessage(EVENT_GET_IMEI_DONE));
+                mCM.getIMEISV(obtainMessage(EVENT_GET_IMEISV_DONE));
+            }
+            break;
 
-        public void
-        handleMessage (Message msg) {
-            AsyncResult ar;
-            Message onComplete;
+            case EVENT_RADIO_ON:
+            break;
 
-            switch (msg.what) {
-                case EVENT_RADIO_AVAILABLE: {
-                    mCM.getBasebandVersion(
-                            obtainMessage(EVENT_GET_BASEBAND_VERSION_DONE));
+            case EVENT_REGISTERED_TO_NETWORK:
+                syncClirSetting();
+                break;
 
-                    mCM.getIMEI(obtainMessage(EVENT_GET_IMEI_DONE));
-                    mCM.getIMEISV(obtainMessage(EVENT_GET_IMEISV_DONE));
+            case EVENT_SIM_RECORDS_LOADED:
+                updateCurrentCarrierInProvider();
+
+                // Check if this is a different SIM than the previous one. If so unset the
+                // voice mail number.
+                String imsi = getVmSimImsi();
+                if (imsi != null && !getSubscriberId().equals(imsi)) {
+                    storeVoiceMailNumber(null);
+                    setVmSimImsi(null);
+                }
+
+            break;
+
+            case EVENT_GET_BASEBAND_VERSION_DONE:
+                ar = (AsyncResult)msg.obj;
+
+                if (ar.exception != null) {
+                    break;
+                }
+
+                if (LOCAL_DEBUG) Log.d(LOG_TAG, "Baseband version: " + ar.result);
+                setSystemProperty(PROPERTY_BASEBAND_VERSION, (String)ar.result);
+            break;
+
+            case EVENT_GET_IMEI_DONE:
+                ar = (AsyncResult)msg.obj;
+
+                if (ar.exception != null) {
+                    break;
+                }
+
+                mImei = (String)ar.result;
+            break;
+
+            case EVENT_GET_IMEISV_DONE:
+                ar = (AsyncResult)msg.obj;
+
+                if (ar.exception != null) {
+                    break;
+                }
+
+                mImeiSv = (String)ar.result;
+            break;
+
+            case EVENT_USSD:
+                ar = (AsyncResult)msg.obj;
+
+                String[] ussdResult = (String[]) ar.result;
+
+                if (ussdResult.length > 1) {
+                    try {
+                        onIncomingUSSD(Integer.parseInt(ussdResult[0]), ussdResult[1]);
+                    } catch (NumberFormatException e) {
+                        Log.w(LOG_TAG, "error parsing USSD");
+                    }
+                }
+            break;
+
+            case EVENT_RADIO_OFF_OR_NOT_AVAILABLE:
+                // Some MMI requests (eg USSD) are not completed
+                // within the course of a CommandsInterface request
+                // If the radio shuts off or resets while one of these
+                // is pending, we need to clean up.
+
+                for (int i = 0, s = mPendingMMIs.size() ; i < s; i++) {
+                    if (mPendingMMIs.get(i).isPendingUSSD()) {
+                        mPendingMMIs.get(i).onUssdFinishedError();
+                    }
+                }
+            break;
+
+            case EVENT_SSN:
+                ar = (AsyncResult)msg.obj;
+                SuppServiceNotification not = (SuppServiceNotification) ar.result;
+                mSsnRegistrants.notifyRegistrants(ar);
+            break;
+
+            case EVENT_SET_CALL_FORWARD_DONE:
+                ar = (AsyncResult)msg.obj;
+                if (ar.exception == null) {
+                    mSIMRecords.setVoiceCallForwardingFlag(1, msg.arg1 == 1);
+                }
+                onComplete = (Message) ar.userObj;
+                if (onComplete != null) {
+                    AsyncResult.forMessage(onComplete, ar.result, ar.exception);
+                    onComplete.sendToTarget();
                 }
                 break;
 
-                case EVENT_RADIO_ON:
+            case EVENT_SET_VM_NUMBER_DONE:
+                ar = (AsyncResult)msg.obj;
+                if (IccVmNotSupportedException.class.isInstance(ar.exception)) {
+                    storeVoiceMailNumber(mVmNumber);
+                    ar.exception = null;
+                }
+                onComplete = (Message) ar.userObj;
+                if (onComplete != null) {
+                    AsyncResult.forMessage(onComplete, ar.result, ar.exception);
+                    onComplete.sendToTarget();
+                }
                 break;
 
-                case EVENT_REGISTERED_TO_NETWORK:
-                    syncClirSetting();
-                    break;
 
-                case EVENT_SIM_RECORDS_LOADED:
-                    updateCurrentCarrierInProvider();
-
-                    // Check if this is a different SIM than the previous one. If so unset the
-                    // voice mail number.
-                    String imsi = getVmSimImsi();
-                    if (imsi != null && !getSubscriberId().equals(imsi)) {
-                        storeVoiceMailNumber(null);
-                        setVmSimImsi(null);
-                    }
-
+            case EVENT_GET_CALL_FORWARD_DONE:
+                ar = (AsyncResult)msg.obj;
+                if (ar.exception == null) {
+                    handleCfuQueryResult((CallForwardInfo[])ar.result);
+                }
+                onComplete = (Message) ar.userObj;
+                if (onComplete != null) {
+                    AsyncResult.forMessage(onComplete, ar.result, ar.exception);
+                    onComplete.sendToTarget();
+                }
                 break;
 
-                case EVENT_GET_BASEBAND_VERSION_DONE:
-                    ar = (AsyncResult)msg.obj;
-
-                    if (ar.exception != null) {
-                        break;
-                    }
-
-                    if (LOCAL_DEBUG) Log.d(LOG_TAG, "Baseband version: " + ar.result);
-                    setSystemProperty(PROPERTY_BASEBAND_VERSION, (String)ar.result);
+            // handle the select network completion callbacks.
+            case EVENT_SET_NETWORK_MANUAL_COMPLETE:
+            case EVENT_SET_NETWORK_AUTOMATIC_COMPLETE:
+                handleSetSelectNetwork((AsyncResult) msg.obj);
                 break;
 
-                case EVENT_GET_IMEI_DONE:
-                    ar = (AsyncResult)msg.obj;
-
-                    if (ar.exception != null) {
-                        break;
-                    }
-
-                    mImei = (String)ar.result;
+            case EVENT_SET_CLIR_COMPLETE:
+                ar = (AsyncResult)msg.obj;
+                if (ar.exception == null) {
+                    saveClirSetting(msg.arg1);
+                }
+                onComplete = (Message) ar.userObj;
+                if (onComplete != null) {
+                    AsyncResult.forMessage(onComplete, ar.result, ar.exception);
+                    onComplete.sendToTarget();
+                }
                 break;
 
-                case EVENT_GET_IMEISV_DONE:
-                    ar = (AsyncResult)msg.obj;
-
-                    if (ar.exception != null) {
-                        break;
-                    }
-
-                    mImeiSv = (String)ar.result;
-                break;
-
-                case EVENT_USSD:
-                    ar = (AsyncResult)msg.obj;
-
-                    String[] ussdResult = (String[]) ar.result;
-
-                    if (ussdResult.length > 1) {
-                        try {
-                            onIncomingUSSD(Integer.parseInt(ussdResult[0]), ussdResult[1]);
-                        } catch (NumberFormatException e) {
-                            Log.w(LOG_TAG, "error parsing USSD");
-                        }
-                    }
-                break;
-
-                case EVENT_RADIO_OFF_OR_NOT_AVAILABLE:
-                    // Some MMI requests (eg USSD) are not completed
-                    // within the course of a CommandsInterface request
-                    // If the radio shuts off or resets while one of these
-                    // is pending, we need to clean up.
-
-                    for (int i = 0, s = mPendingMMIs.size() ; i < s; i++) {
-                        if (mPendingMMIs.get(i).isPendingUSSD()) {
-                            mPendingMMIs.get(i).onUssdFinishedError();
-                        }
-                    }
-                break;
-
-                case EVENT_SSN:
-                    ar = (AsyncResult)msg.obj;
-                    SuppServiceNotification not = (SuppServiceNotification) ar.result;
-                    mSsnRegistrants.notifyRegistrants(ar);
-                break;
-
-                case EVENT_SET_CALL_FORWARD_DONE:
-                    ar = (AsyncResult)msg.obj;
-                    if (ar.exception == null) {
-                        mSIMRecords.setVoiceCallForwardingFlag(1, msg.arg1 == 1);
-                    }
-                    onComplete = (Message) ar.userObj;
-                    if (onComplete != null) {
-                        AsyncResult.forMessage(onComplete, ar.result, ar.exception);
-                        onComplete.sendToTarget();
-                    }
-                    break;
-
-                case EVENT_SET_VM_NUMBER_DONE:
-                    ar = (AsyncResult)msg.obj;
-                    if (IccVmNotSupportedException.class.isInstance(ar.exception)) {
-                        storeVoiceMailNumber(mVmNumber);
-                        ar.exception = null;
-                    }
-                    onComplete = (Message) ar.userObj;
-                    if (onComplete != null) {
-                        AsyncResult.forMessage(onComplete, ar.result, ar.exception);
-                        onComplete.sendToTarget();
-                    }
-                    break;
-
-
-                case EVENT_GET_CALL_FORWARD_DONE:
-                    ar = (AsyncResult)msg.obj;
-                    if (ar.exception == null) {
-                        handleCfuQueryResult((CallForwardInfo[])ar.result);
-                    }
-                    onComplete = (Message) ar.userObj;
-                    if (onComplete != null) {
-                        AsyncResult.forMessage(onComplete, ar.result, ar.exception);
-                        onComplete.sendToTarget();
-                    }
-                    break;
-
-                case EVENT_CALL_RING:
-                    ar = (AsyncResult)msg.obj;
-                    if (ar.exception == null) {
-                        notifyIncomingRing();
-                    }
-                    break;
-
-                // handle the select network completion callbacks.
-                case EVENT_SET_NETWORK_MANUAL_COMPLETE:
-                case EVENT_SET_NETWORK_AUTOMATIC_COMPLETE:
-                    handleSetSelectNetwork((AsyncResult) msg.obj);
-                    break;
-
-                case EVENT_SET_CLIR_COMPLETE:
-                    ar = (AsyncResult)msg.obj;
-                    if (ar.exception == null) {
-                        saveClirSetting(msg.arg1);
-                    }
-                    onComplete = (Message) ar.userObj;
-                    if (onComplete != null) {
-                        AsyncResult.forMessage(onComplete, ar.result, ar.exception);
-                        onComplete.sendToTarget();
-                    }
-                    break;
-            }
+             default:
+                 super.handleMessage(msg);
         }
     }
 
@@ -1533,13 +1503,6 @@
     /**
      * {@inheritDoc}
      */
-    public Handler getHandler(){
-        return h;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
     public IccFileHandler getIccFileHandler(){
         return this.mIccFileHandler;
     }
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index b9688f3..0215ab2 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -222,7 +222,9 @@
         filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
         filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
 
-        p.getContext().registerReceiver(mIntentReceiver, filter, null, p.h);
+        // TODO: Why is this registering the phone as the receiver of the intent
+        //       and not its own handler?
+        p.getContext().registerReceiver(mIntentReceiver, filter, null, p);
 
 
         mDataConnectionTracker = this;
@@ -1008,8 +1010,7 @@
     private boolean retryAfterDisconnected(String reason) {
         boolean retry = true;
 
-        if ( Phone.REASON_RADIO_TURNED_OFF.equals(reason) ||
-             Phone.REASON_DATA_DISABLED.equals(reason) ) {
+        if ( Phone.REASON_RADIO_TURNED_OFF.equals(reason) ) {
             retry = false;
         }
         return retry;
@@ -1074,8 +1075,8 @@
         cleanUpConnection(true, Phone.REASON_APN_SWITCHED);
     }
 
-    protected void onTrySetupData(String reason) {
-        trySetupData(reason);
+    protected boolean onTrySetupData(String reason) {
+        return trySetupData(reason);
     }
 
     /**
diff --git a/telephony/java/com/android/internal/telephony/gsm/MccTable.java b/telephony/java/com/android/internal/telephony/gsm/MccTable.java
index 22b1f4f..9343f44 100644
--- a/telephony/java/com/android/internal/telephony/gsm/MccTable.java
+++ b/telephony/java/com/android/internal/telephony/gsm/MccTable.java
@@ -16,8 +16,342 @@
 
 package com.android.internal.telephony.gsm;
 
-import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Arrays;
+
+/**
+ * The table below is built from two resources:
+ *
+ * 1) ITU "Mobile Network Code (MNC) for the international
+ *   identification plan for mobile terminals and mobile users"
+ *   which is available as an annex to the ITU operational bulletin
+ *   available here: http://www.itu.int/itu-t/bulletin/annex.html
+ *
+ * 2) The ISO 3166 country codes list, available here:
+ *    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
+ *
+ * This table was verified (28 Aug 2009) against
+ * http://en.wikipedia.org/wiki/List_of_mobile_country_codes with the
+ * only unresolved discrepancy being that this list has an extra entry
+ * (461) for China.
+ *
+ * TODO: Complete the mappings for timezones and language/locale codes.
+ *
+ * The actual table data used in the Java code is generated from the
+ * below Python code for efficiency.  The information is expected to
+ * be static, but if changes are required, the table in the python
+ * code can be modified and the trailing code run to re-generate the
+ * tables that are to be used by Java.
+
+mcc_table = [
+  (202, 'gr', 2, 'Greece'),
+  (204, 'nl', 2, 'Europe/Amsterdam', 'nl', 13, 'Netherlands (Kingdom of the)'),
+  (206, 'be', 2, 'Belgium'),
+  (208, 'fr', 2, 'Europe/Paris', 'fr', 'France'),
+  (212, 'mc', 2, 'Monaco (Principality of)'),
+  (213, 'ad', 2, 'Andorra (Principality of)'),
+  (214, 'es', 2, 'Europe/Madrid', 'es', 'Spain'),
+  (216, 'hu', 2, 'Hungary (Republic of)'),
+  (218, 'ba', 2, 'Bosnia and Herzegovina'),
+  (219, 'hr', 2, 'Croatia (Republic of)'),
+  (220, 'rs', 2, 'Serbia and Montenegro'),
+  (222, 'it', 2, 'Europe/Rome', 'it', 'Italy'),
+  (225, 'va', 2, 'Europe/Rome', 'it', 'Vatican City State'),
+  (226, 'ro', 2, 'Romania'),
+  (228, 'ch', 2, 'Europe/Zurich', 'de', 'Switzerland (Confederation of)'),
+  (230, 'cz', 2, 'Europe/Prague', 'cs', 13, 'Czech Republic'),
+  (231, 'sk', 2, 'Slovak Republic'),
+  (232, 'at', 2, 'Europe/Vienna', 'de', 13, 'Austria'),
+  (234, 'gb', 2, 'Europe/London', 'en', 13, 'United Kingdom of Great Britain and Northern Ireland'),
+  (235, 'gb', 2, 'Europe/London', 'en', 13, 'United Kingdom of Great Britain and Northern Ireland'),
+  (238, 'dk', 2, 'Denmark'),
+  (240, 'se', 2, 'Sweden'),
+  (242, 'no', 2, 'Norway'),
+  (244, 'fi', 2, 'Finland'),
+  (246, 'lt', 2, 'Lithuania (Republic of)'),
+  (247, 'lv', 2, 'Latvia (Republic of)'),
+  (248, 'ee', 2, 'Estonia (Republic of)'),
+  (250, 'ru', 2, 'Russian Federation'),
+  (255, 'ua', 2, 'Ukraine'),
+  (257, 'by', 2, 'Belarus (Republic of)'),
+  (259, 'md', 2, 'Moldova (Republic of)'),
+  (260, 'pl', 2, 'Europe/Warsaw', 'Poland (Republic of)'),
+  (262, 'de', 2, 'Europe/Berlin', 'de', 13, 'Germany (Federal Republic of)'),
+  (266, 'gi', 2, 'Gibraltar'),
+  (268, 'pt', 2, 'Portugal'),
+  (270, 'lu', 2, 'Luxembourg'),
+  (272, 'ie', 2, 'Europe/Dublin', 'en', 'Ireland'),
+  (274, 'is', 2, 'Iceland'),
+  (276, 'al', 2, 'Albania (Republic of)'),
+  (278, 'mt', 2, 'Malta'),
+  (280, 'cy', 2, 'Cyprus (Republic of)'),
+  (282, 'ge', 2, 'Georgia'),
+  (283, 'am', 2, 'Armenia (Republic of)'),
+  (284, 'bg', 2, 'Bulgaria (Republic of)'),
+  (286, 'tr', 2, 'Turkey'),
+  (288, 'fo', 2, 'Faroe Islands'),
+  (289, 'ge', 2, 'Abkhazia (Georgia)'),
+  (290, 'gl', 2, 'Greenland (Denmark)'),
+  (292, 'sm', 2, 'San Marino (Republic of)'),
+  (293, 'sl', 2, 'Slovenia (Republic of)'),
+  (294, 'mk', 2, 'The Former Yugoslav Republic of Macedonia'),
+  (295, 'li', 2, 'Liechtenstein (Principality of)'),
+  (297, 'me', 2, 'Montenegro (Republic of)'),
+  (302, 'ca', 2, '', '', 11, 'Canada'),
+  (308, 'pm', 2, 'Saint Pierre and Miquelon (Collectivit territoriale de la Rpublique franaise)'),
+  (310, 'us', 3, '', 'en', 11, 'United States of America'),
+  (311, 'us', 3, '', 'en', 11, 'United States of America'),
+  (312, 'us', 3, '', 'en', 11, 'United States of America'),
+  (313, 'us', 3, '', 'en', 11, 'United States of America'),
+  (314, 'us', 3, '', 'en', 11, 'United States of America'),
+  (315, 'us', 3, '', 'en', 11, 'United States of America'),
+  (316, 'us', 3, '', 'en', 11, 'United States of America'),
+  (330, 'pr', 2, 'Puerto Rico'),
+  (332, 'vi', 2, 'United States Virgin Islands'),
+  (334, 'mx', 3, 'Mexico'),
+  (338, 'jm', 3, 'Jamaica'),
+  (340, 'gp', 2, 'Guadeloupe (French Department of)'),
+  (342, 'bb', 3, 'Barbados'),
+  (344, 'ag', 3, 'Antigua and Barbuda'),
+  (346, 'ky', 3, 'Cayman Islands'),
+  (348, 'vg', 3, 'British Virgin Islands'),
+  (350, 'bm', 2, 'Bermuda'),
+  (352, 'gd', 2, 'Grenada'),
+  (354, 'ms', 2, 'Montserrat'),
+  (356, 'kn', 2, 'Saint Kitts and Nevis'),
+  (358, 'lc', 2, 'Saint Lucia'),
+  (360, 'vc', 2, 'Saint Vincent and the Grenadines'),
+  (362, 'nl', 2, 'Netherlands Antilles'),
+  (363, 'aw', 2, 'Aruba'),
+  (364, 'bs', 2, 'Bahamas (Commonwealth of the)'),
+  (365, 'ai', 3, 'Anguilla'),
+  (366, 'dm', 2, 'Dominica (Commonwealth of)'),
+  (368, 'cu', 2, 'Cuba'),
+  (370, 'do', 2, 'Dominican Republic'),
+  (372, 'ht', 2, 'Haiti (Republic of)'),
+  (374, 'tt', 2, 'Trinidad and Tobago'),
+  (376, 'tc', 2, 'Turks and Caicos Islands'),
+  (400, 'az', 2, 'Azerbaijani Republic'),
+  (401, 'kz', 2, 'Kazakhstan (Republic of)'),
+  (402, 'bt', 2, 'Bhutan (Kingdom of)'),
+  (404, 'in', 2, 'India (Republic of)'),
+  (405, 'in', 2, 'India (Republic of)'),
+  (410, 'pk', 2, 'Pakistan (Islamic Republic of)'),
+  (412, 'af', 2, 'Afghanistan'),
+  (413, 'lk', 2, 'Sri Lanka (Democratic Socialist Republic of)'),
+  (414, 'mm', 2, 'Myanmar (Union of)'),
+  (415, 'lb', 2, 'Lebanon'),
+  (416, 'jo', 2, 'Jordan (Hashemite Kingdom of)'),
+  (417, 'sy', 2, 'Syrian Arab Republic'),
+  (418, 'iq', 2, 'Iraq (Republic of)'),
+  (419, 'kw', 2, 'Kuwait (State of)'),
+  (420, 'sa', 2, 'Saudi Arabia (Kingdom of)'),
+  (421, 'ye', 2, 'Yemen (Republic of)'),
+  (422, 'om', 2, 'Oman (Sultanate of)'),
+  (423, 'ps', 2, 'Palestine'),
+  (424, 'ae', 2, 'United Arab Emirates'),
+  (425, 'il', 2, 'Israel (State of)'),
+  (426, 'bh', 2, 'Bahrain (Kingdom of)'),
+  (427, 'qa', 2, 'Qatar (State of)'),
+  (428, 'mn', 2, 'Mongolia'),
+  (429, 'np', 2, 'Nepal'),
+  (430, 'ae', 2, 'United Arab Emirates'),
+  (431, 'ae', 2, 'United Arab Emirates'),
+  (432, 'ir', 2, 'Iran (Islamic Republic of)'),
+  (434, 'uz', 2, 'Uzbekistan (Republic of)'),
+  (436, 'tj', 2, 'Tajikistan (Republic of)'),
+  (437, 'kg', 2, 'Kyrgyz Republic'),
+  (438, 'tm', 2, 'Turkmenistan'),
+  (440, 'jp', 2, 'Asia/Tokyo', 'ja', 14, 'Japan'),
+  (441, 'jp', 2, 'Asia/Tokyo', 'ja', 14, 'Japan'),
+  (450, 'kr', 2, 'Korea (Republic of)'),
+  (452, 'vn', 2, 'Viet Nam (Socialist Republic of)'),
+  (454, 'hk', 2, '"Hong Kong, China"'),
+  (455, 'mo', 2, '"Macao, China"'),
+  (456, 'kh', 2, 'Cambodia (Kingdom of)'),
+  (457, 'la', 2, "Lao People's Democratic Republic"),
+  (460, 'cn', 2, "China (People's Republic of)"),
+  (461, 'cn', 2, "China (People's Republic of)"),
+  (466, 'tw', 2, "Taiwan (Republic of China)"),
+  (467, 'kp', 2, "Democratic People's Republic of Korea"),
+  (470, 'bd', 2, "Bangladesh (People's Republic of)"),
+  (472, 'mv', 2, 'Maldives (Republic of)'),
+  (502, 'my', 2, 'Malaysia'),
+  (505, 'au', 2, 'Australia/Sydney', 'en', 11, 'Australia'),
+  (510, 'id', 2, 'Indonesia (Republic of)'),
+  (514, 'tl', 2, 'Democratic Republic of Timor-Leste'),
+  (515, 'ph', 2, 'Philippines (Republic of the)'),
+  (520, 'th', 2, 'Thailand'),
+  (525, 'sg', 2, 'Singapore', 'en', 11, 'Singapore (Republic of)'),
+  (528, 'bn', 2, 'Brunei Darussalam'),
+  (530, 'nz', 2, 'Pacific/Auckland', 'en', 'New Zealand'),
+  (534, 'mp', 2, 'Northern Mariana Islands (Commonwealth of the)'),
+  (535, 'gu', 2, 'Guam'),
+  (536, 'nr', 2, 'Nauru (Republic of)'),
+  (537, 'pg', 2, 'Papua New Guinea'),
+  (539, 'to', 2, 'Tonga (Kingdom of)'),
+  (540, 'sb', 2, 'Solomon Islands'),
+  (541, 'vu', 2, 'Vanuatu (Republic of)'),
+  (542, 'fj', 2, 'Fiji (Republic of)'),
+  (543, 'wf', 2, "Wallis and Futuna (Territoire franais d'outre-mer)"),
+  (544, 'as', 2, 'American Samoa'),
+  (545, 'ki', 2, 'Kiribati (Republic of)'),
+  (546, 'nc', 2, "New Caledonia (Territoire franais d'outre-mer)"),
+  (547, 'pf', 2, "French Polynesia (Territoire franais d'outre-mer)"),
+  (548, 'ck', 2, 'Cook Islands'),
+  (549, 'ws', 2, 'Samoa (Independent State of)'),
+  (550, 'fm', 2, 'Micronesia (Federated States of)'),
+  (551, 'mh', 2, 'Marshall Islands (Republic of the)'),
+  (552, 'pw', 2, 'Palau (Republic of)'),
+  (602, 'eg', 2, 'Egypt (Arab Republic of)'),
+  (603, 'dz', 2, "Algeria (People's Democratic Republic of)"),
+  (604, 'ma', 2, 'Morocco (Kingdom of)'),
+  (605, 'tn', 2, 'Tunisia'),
+  (606, 'ly', 2, "Libya (Socialist People's Libyan Arab Jamahiriya)"),
+  (607, 'gm', 2, 'Gambia (Republic of the)'),
+  (608, 'sn', 2, 'Senegal (Republic of)'),
+  (609, 'mr', 2, 'Mauritania (Islamic Republic of)'),
+  (610, 'ml', 2, 'Mali (Republic of)'),
+  (611, 'gn', 2, 'Guinea (Republic of)'),
+  (612, 'ci', 2, "Cte d'Ivoire (Republic of)"),
+  (613, 'bf', 2, 'Burkina Faso'),
+  (614, 'ne', 2, 'Niger (Republic of the)'),
+  (615, 'tg', 2, 'Togolese Republic'),
+  (616, 'bj', 2, 'Benin (Republic of)'),
+  (617, 'mu', 2, 'Mauritius (Republic of)'),
+  (618, 'lr', 2, 'Liberia (Republic of)'),
+  (619, 'sl', 2, 'Sierra Leone'),
+  (620, 'gh', 2, 'Ghana'),
+  (621, 'ng', 2, 'Nigeria (Federal Republic of)'),
+  (622, 'td', 2, 'Chad (Republic of)'),
+  (623, 'cf', 2, 'Central African Republic'),
+  (624, 'cm', 2, 'Cameroon (Republic of)'),
+  (625, 'cv', 2, 'Cape Verde (Republic of)'),
+  (626, 'st', 2, 'Sao Tome and Principe (Democratic Republic of)'),
+  (627, 'gq', 2, 'Equatorial Guinea (Republic of)'),
+  (628, 'ga', 2, 'Gabonese Republic'),
+  (629, 'cg', 2, 'Congo (Republic of the)'),
+  (630, 'cg', 2, 'Democratic Republic of the Congo'),
+  (631, 'ao', 2, 'Angola (Republic of)'),
+  (632, 'gw', 2, 'Guinea-Bissau (Republic of)'),
+  (633, 'sc', 2, 'Seychelles (Republic of)'),
+  (634, 'sd', 2, 'Sudan (Republic of the)'),
+  (635, 'rw', 2, 'Rwanda (Republic of)'),
+  (636, 'et', 2, 'Ethiopia (Federal Democratic Republic of)'),
+  (637, 'so', 2, 'Somali Democratic Republic'),
+  (638, 'dj', 2, 'Djibouti (Republic of)'),
+  (639, 'ke', 2, 'Kenya (Republic of)'),
+  (640, 'tz', 2, 'Tanzania (United Republic of)'),
+  (641, 'ug', 2, 'Uganda (Republic of)'),
+  (642, 'bi', 2, 'Burundi (Republic of)'),
+  (643, 'mz', 2, 'Mozambique (Republic of)'),
+  (645, 'zm', 2, 'Zambia (Republic of)'),
+  (646, 'mg', 2, 'Madagascar (Republic of)'),
+  (647, 're', 2, 'Reunion (French Department of)'),
+  (648, 'zw', 2, 'Zimbabwe (Republic of)'),
+  (649, 'na', 2, 'Namibia (Republic of)'),
+  (650, 'mw', 2, 'Malawi'),
+  (651, 'ls', 2, 'Lesotho (Kingdom of)'),
+  (652, 'bw', 2, 'Botswana (Republic of)'),
+  (653, 'sz', 2, 'Swaziland (Kingdom of)'),
+  (654, 'km', 2, 'Comoros (Union of the)'),
+  (655, 'za', 2, 'Africa/Johannesburg', 'en', 'South Africa (Republic of)'),
+  (657, 'er', 2, 'Eritrea'),
+  (702, 'bz', 2, 'Belize'),
+  (704, 'gt', 2, 'Guatemala (Republic of)'),
+  (706, 'sv', 2, 'El Salvador (Republic of)'),
+  (708, 'hn', 3, 'Honduras (Republic of)'),
+  (710, 'ni', 2, 'Nicaragua'),
+  (712, 'cr', 2, 'Costa Rica'),
+  (714, 'pa', 2, 'Panama (Republic of)'),
+  (716, 'pe', 2, 'Peru'),
+  (722, 'ar', 3, 'Argentine Republic'),
+  (724, 'br', 2, 'Brazil (Federative Republic of)'),
+  (730, 'cl', 2, 'Chile'),
+  (732, 'co', 3, 'Colombia (Republic of)'),
+  (734, 've', 2, 'Venezuela (Bolivarian Republic of)'),
+  (736, 'bo', 2, 'Bolivia (Republic of)'),
+  (738, 'gy', 2, 'Guyana'),
+  (740, 'ec', 2, 'Ecuador'),
+  (742, 'gf', 2, 'French Guiana (French Department of)'),
+  (744, 'py', 2, 'Paraguay (Republic of)'),
+  (746, 'sr', 2, 'Suriname (Republic of)'),
+  (748, 'uy', 2, 'Uruguay (Eastern Republic of)'),
+  (750, 'fk', 2, 'Falkland Islands (Malvinas)')]
+
+get_mcc = lambda elt: elt[0]
+get_iso = lambda elt: elt[1]
+get_sd = lambda elt: elt[2]
+get_tz = lambda elt: len(elt) > 4 and elt[3] or ''
+get_lang = lambda elt: len(elt) > 5 and elt[4] or ''
+get_wifi = lambda elt: len(elt) > 6 and elt[5] or 0
+
+mcc_codes = ['0x%04x' % get_mcc(elt) for elt in mcc_table]
+tz_set = sorted(x for x in set(get_tz(elt) for elt in mcc_table))
+lang_set = sorted(x for x in set(get_lang(elt) for elt in mcc_table))
+
+def mk_ind_code(elt):
+  iso = get_iso(elt)
+  iso_code = ((ord(iso[0]) << 8) | ord(iso[1])) & 0xFFFF # 16 bits
+  wifi = get_wifi(elt) & 0x000F                          #  4 bits
+  sd = get_sd(elt) & 0x0003                              #  2 bits
+  tz_ind = tz_set.index(get_tz(elt)) & 0x001F            #  5 bits
+  lang_ind = lang_set.index(get_lang(elt)) & 0x000F      #  4 bits
+  return (iso_code << 16) | (wifi << 11) | (sd << 9) | (tz_ind << 4) | lang_ind
+
+ind_codes = ['0x%08x' % mk_ind_code(elt) for elt in mcc_table]
+
+def fmt_list(title, l, batch_sz):
+  sl = []
+  for i in range(len(l) / batch_sz + (len(l) % batch_sz and 1 or 0)):
+    j = i * batch_sz
+    sl.append((' ' * 8) + ', '.join(l[j:j + batch_sz]))
+  return '    private static final %s = {\n' % title + ',\n'.join(sl) + '\n    };\n'
+
+def do_autogen_comment(extra_desc=[]):
+  print '    /' + '**\n    * AUTO GENERATED (by the Python code above)'
+  for line in extra_desc:
+    print '    * %s' % line
+  print '    *' + '/'
+
+do_autogen_comment()
+print fmt_list('String[] TZ_STRINGS', ['"%s"' % x for x in tz_set], 1)
+do_autogen_comment()
+print fmt_list('String[] LANG_STRINGS', ['"%s"' % x for x in lang_set], 10)
+do_autogen_comment(['This table is a list of MCC codes.  The index in this table',
+                    'of a given MCC code is the index of extra information about',
+                    'that MCC in the IND_CODES table.'])
+print fmt_list('short[] MCC_CODES', mcc_codes, 10)
+do_autogen_comment(['The values in this table are broken down as follows (msb to lsb):',
+                    '    iso country code 16 bits',
+                    '    (unused)          1 bit',
+                    '    wifi channel      4 bits',
+                    '    smalled digit     2 bits',
+                    '    default timezone  5 bits',
+                    '    default language  4 bits'])
+print fmt_list('int[] IND_CODES', ind_codes, 6)
+
+def parse_ind_code(ind):
+  mcc = eval(mcc_codes[ind])
+  code = eval(ind_codes[ind])
+  iso_lsb = int((code >> 16) & 0x00FF)
+  iso_msb = int((code >> 24) & 0x00FF)
+  iso = '%s%s' % (chr(iso_msb), chr(iso_lsb))
+  wifi = int((code >> 11) & 0x000F)
+  sd = int((code >> 9) & 0x0003)
+  tz_ind = (code >> 4) & 0x001F
+  lang_ind = (code >> 0) & 0x000F
+  return (mcc, iso, sd, tz_set[tz_ind], lang_set[lang_ind], wifi)
+
+fmt_str = 'mcc = %s, iso = %s, sd = %s, tz = %s, lang = %s, wifi = %s'
+orig_table = [fmt_str % (get_mcc(elt), get_iso(elt), get_sd(elt),
+                         get_tz(elt), get_lang(elt), get_wifi(elt))
+              for elt in mcc_table]
+derived_table = [fmt_str % parse_ind_code(i) for i in range(len(ind_codes))]
+for i in range(len(orig_table)):
+  if orig_table[i] == derived_table[i]: continue
+  print 'MISMATCH ERROR : ', orig_table[i], " != ", derived_table[i]
+
+*/
 
 /**
  * Mobile Country Code
@@ -26,404 +360,197 @@
  */
 public final class MccTable
 {
-    static ArrayList<MccEntry> table;
+    /**
+    * AUTO GENERATED (by the Python code above)
+    */
+    private static final String[] TZ_STRINGS = {
+        "",
+        "Africa/Johannesburg",
+        "Asia/Tokyo",
+        "Australia/Sydney",
+        "Europe/Amsterdam",
+        "Europe/Berlin",
+        "Europe/Dublin",
+        "Europe/London",
+        "Europe/Madrid",
+        "Europe/Paris",
+        "Europe/Prague",
+        "Europe/Rome",
+        "Europe/Vienna",
+        "Europe/Warsaw",
+        "Europe/Zurich",
+        "Pacific/Auckland",
+        "Singapore"
+    };
 
-    static class MccEntry implements Comparable<MccEntry>
-    {
-        int mcc;
-        String iso;
-        int smallestDigitsMnc;
-        String timezone;
-        String language;
-        int wifiChannelsAllowed;
+    /**
+    * AUTO GENERATED (by the Python code above)
+    */
+    private static final String[] LANG_STRINGS = {
+        "", "cs", "de", "en", "es", "fr", "it", "ja", "nl"
+    };
 
-        MccEntry(int mnc, String iso, int smallestDigitsMCC) {
-            this(mnc, iso, smallestDigitsMCC, null);
-        }
+    /**
+    * AUTO GENERATED (by the Python code above)
+    * This table is a list of MCC codes.  The index in this table
+    * of a given MCC code is the index of extra information about
+    * that MCC in the IND_CODES table.
+    */
+    private static final short[] MCC_CODES = {
+        0x00ca, 0x00cc, 0x00ce, 0x00d0, 0x00d4, 0x00d5, 0x00d6, 0x00d8, 0x00da, 0x00db,
+        0x00dc, 0x00de, 0x00e1, 0x00e2, 0x00e4, 0x00e6, 0x00e7, 0x00e8, 0x00ea, 0x00eb,
+        0x00ee, 0x00f0, 0x00f2, 0x00f4, 0x00f6, 0x00f7, 0x00f8, 0x00fa, 0x00ff, 0x0101,
+        0x0103, 0x0104, 0x0106, 0x010a, 0x010c, 0x010e, 0x0110, 0x0112, 0x0114, 0x0116,
+        0x0118, 0x011a, 0x011b, 0x011c, 0x011e, 0x0120, 0x0121, 0x0122, 0x0124, 0x0125,
+        0x0126, 0x0127, 0x0129, 0x012e, 0x0134, 0x0136, 0x0137, 0x0138, 0x0139, 0x013a,
+        0x013b, 0x013c, 0x014a, 0x014c, 0x014e, 0x0152, 0x0154, 0x0156, 0x0158, 0x015a,
+        0x015c, 0x015e, 0x0160, 0x0162, 0x0164, 0x0166, 0x0168, 0x016a, 0x016b, 0x016c,
+        0x016d, 0x016e, 0x0170, 0x0172, 0x0174, 0x0176, 0x0178, 0x0190, 0x0191, 0x0192,
+        0x0194, 0x0195, 0x019a, 0x019c, 0x019d, 0x019e, 0x019f, 0x01a0, 0x01a1, 0x01a2,
+        0x01a3, 0x01a4, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x01a9, 0x01aa, 0x01ab, 0x01ac,
+        0x01ad, 0x01ae, 0x01af, 0x01b0, 0x01b2, 0x01b4, 0x01b5, 0x01b6, 0x01b8, 0x01b9,
+        0x01c2, 0x01c4, 0x01c6, 0x01c7, 0x01c8, 0x01c9, 0x01cc, 0x01cd, 0x01d2, 0x01d3,
+        0x01d6, 0x01d8, 0x01f6, 0x01f9, 0x01fe, 0x0202, 0x0203, 0x0208, 0x020d, 0x0210,
+        0x0212, 0x0216, 0x0217, 0x0218, 0x0219, 0x021b, 0x021c, 0x021d, 0x021e, 0x021f,
+        0x0220, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226, 0x0227, 0x0228, 0x025a,
+        0x025b, 0x025c, 0x025d, 0x025e, 0x025f, 0x0260, 0x0261, 0x0262, 0x0263, 0x0264,
+        0x0265, 0x0266, 0x0267, 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e,
+        0x026f, 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, 0x0278,
+        0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f, 0x0280, 0x0281, 0x0282,
+        0x0283, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d,
+        0x028e, 0x028f, 0x0291, 0x02be, 0x02c0, 0x02c2, 0x02c4, 0x02c6, 0x02c8, 0x02ca,
+        0x02cc, 0x02d2, 0x02d4, 0x02da, 0x02dc, 0x02de, 0x02e0, 0x02e2, 0x02e4, 0x02e6,
+        0x02e8, 0x02ea, 0x02ec, 0x02ee
+    };
 
-        MccEntry(int mnc, String iso, int smallestDigitsMCC, String timezone) {
-            this(mnc, iso, smallestDigitsMCC, timezone, null);
-        }
+    /**
+    * AUTO GENERATED (by the Python code above)
+    * The values in this table are broken down as follows (msb to lsb):
+    *     iso country code 16 bits
+    *     (unused)          1 bit
+    *     wifi channel      4 bits
+    *     smalled digit     2 bits
+    *     default timezone  5 bits
+    *     default language  4 bits
+    */
+    private static final int[] IND_CODES = {
+        0x67720400, 0x6e6c6c48, 0x62650400, 0x66720495, 0x6d630400, 0x61640400,
+        0x65730484, 0x68750400, 0x62610400, 0x68720400, 0x72730400, 0x697404b6,
+        0x766104b6, 0x726f0400, 0x636804e2, 0x637a6ca1, 0x736b0400, 0x61746cc2,
+        0x67626c73, 0x67626c73, 0x646b0400, 0x73650400, 0x6e6f0400, 0x66690400,
+        0x6c740400, 0x6c760400, 0x65650400, 0x72750400, 0x75610400, 0x62790400,
+        0x6d640400, 0x706c04d0, 0x64656c52, 0x67690400, 0x70740400, 0x6c750400,
+        0x69650463, 0x69730400, 0x616c0400, 0x6d740400, 0x63790400, 0x67650400,
+        0x616d0400, 0x62670400, 0x74720400, 0x666f0400, 0x67650400, 0x676c0400,
+        0x736d0400, 0x736c0400, 0x6d6b0400, 0x6c690400, 0x6d650400, 0x63615c00,
+        0x706d0400, 0x75735e03, 0x75735e03, 0x75735e03, 0x75735e03, 0x75735e03,
+        0x75735e03, 0x75735e03, 0x70720400, 0x76690400, 0x6d780600, 0x6a6d0600,
+        0x67700400, 0x62620600, 0x61670600, 0x6b790600, 0x76670600, 0x626d0400,
+        0x67640400, 0x6d730400, 0x6b6e0400, 0x6c630400, 0x76630400, 0x6e6c0400,
+        0x61770400, 0x62730400, 0x61690600, 0x646d0400, 0x63750400, 0x646f0400,
+        0x68740400, 0x74740400, 0x74630400, 0x617a0400, 0x6b7a0400, 0x62740400,
+        0x696e0400, 0x696e0400, 0x706b0400, 0x61660400, 0x6c6b0400, 0x6d6d0400,
+        0x6c620400, 0x6a6f0400, 0x73790400, 0x69710400, 0x6b770400, 0x73610400,
+        0x79650400, 0x6f6d0400, 0x70730400, 0x61650400, 0x696c0400, 0x62680400,
+        0x71610400, 0x6d6e0400, 0x6e700400, 0x61650400, 0x61650400, 0x69720400,
+        0x757a0400, 0x746a0400, 0x6b670400, 0x746d0400, 0x6a707427, 0x6a707427,
+        0x6b720400, 0x766e0400, 0x686b0400, 0x6d6f0400, 0x6b680400, 0x6c610400,
+        0x636e0400, 0x636e0400, 0x74770400, 0x6b700400, 0x62640400, 0x6d760400,
+        0x6d790400, 0x61755c33, 0x69640400, 0x746c0400, 0x70680400, 0x74680400,
+        0x73675d03, 0x626e0400, 0x6e7a04f3, 0x6d700400, 0x67750400, 0x6e720400,
+        0x70670400, 0x746f0400, 0x73620400, 0x76750400, 0x666a0400, 0x77660400,
+        0x61730400, 0x6b690400, 0x6e630400, 0x70660400, 0x636b0400, 0x77730400,
+        0x666d0400, 0x6d680400, 0x70770400, 0x65670400, 0x647a0400, 0x6d610400,
+        0x746e0400, 0x6c790400, 0x676d0400, 0x736e0400, 0x6d720400, 0x6d6c0400,
+        0x676e0400, 0x63690400, 0x62660400, 0x6e650400, 0x74670400, 0x626a0400,
+        0x6d750400, 0x6c720400, 0x736c0400, 0x67680400, 0x6e670400, 0x74640400,
+        0x63660400, 0x636d0400, 0x63760400, 0x73740400, 0x67710400, 0x67610400,
+        0x63670400, 0x63670400, 0x616f0400, 0x67770400, 0x73630400, 0x73640400,
+        0x72770400, 0x65740400, 0x736f0400, 0x646a0400, 0x6b650400, 0x747a0400,
+        0x75670400, 0x62690400, 0x6d7a0400, 0x7a6d0400, 0x6d670400, 0x72650400,
+        0x7a770400, 0x6e610400, 0x6d770400, 0x6c730400, 0x62770400, 0x737a0400,
+        0x6b6d0400, 0x7a610413, 0x65720400, 0x627a0400, 0x67740400, 0x73760400,
+        0x686e0600, 0x6e690400, 0x63720400, 0x70610400, 0x70650400, 0x61720600,
+        0x62720400, 0x636c0400, 0x636f0600, 0x76650400, 0x626f0400, 0x67790400,
+        0x65630400, 0x67660400, 0x70790400, 0x73720400, 0x75790400, 0x666b0400
+    };
 
-        MccEntry(int mnc, String iso, int smallestDigitsMCC, String timezone, String language) {
-            this(mnc, iso, smallestDigitsMCC, timezone, language, 0);
-        }
-
-        MccEntry(int mnc, String iso, int smallestDigitsMCC, String timezone, String language, int wifiChannels) {
-            this.mcc = mnc;
-            this.iso = iso;
-            this.smallestDigitsMnc = smallestDigitsMCC;
-            this.timezone = timezone;
-            this.language = language;
-            this.wifiChannelsAllowed = wifiChannels;
-        }
-
-        public int compareTo(MccEntry o)
-        {
-            return mcc - o.mcc;
-        }
-    }
-
-    private static MccEntry
-    entryForMcc(int mcc)
-    {
-        int index;
-
-        MccEntry m;
-
-        m = new MccEntry(mcc, null, 0);
-
-        index = Collections.binarySearch(table, m);
-
+    /**
+     * Given a GSM Mobile Country Code, returns a default time zone ID
+     * if available.  Returns null if unavailable.
+     */
+    public static String defaultTimeZoneForMcc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
         if (index < 0) {
             return null;
-        } else {
-            return table.get(index);
         }
-    }
-
-    /**
-     * Returns a default time zone ID for the given MCC.
-     * @param mcc Mobile Country Code
-     * @return default TimeZone ID, or null if not specified
-     */
-    /* package */ static String defaultTimeZoneForMcc(int mcc) {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+        int indCode = IND_CODES[index];
+        int tzInd = (indCode >>> 4) & 0x001F;
+        String tz = TZ_STRINGS[tzInd];
+        if (tz == "") {
             return null;
-        } else {
-            return entry.timezone;
         }
+        return tz;
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * an ISO two-character country code if available.
-     * Returns "" if unavailable.
+     * Given a GSM Mobile Country Code, returns an ISO two-character
+     * country code if available.  Returns "" if unavailable.
      */
-    public static String
-    countryCodeForMcc(int mcc)
-    {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+    public static String countryCodeForMcc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return "";
-        } else {
-            return entry.iso;
         }
+        int indCode = IND_CODES[index];
+        byte[] iso = {(byte)((indCode >>> 24) & 0x00FF), (byte)((indCode >>> 16) & 0x00FF)};
+        return new String(iso);
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * an ISO 2-3 character language code if available.
-     * Returns null if unavailable.
+     * Given a GSM Mobile Country Code, returns an ISO 2-3 character
+     * language code if available.  Returns null if unavailable.
      */
-    /* package */ static String defaultLanguageForMcc(int mcc) {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+    public static String defaultLanguageForMcc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return null;
-        } else {
-            return entry.language;
         }
+        int indCode = IND_CODES[index];
+        int langInd = indCode & 0x000F;
+        String lang = LANG_STRINGS[langInd];
+        if (lang == "") {
+            return null;
+        }
+        return lang;
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * the smallest number of digits that M if available.
-     * Returns "" if unavailable.
+     * Given a GSM Mobile Country Code, returns the corresponding
+     * smallest number of digits field.  Returns 2 if unavailable.
      */
-    public static int
-    smallestDigitsMccForMnc(int mcc)
-    {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+    public static int smallestDigitsMccForMnc(int mcc) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return 2;
-        } else {
-            return entry.smallestDigitsMnc;
         }
+        int indCode = IND_CODES[index];
+        int smDig = (indCode >>> 9) & 0x0003;
+        return smDig;
     }
 
     /**
-     * Given a GSM Mobile Country Code, returns
-     * the number of wifi channels allowed in that country.
-     * Returns 0 if unavailable
+     * Given a GSM Mobile Country Code, returns the number of wifi
+     * channels allowed in that country.  Returns 0 if unavailable.
      */
     public static int wifiChannelsForMcc(int mcc) {
-        MccEntry entry;
-
-        entry = entryForMcc(mcc);
-
-        if (entry == null) {
+        int index = Arrays.binarySearch(MCC_CODES, (short)mcc);
+        if (index < 0) {
             return 0;
-        } else {
-            return entry.wifiChannelsAllowed;
         }
+        int indCode = IND_CODES[index];
+        int wifi = (indCode >>> 11) & 0x000F;
+        return wifi;
     }
 
-    static {
-        table = new ArrayList<MccEntry>(240);
-
-
-        /*
-         * The table below is built from two resources:
-         *
-         * 1) ITU "Mobile Network Code (MNC) for the international
-         *   identification plan for mobile terminals and mobile users"
-         *   which is available as an annex to the ITU operational bulletin
-         *   available here: http://www.itu.int/itu-t/bulletin/annex.html
-         *
-         * 2) The ISO 3166 country codes list, available here:
-         *    http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html
-         *
-         * This table has not been verified.
-         *
-         * FIXME(mkf) this should be stored in a more efficient representation
-         */
-
-		table.add(new MccEntry(202,"gr",2));	//Greece
-		table.add(new MccEntry(204,"nl",2,"Europe/Amsterdam","nl",13)); //Netherlands (Kingdom of the)
-		table.add(new MccEntry(206,"be",2));	//Belgium
-		table.add(new MccEntry(208,"fr",2,"Europe/Paris","fr"));	//France
-		table.add(new MccEntry(212,"mc",2));	//Monaco (Principality of)
-		table.add(new MccEntry(213,"ad",2));	//Andorra (Principality of)
-		table.add(new MccEntry(214,"es",2,"Europe/Madrid","es"));	//Spain
-		table.add(new MccEntry(216,"hu",2));	//Hungary (Republic of)
-		table.add(new MccEntry(218,"ba",2));	//Bosnia and Herzegovina
-		table.add(new MccEntry(219,"hr",2));	//Croatia (Republic of)
-		table.add(new MccEntry(220,"rs",2));	//Serbia and Montenegro
-		table.add(new MccEntry(222,"it",2,"Europe/Rome","it"));	//Italy
-		table.add(new MccEntry(225,"va",2,"Europe/Rome","it"));	//Vatican City State
-		table.add(new MccEntry(226,"ro",2));	//Romania
-		table.add(new MccEntry(228,"ch",2,"Europe/Zurich","de"));	//Switzerland (Confederation of)
-		table.add(new MccEntry(230,"cz",2,"Europe/Prague","cs", 13));	//Czech Republic
-		table.add(new MccEntry(231,"sk",2));	//Slovak Republic
-		table.add(new MccEntry(232,"at",2,"Europe/Vienna","de", 13));   //Austria
-		table.add(new MccEntry(234,"gb",2,"Europe/London","en", 13));   //United Kingdom of Great Britain and Northern Ireland
-		table.add(new MccEntry(235,"gb",2,"Europe/London","en", 13));   //United Kingdom of Great Britain and Northern Ireland
-		table.add(new MccEntry(238,"dk",2));	//Denmark
-		table.add(new MccEntry(240,"se",2));	//Sweden
-		table.add(new MccEntry(242,"no",2));	//Norway
-		table.add(new MccEntry(244,"fi",2));	//Finland
-		table.add(new MccEntry(246,"lt",2));	//Lithuania (Republic of)
-		table.add(new MccEntry(247,"lv",2));	//Latvia (Republic of)
-		table.add(new MccEntry(248,"ee",2));	//Estonia (Republic of)
-		table.add(new MccEntry(250,"ru",2));	//Russian Federation
-		table.add(new MccEntry(255,"ua",2));	//Ukraine
-		table.add(new MccEntry(257,"by",2));	//Belarus (Republic of)
-		table.add(new MccEntry(259,"md",2));	//Moldova (Republic of)
-		table.add(new MccEntry(260,"pl",2,"Europe/Warsaw"));	//Poland (Republic of)
-		table.add(new MccEntry(262,"de",2,"Europe/Berlin","de", 13));   //Germany (Federal Republic of)
-		table.add(new MccEntry(266,"gi",2));	//Gibraltar
-		table.add(new MccEntry(268,"pt",2));	//Portugal
-		table.add(new MccEntry(270,"lu",2));	//Luxembourg
-		table.add(new MccEntry(272,"ie",2,"Europe/Dublin","en"));	//Ireland
-		table.add(new MccEntry(274,"is",2));	//Iceland
-		table.add(new MccEntry(276,"al",2));	//Albania (Republic of)
-		table.add(new MccEntry(278,"mt",2));	//Malta
-		table.add(new MccEntry(280,"cy",2));	//Cyprus (Republic of)
-		table.add(new MccEntry(282,"ge",2));	//Georgia
-		table.add(new MccEntry(283,"am",2));	//Armenia (Republic of)
-		table.add(new MccEntry(284,"bg",2));	//Bulgaria (Republic of)
-		table.add(new MccEntry(286,"tr",2));	//Turkey
-		table.add(new MccEntry(288,"fo",2));	//Faroe Islands
-		table.add(new MccEntry(290,"gl",2));	//Greenland (Denmark)
-		table.add(new MccEntry(292,"sm",2));	//San Marino (Republic of)
-		table.add(new MccEntry(293,"sl",2));	//Slovenia (Republic of)
-                table.add(new MccEntry(294,"mk",2));   //The Former Yugoslav Republic of Macedonia
-		table.add(new MccEntry(295,"li",2));	//Liechtenstein (Principality of)
-		table.add(new MccEntry(302,"ca",2, "", "", 11));        //Canada
-		table.add(new MccEntry(308,"pm",2));	//Saint Pierre and Miquelon (Collectivit territoriale de la Rpublique franaise)
-		table.add(new MccEntry(310,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(311,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(312,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(313,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(314,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(315,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(316,"us",3,"","en", 11));        //United States of America
-		table.add(new MccEntry(330,"pr",2));	//Puerto Rico
-		table.add(new MccEntry(332,"vi",2));	//United States Virgin Islands
-		table.add(new MccEntry(334,"mx",3));	//Mexico
-		table.add(new MccEntry(338,"jm",3));	//Jamaica
-		table.add(new MccEntry(340,"gp",2));	//Guadeloupe (French Department of)
-		table.add(new MccEntry(342,"bb",3));	//Barbados
-		table.add(new MccEntry(344,"ag",3));	//Antigua and Barbuda
-		table.add(new MccEntry(346,"ky",3));	//Cayman Islands
-		table.add(new MccEntry(348,"vg",3));	//British Virgin Islands
-		table.add(new MccEntry(350,"bm",2));	//Bermuda
-		table.add(new MccEntry(352,"gd",2));	//Grenada
-		table.add(new MccEntry(354,"ms",2));	//Montserrat
-		table.add(new MccEntry(356,"kn",2));	//Saint Kitts and Nevis
-		table.add(new MccEntry(358,"lc",2));	//Saint Lucia
-		table.add(new MccEntry(360,"vc",2));	//Saint Vincent and the Grenadines
-		table.add(new MccEntry(362,"nl",2));	//Netherlands Antilles
-		table.add(new MccEntry(363,"aw",2));	//Aruba
-		table.add(new MccEntry(364,"bs",2));	//Bahamas (Commonwealth of the)
-		table.add(new MccEntry(365,"ai",3));	//Anguilla
-		table.add(new MccEntry(366,"dm",2));	//Dominica (Commonwealth of)
-		table.add(new MccEntry(368,"cu",2));	//Cuba
-		table.add(new MccEntry(370,"do",2));	//Dominican Republic
-		table.add(new MccEntry(372,"ht",2));	//Haiti (Republic of)
-		table.add(new MccEntry(374,"tt",2));	//Trinidad and Tobago
-		table.add(new MccEntry(376,"tc",2));	//Turks and Caicos Islands
-		table.add(new MccEntry(400,"az",2));	//Azerbaijani Republic
-		table.add(new MccEntry(401,"kz",2));	//Kazakhstan (Republic of)
-		table.add(new MccEntry(402,"bt",2));	//Bhutan (Kingdom of)
-		table.add(new MccEntry(404,"in",2));	//India (Republic of)
-		table.add(new MccEntry(405,"in",2));	//India (Republic of)
-		table.add(new MccEntry(410,"pk",2));	//Pakistan (Islamic Republic of)
-		table.add(new MccEntry(412,"af",2));	//Afghanistan
-		table.add(new MccEntry(413,"lk",2));	//Sri Lanka (Democratic Socialist Republic of)
-		table.add(new MccEntry(414,"mm",2));	//Myanmar (Union of)
-		table.add(new MccEntry(415,"lb",2));	//Lebanon
-		table.add(new MccEntry(416,"jo",2));	//Jordan (Hashemite Kingdom of)
-		table.add(new MccEntry(417,"sy",2));	//Syrian Arab Republic
-		table.add(new MccEntry(418,"iq",2));	//Iraq (Republic of)
-		table.add(new MccEntry(419,"kw",2));	//Kuwait (State of)
-		table.add(new MccEntry(420,"sa",2));	//Saudi Arabia (Kingdom of)
-		table.add(new MccEntry(421,"ye",2));	//Yemen (Republic of)
-		table.add(new MccEntry(422,"om",2));	//Oman (Sultanate of)
-		table.add(new MccEntry(424,"ae",2));	//United Arab Emirates
-		table.add(new MccEntry(425,"il",2));	//Israel (State of)
-		table.add(new MccEntry(426,"bh",2));	//Bahrain (Kingdom of)
-		table.add(new MccEntry(427,"qa",2));	//Qatar (State of)
-		table.add(new MccEntry(428,"mn",2));	//Mongolia
-		table.add(new MccEntry(429,"np",2));	//Nepal
-		table.add(new MccEntry(430,"ae",2));	//United Arab Emirates
-		table.add(new MccEntry(431,"ae",2));	//United Arab Emirates
-		table.add(new MccEntry(432,"ir",2));	//Iran (Islamic Republic of)
-		table.add(new MccEntry(434,"uz",2));	//Uzbekistan (Republic of)
-		table.add(new MccEntry(436,"tj",2));	//Tajikistan (Republic of)
-		table.add(new MccEntry(437,"kg",2));	//Kyrgyz Republic
-		table.add(new MccEntry(438,"tm",2));	//Turkmenistan
-		table.add(new MccEntry(440,"jp",2,"Asia/Tokyo","ja", 14));              //Japan
-		table.add(new MccEntry(441,"jp",2,"Asia/Tokyo","ja", 14));              //Japan
-		table.add(new MccEntry(450,"kr",2));	//Korea (Republic of)
-		table.add(new MccEntry(452,"vn",2));	//Viet Nam (Socialist Republic of)
-		table.add(new MccEntry(454,"hk",2));	//"Hong Kong, China"
-		table.add(new MccEntry(455,"mo",2));	//"Macao, China"
-		table.add(new MccEntry(456,"kh",2));	//Cambodia (Kingdom of)
-		table.add(new MccEntry(457,"la",2));	//Lao People's Democratic Republic
-		table.add(new MccEntry(460,"cn",2));	//China (People's Republic of)
-		table.add(new MccEntry(461,"cn",2));	//China (People's Republic of)
-		table.add(new MccEntry(466,"tw",2));	//"Taiwan, China"
-		table.add(new MccEntry(467,"kp",2));	//Democratic People's Republic of Korea
-		table.add(new MccEntry(470,"bd",2));	//Bangladesh (People's Republic of)
-		table.add(new MccEntry(472,"mv",2));	//Maldives (Republic of)
-		table.add(new MccEntry(502,"my",2));	//Malaysia
-		table.add(new MccEntry(505,"au",2,"Australia/Sydney","en", 11));        //Australia
-		table.add(new MccEntry(510,"id",2));	//Indonesia (Republic of)
-		table.add(new MccEntry(514,"tl",2));	//Democratic Republic of Timor-Leste
-		table.add(new MccEntry(515,"ph",2));	//Philippines (Republic of the)
-		table.add(new MccEntry(520,"th",2));	//Thailand
-		table.add(new MccEntry(525,"sg",2,"Singapore","en", 11));               //Singapore (Republic of)
-		table.add(new MccEntry(528,"bn",2));	//Brunei Darussalam
-		table.add(new MccEntry(530,"nz",2,"Pacific/Auckland", "en"));	//New Zealand
-		table.add(new MccEntry(534,"mp",2));	//Northern Mariana Islands (Commonwealth of the)
-		table.add(new MccEntry(535,"gu",2));	//Guam
-		table.add(new MccEntry(536,"nr",2));	//Nauru (Republic of)
-		table.add(new MccEntry(537,"pg",2));	//Papua New Guinea
-		table.add(new MccEntry(539,"to",2));	//Tonga (Kingdom of)
-		table.add(new MccEntry(540,"sb",2));	//Solomon Islands
-		table.add(new MccEntry(541,"vu",2));	//Vanuatu (Republic of)
-		table.add(new MccEntry(542,"fj",2));	//Fiji (Republic of)
-		table.add(new MccEntry(543,"wf",2));	//Wallis and Futuna (Territoire franais d'outre-mer)
-		table.add(new MccEntry(544,"as",2));	//American Samoa
-		table.add(new MccEntry(545,"ki",2));	//Kiribati (Republic of)
-		table.add(new MccEntry(546,"nc",2));	//New Caledonia (Territoire franais d'outre-mer)
-		table.add(new MccEntry(547,"pf",2));	//French Polynesia (Territoire franais d'outre-mer)
-		table.add(new MccEntry(548,"ck",2));	//Cook Islands
-		table.add(new MccEntry(549,"ws",2));	//Samoa (Independent State of)
-		table.add(new MccEntry(550,"fm",2));	//Micronesia (Federated States of)
-		table.add(new MccEntry(551,"mh",2));	//Marshall Islands (Republic of the)
-		table.add(new MccEntry(552,"pw",2));	//Palau (Republic of)
-		table.add(new MccEntry(602,"eg",2));	//Egypt (Arab Republic of)
-		table.add(new MccEntry(603,"dz",2));	//Algeria (People's Democratic Republic of)
-		table.add(new MccEntry(604,"ma",2));	//Morocco (Kingdom of)
-		table.add(new MccEntry(605,"tn",2));	//Tunisia
-		table.add(new MccEntry(606,"ly",2));	//Libya (Socialist People's Libyan Arab Jamahiriya)
-		table.add(new MccEntry(607,"gm",2));	//Gambia (Republic of the)
-		table.add(new MccEntry(608,"sn",2));	//Senegal (Republic of)
-		table.add(new MccEntry(609,"mr",2));	//Mauritania (Islamic Republic of)
-		table.add(new MccEntry(610,"ml",2));	//Mali (Republic of)
-		table.add(new MccEntry(611,"gn",2));	//Guinea (Republic of)
-		table.add(new MccEntry(612,"ci",2));	//Cte d'Ivoire (Republic of)
-		table.add(new MccEntry(613,"bf",2));	//Burkina Faso
-		table.add(new MccEntry(614,"ne",2));	//Niger (Republic of the)
-		table.add(new MccEntry(615,"tg",2));	//Togolese Republic
-		table.add(new MccEntry(616,"bj",2));	//Benin (Republic of)
-		table.add(new MccEntry(617,"mu",2));	//Mauritius (Republic of)
-		table.add(new MccEntry(618,"lr",2));	//Liberia (Republic of)
-		table.add(new MccEntry(619,"sl",2));	//Sierra Leone
-		table.add(new MccEntry(620,"gh",2));	//Ghana
-		table.add(new MccEntry(621,"ng",2));	//Nigeria (Federal Republic of)
-		table.add(new MccEntry(622,"td",2));	//Chad (Republic of)
-		table.add(new MccEntry(623,"cf",2));	//Central African Republic
-		table.add(new MccEntry(624,"cm",2));	//Cameroon (Republic of)
-		table.add(new MccEntry(625,"cv",2));	//Cape Verde (Republic of)
-		table.add(new MccEntry(626,"st",2));	//Sao Tome and Principe (Democratic Republic of)
-		table.add(new MccEntry(627,"gq",2));	//Equatorial Guinea (Republic of)
-		table.add(new MccEntry(628,"ga",2));	//Gabonese Republic
-		table.add(new MccEntry(629,"cg",2));	//Congo (Republic of the)
-		table.add(new MccEntry(630,"cg",2));	//Democratic Republic of the Congo
-		table.add(new MccEntry(631,"ao",2));	//Angola (Republic of)
-		table.add(new MccEntry(632,"gw",2));	//Guinea-Bissau (Republic of)
-		table.add(new MccEntry(633,"sc",2));	//Seychelles (Republic of)
-		table.add(new MccEntry(634,"sd",2));	//Sudan (Republic of the)
-		table.add(new MccEntry(635,"rw",2));	//Rwanda (Republic of)
-		table.add(new MccEntry(636,"et",2));	//Ethiopia (Federal Democratic Republic of)
-		table.add(new MccEntry(637,"so",2));	//Somali Democratic Republic
-		table.add(new MccEntry(638,"dj",2));	//Djibouti (Republic of)
-		table.add(new MccEntry(639,"ke",2));	//Kenya (Republic of)
-		table.add(new MccEntry(640,"tz",2));	//Tanzania (United Republic of)
-		table.add(new MccEntry(641,"ug",2));	//Uganda (Republic of)
-		table.add(new MccEntry(642,"bi",2));	//Burundi (Republic of)
-		table.add(new MccEntry(643,"mz",2));	//Mozambique (Republic of)
-		table.add(new MccEntry(645,"zm",2));	//Zambia (Republic of)
-		table.add(new MccEntry(646,"mg",2));	//Madagascar (Republic of)
-		table.add(new MccEntry(647,"re",2));	//Reunion (French Department of)
-		table.add(new MccEntry(648,"zw",2));	//Zimbabwe (Republic of)
-		table.add(new MccEntry(649,"na",2));	//Namibia (Republic of)
-		table.add(new MccEntry(650,"mw",2));	//Malawi
-		table.add(new MccEntry(651,"ls",2));	//Lesotho (Kingdom of)
-		table.add(new MccEntry(652,"bw",2));	//Botswana (Republic of)
-		table.add(new MccEntry(653,"sz",2));	//Swaziland (Kingdom of)
-		table.add(new MccEntry(654,"km",2));	//Comoros (Union of the)
-		table.add(new MccEntry(655,"za",2,"Africa/Johannesburg","en"));	//South Africa (Republic of)
-		table.add(new MccEntry(657,"er",2));	//Eritrea
-		table.add(new MccEntry(702,"bz",2));	//Belize
-		table.add(new MccEntry(704,"gt",2));	//Guatemala (Republic of)
-		table.add(new MccEntry(706,"sv",2));	//El Salvador (Republic of)
-		table.add(new MccEntry(708,"hn",3));	//Honduras (Republic of)
-		table.add(new MccEntry(710,"ni",2));	//Nicaragua
-		table.add(new MccEntry(712,"cr",2));	//Costa Rica
-		table.add(new MccEntry(714,"pa",2));	//Panama (Republic of)
-		table.add(new MccEntry(716,"pe",2));	//Peru
-		table.add(new MccEntry(722,"ar",3));	//Argentine Republic
-		table.add(new MccEntry(724,"br",2));	//Brazil (Federative Republic of)
-		table.add(new MccEntry(730,"cl",2));	//Chile
-		table.add(new MccEntry(732,"co",3));	//Colombia (Republic of)
-		table.add(new MccEntry(734,"ve",2));	//Venezuela (Bolivarian Republic of)
-		table.add(new MccEntry(736,"bo",2));	//Bolivia (Republic of)
-		table.add(new MccEntry(738,"gy",2));	//Guyana
-		table.add(new MccEntry(740,"ec",2));	//Ecuador
-		table.add(new MccEntry(742,"gf",2));	//French Guiana (French Department of)
-		table.add(new MccEntry(744,"py",2));	//Paraguay (Republic of)
-		table.add(new MccEntry(746,"sr",2));	//Suriname (Republic of)
-		table.add(new MccEntry(748,"uy",2));	//Uruguay (Eastern Republic of)
-		table.add(new MccEntry(750,"fk",2));	//Falkland Islands (Malvinas)
-        //table.add(new MccEntry(901,"",2));	//"International Mobile, shared code"
-
-        Collections.sort(table);
-    }
 }
diff --git a/test-runner/android/test/mock/MockPackageManager.java b/test-runner/android/test/mock/MockPackageManager.java
index 4a50c5d..beb9044 100644
--- a/test-runner/android/test/mock/MockPackageManager.java
+++ b/test-runner/android/test/mock/MockPackageManager.java
@@ -22,6 +22,7 @@
 import android.content.IntentSender;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.FeatureInfo;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageInstallObserver;
@@ -424,6 +425,11 @@
     }
     
     @Override
+    public FeatureInfo[] getSystemAvailableFeatures() {
+        throw new UnsupportedOperationException();
+    }
+    
+    @Override
     public boolean isSafeMode() {
         throw new UnsupportedOperationException();
     }
diff --git a/tests/AndroidTests/src/com/android/unit_tests/MccTableTest.java b/tests/AndroidTests/src/com/android/unit_tests/MccTableTest.java
new file mode 100644
index 0000000..875376a
--- /dev/null
+++ b/tests/AndroidTests/src/com/android/unit_tests/MccTableTest.java
@@ -0,0 +1,87 @@
+/*
+ * 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.unit_tests;
+
+import com.android.internal.telephony.gsm.MccTable;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import android.util.Log;
+
+public class MccTableTest extends AndroidTestCase {
+    private final static String LOG_TAG = "GSM";
+
+    @SmallTest
+    public void testTimeZone() throws Exception {
+        assertEquals(MccTable.defaultTimeZoneForMcc(208), "Europe/Paris");
+        assertEquals(MccTable.defaultTimeZoneForMcc(232), "Europe/Vienna");
+        assertEquals(MccTable.defaultTimeZoneForMcc(655), "Africa/Johannesburg");
+        assertEquals(MccTable.defaultTimeZoneForMcc(440), "Asia/Tokyo");
+        assertEquals(MccTable.defaultTimeZoneForMcc(441), "Asia/Tokyo");
+        assertEquals(MccTable.defaultTimeZoneForMcc(525), "Singapore");
+        assertEquals(MccTable.defaultTimeZoneForMcc(240), null);  // tz not defined, hence default
+        assertEquals(MccTable.defaultTimeZoneForMcc(0), null);    // mcc not defined, hence default
+        assertEquals(MccTable.defaultTimeZoneForMcc(2000), null); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testCountryCode() throws Exception {
+        assertEquals(MccTable.countryCodeForMcc(270), "lu");
+        assertEquals(MccTable.countryCodeForMcc(202), "gr");
+        assertEquals(MccTable.countryCodeForMcc(750), "fk");
+        assertEquals(MccTable.countryCodeForMcc(646), "mg");
+        assertEquals(MccTable.countryCodeForMcc(314), "us");
+        assertEquals(MccTable.countryCodeForMcc(300), "");  // mcc not defined, hence default
+        assertEquals(MccTable.countryCodeForMcc(0), "");    // mcc not defined, hence default
+        assertEquals(MccTable.countryCodeForMcc(2000), ""); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testLang() throws Exception {
+        assertEquals(MccTable.defaultLanguageForMcc(311), "en");
+        assertEquals(MccTable.defaultLanguageForMcc(232), "de");
+        assertEquals(MccTable.defaultLanguageForMcc(230), "cs");
+        assertEquals(MccTable.defaultLanguageForMcc(204), "nl");
+        assertEquals(MccTable.defaultLanguageForMcc(274), null);  // lang not defined, hence default
+        assertEquals(MccTable.defaultLanguageForMcc(0), null);    // mcc not defined, hence default
+        assertEquals(MccTable.defaultLanguageForMcc(2000), null); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testSmDigits() throws Exception {
+        assertEquals(MccTable.smallestDigitsMccForMnc(312), 3);
+        assertEquals(MccTable.smallestDigitsMccForMnc(430), 2);
+        assertEquals(MccTable.smallestDigitsMccForMnc(365), 3);
+        assertEquals(MccTable.smallestDigitsMccForMnc(536), 2);
+        assertEquals(MccTable.smallestDigitsMccForMnc(352), 2);  // sd not defined, hence default
+        assertEquals(MccTable.smallestDigitsMccForMnc(0), 2);    // mcc not defined, hence default
+        assertEquals(MccTable.smallestDigitsMccForMnc(2000), 2); // mcc not defined, hence default
+    }
+
+    @SmallTest
+    public void testWifi() throws Exception {
+        assertEquals(MccTable.wifiChannelsForMcc(262), 13);
+        assertEquals(MccTable.wifiChannelsForMcc(234), 13);
+        assertEquals(MccTable.wifiChannelsForMcc(505), 11);
+        assertEquals(MccTable.wifiChannelsForMcc(313), 11);
+        assertEquals(MccTable.wifiChannelsForMcc(330), 0);  // wifi not defined, hence default
+        assertEquals(MccTable.wifiChannelsForMcc(0), 0);    // mcc not defined, hence default
+        assertEquals(MccTable.wifiChannelsForMcc(2000), 0); // mcc not defined, hence default
+
+    }
+}
diff --git a/tests/AndroidTests/src/com/android/unit_tests/activity/LifecycleTest.java b/tests/AndroidTests/src/com/android/unit_tests/activity/LifecycleTest.java
index fdc12ce..80904da 100644
--- a/tests/AndroidTests/src/com/android/unit_tests/activity/LifecycleTest.java
+++ b/tests/AndroidTests/src/com/android/unit_tests/activity/LifecycleTest.java
@@ -67,7 +67,8 @@
         runLaunchpad(LaunchpadActivity.LIFECYCLE_SCREEN);
     }
 
-    @LargeTest
+    //flaky test, removing from large suite until 1866891 is fixed
+    //@LargeTest
     public void testDialog() throws Exception {
         mIntent = mTopIntent;
         runLaunchpad(LaunchpadActivity.LIFECYCLE_DIALOG);
diff --git a/tests/FrameworkTest/res/drawable-hdpi/big_drawable_background.9.png b/tests/FrameworkTest/res/drawable-hdpi/big_drawable_background.9.png
new file mode 100644
index 0000000..53470b8
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/big_drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/black_square.png b/tests/FrameworkTest/res/drawable-hdpi/black_square.png
new file mode 100644
index 0000000..77521031
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/black_square.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/black_square_stretchable.9.png b/tests/FrameworkTest/res/drawable-hdpi/black_square_stretchable.9.png
new file mode 100644
index 0000000..4988163
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/black_square_stretchable.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/drawable_background.9.png b/tests/FrameworkTest/res/drawable-hdpi/drawable_background.9.png
new file mode 100644
index 0000000..f692d38
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_pause_1.png b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_pause_1.png
new file mode 100644
index 0000000..9edb064
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_pause_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_backward_1.png b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_backward_1.png
new file mode 100644
index 0000000..c4b6b92
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_backward_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_forward_1.png b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_forward_1.png
new file mode 100644
index 0000000..03140f5
--- /dev/null
+++ b/tests/FrameworkTest/res/drawable-hdpi/sym_now_playing_skip_forward_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/big_drawable_background.9.png b/tests/FrameworkTest/res/drawable-mdpi/big_drawable_background.9.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/big_drawable_background.9.png
rename to tests/FrameworkTest/res/drawable-mdpi/big_drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/black_square.png b/tests/FrameworkTest/res/drawable-mdpi/black_square.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/black_square.png
rename to tests/FrameworkTest/res/drawable-mdpi/black_square.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/black_square_stretchable.9.png b/tests/FrameworkTest/res/drawable-mdpi/black_square_stretchable.9.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/black_square_stretchable.9.png
rename to tests/FrameworkTest/res/drawable-mdpi/black_square_stretchable.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/drawable_background.9.png b/tests/FrameworkTest/res/drawable-mdpi/drawable_background.9.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/drawable_background.9.png
rename to tests/FrameworkTest/res/drawable-mdpi/drawable_background.9.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/sym_now_playing_pause_1.png b/tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_pause_1.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/sym_now_playing_pause_1.png
rename to tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_pause_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/sym_now_playing_skip_backward_1.png b/tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_backward_1.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/sym_now_playing_skip_backward_1.png
rename to tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_backward_1.png
Binary files differ
diff --git a/tests/FrameworkTest/res/drawable/sym_now_playing_skip_forward_1.png b/tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_forward_1.png
similarity index 100%
rename from tests/FrameworkTest/res/drawable/sym_now_playing_skip_forward_1.png
rename to tests/FrameworkTest/res/drawable-mdpi/sym_now_playing_skip_forward_1.png
Binary files differ
diff --git a/tests/appwidgets/AppWidgetHostTest/res/drawable-hdpi/oh_hai_icon.png b/tests/appwidgets/AppWidgetHostTest/res/drawable-hdpi/oh_hai_icon.png
new file mode 100644
index 0000000..2ddde94
--- /dev/null
+++ b/tests/appwidgets/AppWidgetHostTest/res/drawable-hdpi/oh_hai_icon.png
Binary files differ
diff --git a/tests/appwidgets/AppWidgetHostTest/res/drawable/oh_hai_icon.png b/tests/appwidgets/AppWidgetHostTest/res/drawable-mdpi/oh_hai_icon.png
similarity index 100%
rename from tests/appwidgets/AppWidgetHostTest/res/drawable/oh_hai_icon.png
rename to tests/appwidgets/AppWidgetHostTest/res/drawable-mdpi/oh_hai_icon.png
Binary files differ
diff --git a/tools/aapt/AaptAssets.cpp b/tools/aapt/AaptAssets.cpp
index dbcef6d..b00d8b0 100644
--- a/tools/aapt/AaptAssets.cpp
+++ b/tools/aapt/AaptAssets.cpp
@@ -1819,6 +1819,19 @@
     AaptDir::print();
 }
 
+sp<AaptDir> AaptAssets::resDir(const String8& name)
+{
+    const Vector<sp<AaptDir> >& dirs = mDirs;
+    const size_t N = dirs.size();
+    for (size_t i=0; i<N; i++) {
+        const sp<AaptDir>& d = dirs.itemAt(i);
+        if (d->getLeaf() == name) {
+            return d;
+        }
+    }
+    return NULL;
+}
+
 bool
 valid_symbol_name(const String8& symbol)
 {
diff --git a/tools/aapt/AaptAssets.h b/tools/aapt/AaptAssets.h
index 32efa4e..865efd1 100644
--- a/tools/aapt/AaptAssets.h
+++ b/tools/aapt/AaptAssets.h
@@ -508,6 +508,7 @@
     void print() const;
 
     inline const Vector<sp<AaptDir> >& resDirs() { return mDirs; }
+    sp<AaptDir> resDir(const String8& name);
 
     inline sp<AaptAssets> getOverlay() { return mOverlay; }
     inline void setOverlay(sp<AaptAssets>& overlay) { mOverlay = overlay; }
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h
index a671bd7..234e5b2 100644
--- a/tools/aapt/Bundle.h
+++ b/tools/aapt/Bundle.h
@@ -39,7 +39,7 @@
           mRequireLocalization(false), mPseudolocalize(false),
           mValues(false),
           mCompressionMethod(0), mOutputAPKFile(NULL),
-          mAssetSourceDir(NULL),
+          mAssetSourceDir(NULL), mProguardFile(NULL),
           mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
           mRClassDir(NULL), mResourceIntermediatesDir(NULL),
           mMinSdkVersion(NULL), mTargetSdkVersion(NULL), mMaxSdkVersion(NULL),
@@ -88,6 +88,8 @@
      */
     const char* getAssetSourceDir() const { return mAssetSourceDir; }
     void setAssetSourceDir(const char* dir) { mAssetSourceDir = dir; }
+    const char* getProguardFile() const { return mProguardFile; }
+    void setProguardFile(const char* file) { mProguardFile = file; }
     const android::Vector<const char*>& getResourceSourceDirs() const { return mResourceSourceDirs; }
     void addResourceSourceDir(const char* dir) { mResourceSourceDirs.insertAt(dir,0); }
     const char* getAndroidManifestFile() const { return mAndroidManifestFile; }
@@ -161,6 +163,7 @@
     int         mCompressionMethod;
     const char* mOutputAPKFile;
     const char* mAssetSourceDir;
+    const char* mProguardFile;
     const char* mAndroidManifestFile;
     const char* mPublicOutputFile;
     const char* mRClassDir;
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index d8215e7..f2cdf75 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -233,7 +233,7 @@
     return -1;
 }
 
-static String8 getAttribute(const ResXMLTree& tree, const char* ns,
+String8 getAttribute(const ResXMLTree& tree, const char* ns,
                             const char* attr, String8* outError)
 {
     ssize_t idx = tree.indexOfAttribute(ns, attr);
@@ -332,9 +332,11 @@
     TARGET_SDK_VERSION_ATTR = 0x01010270,
     TEST_ONLY_ATTR = 0x01010272,
     DENSITY_ATTR = 0x0101026c,
+    GL_ES_VERSION_ATTR = 0x01010281,
     SMALL_SCREEN_ATTR = 0x01010284,
     NORMAL_SCREEN_ATTR = 0x01010285,
     LARGE_SCREEN_ATTR = 0x01010286,
+    REQUIRED_ATTR = 0x0101028e,
 };
 
 const char *getComponentName(String8 &pkgName, String8 &componentName) {
@@ -520,6 +522,8 @@
             bool actWidgetReceivers = false;
             bool actImeService = false;
             bool actWallpaperService = false;
+            bool specCameraFeature = false;
+            bool hasCameraPermission = false;
             int targetSdk = 0;
             int smallScreen = 1;
             int normalScreen = 1;
@@ -706,6 +710,35 @@
                                 NORMAL_SCREEN_ATTR, NULL, 1);
                         largeScreen = getIntegerAttribute(tree,
                                 LARGE_SCREEN_ATTR, NULL, 1);
+                    } else if (tag == "uses-feature") {
+                        String8 name = getAttribute(tree, NAME_ATTR, &error);
+                        if (error == "") {
+                            int req = getIntegerAttribute(tree,
+                                    REQUIRED_ATTR, NULL, 1);
+                            if (name == "android.hardware.camera") {
+                                specCameraFeature = true;
+                            }
+                            printf("uses-feature%s:'%s'\n",
+                                    req ? "" : "-not-required", name.string());
+                        } else {
+                            int vers = getIntegerAttribute(tree,
+                                    GL_ES_VERSION_ATTR, &error);
+                            if (error == "") {
+                                printf("uses-gl-es:'0x%x'\n", vers);
+                            }
+                        }
+                    } else if (tag == "uses-permission") {
+                        String8 name = getAttribute(tree, NAME_ATTR, &error);
+                        if (error == "") {
+                            if (name == "android.permission.CAMERA") {
+                                hasCameraPermission = true;
+                            }
+                            printf("uses-permission:'%s'\n", name.string());
+                        } else {
+                            fprintf(stderr, "ERROR getting 'android:name' attribute: %s\n",
+                                    error.string());
+                            goto bail;
+                        }
                     }
                 } else if (depth == 3 && withinApplication) {
                     withinActivity = false;
@@ -737,7 +770,10 @@
                             fprintf(stderr, "ERROR getting 'android:name' attribute for uses-library: %s\n", error.string());
                             goto bail;
                         }
-                        printf("uses-library:'%s'\n", libraryName.string());
+                        int req = getIntegerAttribute(tree,
+                                REQUIRED_ATTR, NULL, 1);
+                        printf("uses-library%s:'%s'\n",
+                                req ? "" : "-not-required", libraryName.string());
                     } else if (tag == "receiver") {
                         withinReceiver = true;
                         receiverName = getAttribute(tree, NAME_ATTR, &error);
@@ -803,6 +839,15 @@
                 }
             }
 
+            if (!specCameraFeature && hasCameraPermission) {
+                // For applications that have not explicitly stated their
+                // camera feature requirements, but have requested the camera
+                // permission, we are going to give them compatibility treatment
+                // of requiring the equivalent to original android devices.
+                printf("uses-feature:'android.hardware.camera'\n");
+                printf("uses-feature:'android.hardware.camera.autofocus'\n");
+            }
+            
             if (hasMainActivity) {
                 printf("main\n");
             }
@@ -1113,6 +1158,12 @@
         }
     }
 
+    // Write out the ProGuard file
+    err = writeProguardFile(bundle, assets);
+    if (err < 0) {
+        goto bail;
+    }
+
     // Write the apk
     if (outputAPKFile) {
         err = writeAPK(bundle, assets, String8(outputAPKFile));
diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp
index 882714c..e61010c 100644
--- a/tools/aapt/Main.cpp
+++ b/tools/aapt/Main.cpp
@@ -59,9 +59,9 @@
         "        [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \\\n"
         "        [--min-sdk-version VAL] [--target-sdk-version VAL] \\\n"
         "        [--max-sdk-version VAL] [--app-version VAL] \\\n"
-        "        [--app-version-name TEXT] \\\n"
+        "        [--app-version-name TEXT]\\\n"
         "        [-I base-package [-I base-package ...]] \\\n"
-        "        [-A asset-source-dir] [-P public-definitions-file] \\\n"
+        "        [-A asset-source-dir]  [-G class-list-file] [-P public-definitions-file] \\\n"
         "        [-S resource-sources [-S resource-sources ...]] "
         "        [-F apk-file] [-J R-file-dir] \\\n"
         "        [raw-files-dir [raw-files-dir] ...]\n"
@@ -109,6 +109,7 @@
         "   -z  require localization of resource attributes marked with\n"
         "       localization=\"suggested\"\n"
         "   -A  additional directory in which to find raw asset files\n"
+        "   -G  A file to output proguard options into.\n"
         "   -F  specify the apk file to output\n"
         "   -I  add an existing package to base include set\n"
         "   -J  specify where to output R.java resource constant definitions\n"
@@ -274,6 +275,17 @@
                 convertPath(argv[0]);
                 bundle.setAssetSourceDir(argv[0]);
                 break;
+            case 'G':
+                argc--;
+                argv++;
+                if (!argc) {
+                    fprintf(stderr, "ERROR: No argument supplied for '-G' option\n");
+                    wantUsage = true;
+                    goto bail;
+                }
+                convertPath(argv[0]);
+                bundle.setProguardFile(argv[0]);
+                break;
             case 'I':
                 argc--;
                 argv++;
diff --git a/tools/aapt/Main.h b/tools/aapt/Main.h
index 34ca5e5..3ba4f39 100644
--- a/tools/aapt/Main.h
+++ b/tools/aapt/Main.h
@@ -33,6 +33,8 @@
 extern android::status_t writeResourceSymbols(Bundle* bundle,
     const sp<AaptAssets>& assets, const String8& pkgName, bool includePrivate);
 
+extern android::status_t writeProguardFile(Bundle* bundle, const sp<AaptAssets>& assets);
+
 extern bool isValidResourceType(const String8& type);
 
 ssize_t processAssets(Bundle* bundle, ZipFile* zip, const sp<AaptAssets>& assets);
@@ -41,4 +43,7 @@
 
 int dumpResources(Bundle* bundle);
 
+String8 getAttribute(const ResXMLTree& tree, const char* ns,
+                            const char* attr, String8* outError);
+
 #endif // __MAIN_H
diff --git a/tools/aapt/Resource.cpp b/tools/aapt/Resource.cpp
index e8410cd..4c9853d 100644
--- a/tools/aapt/Resource.cpp
+++ b/tools/aapt/Resource.cpp
@@ -1630,3 +1630,230 @@
 
     return NO_ERROR;
 }
+
+
+
+class ProguardKeepSet
+{
+public:
+    // { rule --> { file locations } }
+    KeyedVector<String8, SortedVector<String8> > rules;
+
+    void add(const String8& rule, const String8& where);
+};
+
+void ProguardKeepSet::add(const String8& rule, const String8& where)
+{
+    ssize_t index = rules.indexOfKey(rule);
+    if (index < 0) {
+        index = rules.add(rule, SortedVector<String8>());
+    }
+    rules.editValueAt(index).add(where);
+}
+
+status_t
+writeProguardForAndroidManifest(ProguardKeepSet* keep, const sp<AaptAssets>& assets)
+{
+    status_t err;
+    ResXMLTree tree;
+    size_t len;
+    ResXMLTree::event_code_t code;
+    int depth = 0;
+    bool inApplication = false;
+    String8 error;
+    sp<AaptGroup> assGroup;
+    sp<AaptFile> assFile;
+    String8 pkg;
+
+    // First, look for a package file to parse.  This is required to
+    // be able to generate the resource information.
+    assGroup = assets->getFiles().valueFor(String8("AndroidManifest.xml"));
+    if (assGroup == NULL) {
+        fprintf(stderr, "ERROR: No AndroidManifest.xml file found.\n");
+        return -1;
+    }
+
+    if (assGroup->getFiles().size() != 1) {
+        fprintf(stderr, "warning: Multiple AndroidManifest.xml files found, using %s\n",
+                assGroup->getFiles().valueAt(0)->getPrintableSource().string());
+    }
+
+    assFile = assGroup->getFiles().valueAt(0);
+
+    err = parseXMLResource(assFile, &tree);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    tree.restart();
+
+    while ((code=tree.next()) != ResXMLTree::END_DOCUMENT && code != ResXMLTree::BAD_DOCUMENT) {
+        if (code == ResXMLTree::END_TAG) {
+            if (/* name == "Application" && */ depth == 2) {
+                inApplication = false;
+            }
+            depth--;
+            continue;
+        }
+        if (code != ResXMLTree::START_TAG) {
+            continue;
+        }
+        depth++;
+        String8 tag(tree.getElementName(&len));
+        // printf("Depth %d tag %s\n", depth, tag.string());
+        if (depth == 1) {
+            if (tag != "manifest") {
+                fprintf(stderr, "ERROR: manifest does not start with <manifest> tag\n");
+                return -1;
+            }
+            pkg = getAttribute(tree, NULL, "package", NULL);
+        } else if (depth == 2 && tag == "application") {
+            inApplication = true;
+        }
+        if (inApplication) {
+            if (tag == "application" || tag == "activity" || tag == "service" || tag == "receiver"
+                    || tag == "provider") {
+                String8 name = getAttribute(tree, "http://schemas.android.com/apk/res/android",
+                        "name", &error);
+                if (error != "") {
+                    fprintf(stderr, "ERROR: %s\n", error.string());
+                    return -1;
+                }
+                // asdf     --> package.asdf
+                // .asdf  .a.b  --> package.asdf package.a.b
+                // asdf.adsf --> asdf.asdf
+                String8 rule("-keep class ");
+                const char* p = name.string();
+                const char* q = strchr(p, '.');
+                if (p == q) {
+                    rule += pkg;
+                    rule += name;
+                } else if (q == NULL) {
+                    rule += pkg;
+                    rule += ".";
+                    rule += name;
+                } else {
+                    rule += name;
+                }
+
+                String8 location = tag;
+                location += " ";
+                location += assFile->getSourceFile();
+                char lineno[20];
+                sprintf(lineno, ":%d", tree.getLineNumber());
+                location += lineno;
+
+                keep->add(rule, location);
+            }
+        }
+    }
+
+    return NO_ERROR;
+}
+
+status_t
+writeProguardForLayout(ProguardKeepSet* keep, const sp<AaptFile>& layoutFile)
+{
+    status_t err;
+    ResXMLTree tree;
+    size_t len;
+    ResXMLTree::event_code_t code;
+
+    err = parseXMLResource(layoutFile, &tree);
+    if (err != NO_ERROR) {
+        return err;
+    }
+
+    tree.restart();
+
+    while ((code=tree.next()) != ResXMLTree::END_DOCUMENT && code != ResXMLTree::BAD_DOCUMENT) {
+        if (code != ResXMLTree::START_TAG) {
+            continue;
+        }
+        String8 tag(tree.getElementName(&len));
+
+        // If there is no '.', we'll assume that it's one of the built in names.
+        if (strchr(tag.string(), '.')) {
+            String8 rule("-keep class ");
+            rule += tag;
+            rule += " { <init>(...); }";
+
+            String8 location("view ");
+            location += layoutFile->getSourceFile();
+            char lineno[20];
+            sprintf(lineno, ":%d", tree.getLineNumber());
+            location += lineno;
+
+            keep->add(rule, location);
+        }
+    }
+
+    return NO_ERROR;
+}
+
+status_t
+writeProguardForLayouts(ProguardKeepSet* keep, const sp<AaptAssets>& assets)
+{
+    status_t err;
+    sp<AaptDir> layout = assets->resDir(String8("layout"));
+
+    if (layout != NULL) {
+        const KeyedVector<String8,sp<AaptGroup> > groups = layout->getFiles();
+        const size_t N = groups.size();
+        for (size_t i=0; i<N; i++) {
+            const sp<AaptGroup>& group = groups.valueAt(i);
+            const DefaultKeyedVector<AaptGroupEntry, sp<AaptFile> >& files = group->getFiles();
+            const size_t M = files.size();
+            for (size_t j=0; j<M; j++) {
+                err = writeProguardForLayout(keep, files.valueAt(j));
+                if (err < 0) {
+                    return err;
+                }
+            }
+        }
+    }
+    return NO_ERROR;
+}
+
+status_t
+writeProguardFile(Bundle* bundle, const sp<AaptAssets>& assets)
+{
+    status_t err = -1;
+
+    if (!bundle->getProguardFile()) {
+        return NO_ERROR;
+    }
+
+    ProguardKeepSet keep;
+
+    err = writeProguardForAndroidManifest(&keep, assets);
+    if (err < 0) {
+        return err;
+    }
+
+    err = writeProguardForLayouts(&keep, assets);
+    if (err < 0) {
+        return err;
+    }
+
+    FILE* fp = fopen(bundle->getProguardFile(), "w+");
+    if (fp == NULL) {
+        fprintf(stderr, "ERROR: Unable to open class file %s: %s\n",
+                bundle->getProguardFile(), strerror(errno));
+        return UNKNOWN_ERROR;
+    }
+
+    const KeyedVector<String8, SortedVector<String8> >& rules = keep.rules;
+    const size_t N = rules.size();
+    for (size_t i=0; i<N; i++) {
+        const SortedVector<String8>& locations = rules.valueAt(i);
+        const size_t M = locations.size();
+        for (size_t j=0; j<M; j++) {
+            fprintf(fp, "# %s\n", locations.itemAt(j).string());
+        }
+        fprintf(fp, "%s\n\n", rules.keyAt(i).string());
+    }
+    fclose(fp);
+
+    return err;
+}
diff --git a/vpn/java/android/net/vpn/VpnManager.java b/vpn/java/android/net/vpn/VpnManager.java
index f71bbea..6df612e 100644
--- a/vpn/java/android/net/vpn/VpnManager.java
+++ b/vpn/java/android/net/vpn/VpnManager.java
@@ -45,18 +45,25 @@
     /** Key to the error code of a connectivity broadcast event. */
     public static final String BROADCAST_ERROR_CODE = "err";
     /** Error code to indicate an error from authentication. */
-    public static final int VPN_ERROR_AUTH = 1;
+    public static final int VPN_ERROR_AUTH = 51;
     /** Error code to indicate the connection attempt failed. */
-    public static final int VPN_ERROR_CONNECTION_FAILED = 2;
+    public static final int VPN_ERROR_CONNECTION_FAILED = 101;
     /** Error code to indicate the server is not known. */
-    public static final int VPN_ERROR_UNKNOWN_SERVER = 3;
+    public static final int VPN_ERROR_UNKNOWN_SERVER = 102;
     /** Error code to indicate an error from challenge response. */
-    public static final int VPN_ERROR_CHALLENGE = 4;
+    public static final int VPN_ERROR_CHALLENGE = 5;
     /** Error code to indicate an error of remote server hanging up. */
-    public static final int VPN_ERROR_REMOTE_HUNG_UP = 5;
+    public static final int VPN_ERROR_REMOTE_HUNG_UP = 7;
+    /** Error code to indicate an error of remote PPP server hanging up. */
+    public static final int VPN_ERROR_REMOTE_PPP_HUNG_UP = 48;
+    /** Error code to indicate a PPP negotiation error. */
+    public static final int VPN_ERROR_PPP_NEGOTIATION_FAILED = 42;
     /** Error code to indicate an error of losing connectivity. */
-    public static final int VPN_ERROR_CONNECTION_LOST = 6;
-    private static final int VPN_ERROR_NO_ERROR = 0;
+    public static final int VPN_ERROR_CONNECTION_LOST = 103;
+    /** Largest error code used by VPN. */
+    public static final int VPN_ERROR_LARGEST = 200;
+    /** Error code to indicate a successful connection. */
+    public static final int VPN_ERROR_NO_ERROR = 0;
 
     public static final String PROFILES_PATH = "/data/misc/vpn/profiles";