merge in klp-release history after reset to klp-dev
diff --git a/core/build_id.mk b/core/build_id.mk
index 90baedc..a3b9db6 100644
--- a/core/build_id.mk
+++ b/core/build_id.mk
@@ -18,4 +18,6 @@
 # (like "CRB01").  It must be a single word, and is
 # capitalized by convention.
 
-export BUILD_ID=KRS74J
+BUILD_ID := KLP
+
+DISPLAY_BUILD_NUMBER := true
diff --git a/core/java.mk b/core/java.mk
index 76f0c6c..f237965 100644
--- a/core/java.mk
+++ b/core/java.mk
@@ -82,18 +82,10 @@
 LOCAL_PROGUARD_ENABLED :=
 endif
 
-# By giving different file name, files can be updated correctly when switching
-# between builds with and without Proguard enabled.
-# Note that ANY intermediate targets between the proguard and
-# the final built_dex should be differently named!
 ifdef LOCAL_PROGUARD_ENABLED
 proguard_jar_leaf := proguard.classes.jar
-built_dex_intermediate_leaf := proguard.$(built_dex_intermediate_leaf)
-built_dex_leaf := proguard.classes.dex
 else
 proguard_jar_leaf := noproguard.classes.jar
-built_dex_intermediate_leaf := noproguard.$(built_dex_intermediate_leaf)
-built_dex_leaf := noproguard.classes.dex
 endif
 
 full_classes_compiled_jar := $(intermediates.COMMON)/$(full_classes_compiled_jar_leaf)
@@ -113,7 +105,7 @@
 built_dex :=
 else
 full_classes_jar := $(intermediates.COMMON)/classes.jar
-built_dex := $(intermediates.COMMON)/$(built_dex_leaf)
+built_dex := $(intermediates.COMMON)/classes.dex
 endif
 
 LOCAL_INTERMEDIATE_TARGETS += \
@@ -304,14 +296,6 @@
 
 ifdef full_classes_jar
 
-# If LOCAL_BUILT_MODULE_STEM wasn't overridden by our caller,
-# full_classes_jar will be the same module as LOCAL_BUILT_MODULE.
-# Otherwise, the caller will define it as a prerequisite of
-# LOCAL_BUILT_MODULE, so it will inherit the necessary PRIVATE_*
-# variable definitions.
-full_classes_jar := $(intermediates.COMMON)/classes.jar
-built_dex := $(intermediates.COMMON)/$(built_dex_leaf)
-
 # Droiddoc isn't currently able to generate stubs for modules, so we're just
 # allowing it to use the classes.jar as the "stubs" that would be use to link
 # against, for the cases where someone needs the jar to link against.
diff --git a/core/pathmap.mk b/core/pathmap.mk
index 0292a30..5dfc543 100644
--- a/core/pathmap.mk
+++ b/core/pathmap.mk
@@ -109,6 +109,7 @@
         v7/gridlayout \
         v7/appcompat \
         v7/mediarouter \
+        v8/renderscript \
         v13
 
 #
diff --git a/target/product/base.mk b/target/product/base.mk
index 7ecc737..988902b 100644
--- a/target/product/base.mk
+++ b/target/product/base.mk
@@ -42,7 +42,6 @@
     libbundlewrapper \
     libcamera_client \
     libcameraservice \
-    libchromium_net \
     libdl \
     libeffectproxy \
     libeffects \
diff --git a/tools/droiddoc/templates-sdk/assets/js/docs.js b/tools/droiddoc/templates-sdk/assets/js/docs.js
index 87cbcd3..1659cc6 100644
--- a/tools/droiddoc/templates-sdk/assets/js/docs.js
+++ b/tools/droiddoc/templates-sdk/assets/js/docs.js
@@ -587,12 +587,22 @@
   });
 }
 
+/** Highlight the current page in sidenav, expanding children as appropriate */
 function highlightSidenav() {
-  // select current page in sidenav and header, and set up prev/next links if they exist
-  var $selNavLink = $('#nav').find('a[href="' + mPagePath + '"]');
+  // if something is already highlighted, undo it. This is for dynamic navigation (Samples index)
+  if ($("ul#nav li.selected").length) {
+    unHighlightSidenav();
+  }
+  // look for URL in sidenav, including the hash
+  var $selNavLink = $('#nav').find('a[href="' + mPagePath + location.hash + '"]');
+
+  // If the selNavLink is still empty, look for it without the hash
+  if ($selNavLink.length == 0) {
+    $selNavLink = $('#nav').find('a[href="' + mPagePath + '"]');
+  }
+
   var $selListItem;
   if ($selNavLink.length) {
-
     // Find this page's <li> in sidenav and set selected
     $selListItem = $selNavLink.closest('li');
     $selListItem.addClass('selected');
@@ -605,6 +615,10 @@
   }
 }
 
+function unHighlightSidenav() {
+  $("ul#nav li.selected").removeClass("selected");
+  $('ul#nav li.nav-section.expanded').removeClass('expanded').children('ul').hide();
+}
 
 function toggleFullscreen(enable) {
   var delay = 20;
@@ -2142,6 +2156,12 @@
 
 // when an event on the browser history occurs (back, forward, load) requery hash and do search
 $(window).hashchange( function(){
+  // Handle hash changes in the samples browser
+  if ($("body").hasClass("samples") && location.href.indexOf("/samples/index.html") != -1) {
+    showSamples();
+    highlightSidenav();
+    resizeNav();
+  }
   // Exit if the hash isn't a search query or there's an error in the query
   if ((location.hash.indexOf("q=") == -1) || (query == "undefined")) {
     // If the results pane is open, close it.
@@ -2676,10 +2696,15 @@
 /****** NEW version of script to build google and sample navs dynamically ******/
 // TODO: update Google reference docs to tolerate this new implementation
 
+var NODE_NAME = 0;
+var NODE_HREF = 1;
+var NODE_GROUP = 2;
+var NODE_TAGS = 3;
+var NODE_CHILDREN = 4;
+
 function init_google_navtree2(navtree_id, data)
 {
   var $containerUl = $("#"+navtree_id);
-  var linkText;
   for (var i in data) {
     var node_data = data[i];
     $containerUl.append(new_google_node2(node_data));
@@ -2690,25 +2715,25 @@
 
 function new_google_node2(node_data)
 {
-  var linkText = node_data[0];
+  var linkText = node_data[NODE_NAME];
   if(linkText.match("^"+"com.google.android")=="com.google.android"){
     linkText = linkText.substr(19, linkText.length);
   }
   var $li = $('<li>');
   var $a;
-  if (node_data[1] != null) {
-    $a = $('<a href="' + toRoot + node_data[1] + '">' + linkText + '</a>');
+  if (node_data[NODE_HREF] != null) {
+    $a = $('<a href="' + toRoot + node_data[NODE_HREF] + '">' + linkText + '</a>');
   } else {
     $a = $('<a href="#" onclick="return false;">' + linkText + '/</a>');
   }
   var $childUl = $('<ul>');
-  if (node_data[2] != null) {
+  if (node_data[NODE_CHILDREN] != null) {
     $li.addClass("nav-section");
     $a = $('<div class="nav-section-header">').append($a);
-    if (node_data[1] == null) $a.addClass('empty');
+    if (node_data[NODE_HREF] == null) $a.addClass('empty');
 
-    for (var i in node_data[2]) {
-      var child_node_data = node_data[2][i];
+    for (var i in node_data[NODE_CHILDREN]) {
+      var child_node_data = node_data[NODE_CHILDREN][i];
       $childUl.append(new_google_node2(child_node_data));
     }
     $li.append($childUl);