You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/04/10 22:22:40 UTC

[35/63] [abbrv] git commit: new bower build

new bower build


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/f3b55942
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/f3b55942
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/f3b55942

Branch: refs/pull/99/merge
Commit: f3b559423a1f574ba57bc42265b4e98c81d02430
Parents: 40d8179
Author: Shawn Feldman <sh...@gmail.com>
Authored: Wed Apr 9 10:15:16 2014 -0600
Committer: Shawn Feldman <sh...@gmail.com>
Committed: Wed Apr 9 10:15:16 2014 -0600

----------------------------------------------------------------------
 portal/dist/rel-usergrid-portal.2.0.3.zip       |  Bin 16313787 -> 0 bytes
 portal/dist/usergrid-portal.2.0.3.zip           |  Bin 0 -> 16277601 bytes
 .../angular-intro.js/Gruntfile.js               |   40 +
 .../angular-intro.js/angular-intro.js           |   60 -
 .../angular-intro.js/bower.json                 |    4 +-
 .../angular-intro.js/build/angular-intro.min.js |    3 +-
 .../angular-intro.js/example/app.js             |   86 +-
 .../angular-intro.js/lib/app.js                 |   49 -
 .../angular-intro.js/lib/intro.min.js           |   20 -
 .../angular-intro.js/lib/introjs.css            |  216 ---
 .../angular-intro.js/package.json               |   36 +
 .../angular-intro.js/src/angular-intro.js       |   60 +
 .../bower_components/angular/angular-csp.css    |    5 -
 .../bower_components/angular/angular.js         |  276 ++-
 .../bower_components/angular/angular.min.js     |  354 ++--
 .../angular/angular.min.js.gzip                 |  Bin 38778 -> 38793 bytes
 .../bower_components/angular/angular.min.js.map |    4 +-
 .../bower_components/angular/bower.json         |    2 +-
 .../apigee-sdk/samples/books/index.html         |  139 ++
 .../apigee-sdk/samples/collections/index.html   |   91 +
 .../apigee-sdk/samples/entities/index.html      |   86 +
 .../apigee-sdk/samples/geolocation/index.html   |   75 +
 .../apigee-sdk/samples/messagee/index.html      |  176 ++
 .../apigee-sdk/samples/monitoring/index.html    |  113 ++
 .../samples/push/android/assets/www/index.html  |   51 +
 .../apigee-sdk/samples/push/ios/www/index.html  |   48 +
 .../apigee-sdk/samples/readmeSample/index.html  |   64 +
 .../samples/usersAndGroups/index.html           |  159 ++
 .../bower_components/apigee.max.ui/bower.json   |   19 -
 .../apigee.max.ui/dist/css/max.min.css          |    1 -
 .../apigee.max.ui/dist/img/no-data1.png         |  Bin 45300 -> 0 bytes
 .../apigee.max.ui/dist/img/phone-small.gif      |  Bin 1300 -> 0 bytes
 .../apigee.max.ui/dist/img/tablet-small.gif     |  Bin 1390 -> 0 bytes
 .../apigee.max.ui/dist/js/max-dev.min.js        | 1781 ------------------
 .../apigee.max.ui/dist/js/max.min.js            |    4 -
 .../intro.js/example/RTL/index.html             |   81 +
 .../assets/css/bootstrap-responsive.min.css     |    9 +
 .../example/assets/css/bootstrap.min.css        |    9 +
 .../intro.js/example/assets/css/demo.css        |   36 +
 .../assets/img/glyphicons-halflings-white.png   |  Bin 0 -> 8777 bytes
 .../example/assets/img/glyphicons-halflings.png |  Bin 0 -> 12799 bytes
 .../intro.js/example/custom-class/index.html    |   84 +
 .../intro.js/example/hello-world/index.html     |   72 +
 .../example/hello-world/withoutBullets.html     |   72 +
 .../example/hello-world/withoutButtons.html     |   72 +
 .../intro.js/example/html-tooltip/index.html    |  108 ++
 .../intro.js/example/index.html                 |   35 +
 .../intro.js/example/multi-page/index.html      |   73 +
 .../intro.js/example/multi-page/second.html     |   75 +
 .../intro.js/example/programmatic/index.html    |  107 ++
 .../bower_components/jquery/src/var/trim.js     |    3 -
 .../bower_components/sizzle/test/index.html     |  242 +++
 portal/dist/usergrid-portal/config.js           |   29 +-
 portal/dist/usergrid-portal/index-debug.html    |   31 +-
 portal/dist/usergrid-portal/index-template.html |   31 +-
 portal/dist/usergrid-portal/index.html          |   31 +-
 .../js/libs/usergrid-libs.min.js                |    4 +-
 .../js/libs/usergrid-libs.min.js.orig           |   26 -
 .../dist/usergrid-portal/js/usergrid-dev.min.js |   14 +-
 portal/dist/usergrid-portal/js/usergrid.min.js  |    8 +-
 .../js/usergrid-coverage.min.js.BACKUP.31213.js |    6 -
 .../js/usergrid-coverage.min.js.BASE.31213.js   |    6 -
 .../js/usergrid-coverage.min.js.LOCAL.31213.js  |    6 -
 .../js/usergrid-coverage.min.js.REMOTE.31213.js |    0
 64 files changed, 2731 insertions(+), 2561 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/rel-usergrid-portal.2.0.3.zip
----------------------------------------------------------------------
diff --git a/portal/dist/rel-usergrid-portal.2.0.3.zip b/portal/dist/rel-usergrid-portal.2.0.3.zip
deleted file mode 100644
index 1c6e418..0000000
Binary files a/portal/dist/rel-usergrid-portal.2.0.3.zip and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal.2.0.3.zip
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal.2.0.3.zip b/portal/dist/usergrid-portal.2.0.3.zip
new file mode 100644
index 0000000..38d6f3d
Binary files /dev/null and b/portal/dist/usergrid-portal.2.0.3.zip differ

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js
new file mode 100644
index 0000000..229b043
--- /dev/null
+++ b/portal/dist/usergrid-portal/bower_components/angular-intro.js/Gruntfile.js
@@ -0,0 +1,40 @@
+module.exports = function(grunt) {
+
+    // Project configuration.
+    grunt.initConfig({
+        pkg: grunt.file.readJSON('package.json'),
+        uglify: {
+            options: {
+                banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
+            },
+            build: {
+                src: 'src/angular-intro.js',
+                dest: 'build/angular-intro.min.js'
+            }
+        },
+        jshint: {
+            lib: {
+                options: {},
+                src: ['lib/*.js']
+            },
+        },
+        watch: {
+            scripts: {
+                files: 'lib/*.js',
+                tasks: ['jshint', 'uglify'],
+                options: {
+                    interrupt: true
+                },
+            },
+            gruntfile: {
+                files: 'Gruntfile.js'
+            }
+        },
+    });
+
+    // Load all grunt tasks
+    require('load-grunt-tasks')(grunt);
+
+    // Default task(s).
+    grunt.registerTask('default', ['jshint', 'uglify']);
+};

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/angular-intro.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/angular-intro.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/angular-intro.js
deleted file mode 100644
index 258f3f1..0000000
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/angular-intro.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var ngIntroDirective = angular.module('angular-intro',[]);
-
-// TODO: Use isolate scope, but requires angular 1.2: http://plnkr.co/edit/a2c14O?p=preview
-// See: http://stackoverflow.com/questions/18796023/in-a-directive-handle-calls-to-a-user-defined-method-name
-
-ngIntroDirective.directive('ngIntroOptions', ['$timeout', function ($timeout) {
-
-   return {
-       restrict: 'A',
-
-       link: function(scope, element, attrs){
-
-           scope[attrs.ngIntroMethod] = function(step) {
-                           
-               if(typeof(step)=="string"){
-                   var intro = introJs(step);
-               }
-               else{
-                   var intro = introJs();
-               }
-
-               intro.setOptions(scope.$eval(attrs.ngIntroOptions));
-
-               if(attrs.ngIntroOncomplete){
-                   intro.oncomplete(scope.$eval(attrs.ngIntroOncomplete));
-               }
-
-               if(attrs.ngIntroOnexit){
-                   intro.onexit(scope.$eval(attrs.ngIntroOnexit));
-               }
-
-               if(attrs.ngIntroOnchange){
-                   intro.onchange(scope.$eval(attrs.ngIntroOnchange));
-               }
-
-               if(attrs.ngIntroOnbeforechange){
-                   intro.onbeforechange(scope.$eval(attrs.ngIntroOnbeforechange));
-               }
-
-               if(attrs.ngIntroOnafterchange){
-                   intro.onafterchange(scope.$eval(attrs.ngIntroOnafterchange));
-               }
-
-               if(typeof(step)=="number"){
-                   intro.goToStep(step).start();
-               }
-               else{
-                   intro.start();
-               }
-
-           };
-
-
-           if(attrs.ngIntroAutostart == "true"){
-               //Only runs when DOM is ready
-               $timeout(function() {scope[attrs.ngIntroMethod]();}, 0);
-           }
-       }
-   }
-}]);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/bower.json
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/bower.json b/portal/dist/usergrid-portal/bower_components/angular-intro.js/bower.json
index b6e1f9f..c997963 100644
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/bower.json
+++ b/portal/dist/usergrid-portal/bower_components/angular-intro.js/bower.json
@@ -1,7 +1,7 @@
 {
   "name": "mendhak/angular-intro.js",
-  "version": "1.0.2",
-  "main": "angular-intro.js",
+  "version": "1.0.3",
+  "main": "src/angular-intro.js",
   "description": "Angular directive to wrap intro.js",
   "license": "MIT",
   "ignore": [

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
index 01eae0e..136115b 100644
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
+++ b/portal/dist/usergrid-portal/bower_components/angular-intro.js/build/angular-intro.min.js
@@ -1 +1,2 @@
-var ngIntroDirective=angular.module("angular-intro",[]);ngIntroDirective.directive("ngIntroOptions",["$timeout",function(e){return{restrict:"A",link:function(t,n,r){t[r.ngIntroMethod]=function(e){if(typeof e=="string"){var n=introJs(e)}else{var n=introJs()}n.setOptions(t.$eval(r.ngIntroOptions));if(r.ngIntroOncomplete){n.oncomplete(t[r.ngIntroOncomplete])}if(r.ngIntroOnexit){n.onexit(t[r.ngIntroOnexit])}if(r.ngIntroOnchange){n.onchange(t[r.ngIntroOnchange])}if(r.ngIntroOnbeforechange){n.onbeforechange(t[r.ngIntroOnbeforechange])}if(r.ngIntroOnafterchange){n.onafterchange(t[r.ngIntroOnafterchange])}if(typeof e=="number"){n.goToStep(e).start()}else{n.start()}};if(r.ngIntroAutostart=="true"){e(function(){t[r.ngIntroMethod]()},0)}}}}])
+/*! angular-intro.js 2014-04-01 */
+var ngIntroDirective=angular.module("angular-intro",[]);ngIntroDirective.directive("ngIntroOptions",["$timeout","$parse",function(a,b){return{restrict:"A",link:function(c,d,e){c[e.ngIntroMethod]=function(a){var d;d="string"==typeof a?introJs(a):introJs(),d.setOptions(c.$eval(e.ngIntroOptions)),e.ngIntroOncomplete&&d.oncomplete(b(e.ngIntroOncomplete)(c)),e.ngIntroOnexit&&d.onexit(b(e.ngIntroOnexit)(c)),e.ngIntroOnchange&&d.onchange(b(e.ngIntroOnchange)(c)),e.ngIntroOnbeforechange&&d.onbeforechange(b(e.ngIntroOnbeforechange)(c)),e.ngIntroOnafterchange&&d.onafterchange(b(e.ngIntroOnafterchange)(c)),"number"==typeof a?d.goToStep(a).start():d.start()},"true"==e.ngIntroAutostart&&a(function(){b(e.ngIntroMethod)(c)()})}}}]);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/example/app.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/example/app.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/example/app.js
index a93d878..a152397 100644
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/example/app.js
+++ b/portal/dist/usergrid-portal/bower_components/angular-intro.js/example/app.js
@@ -2,50 +2,60 @@ var app = angular.module('myApp', ['angular-intro']);
 
 app.controller('MyController', function ($scope) {
 
-    $scope.CompletedEvent = function () { console.log("Completed Event called"); };
+    $scope.CompletedEvent = function () {
+        console.log("Completed Event called");
+    };
 
-    $scope.ExitEvent = function () { console.log("Exit Event called");};
+    $scope.ExitEvent = function () {
+        console.log("Exit Event called");
+    };
 
-    $scope.ChangeEvent = function () { console.log("Change Event called"); };
+    $scope.ChangeEvent = function () {
+        console.log("Change Event called");
+    };
 
-    $scope.BeforeChangeEvent = function () { console.log("Before Change Event called"); };
+    $scope.BeforeChangeEvent = function () {
+        console.log("Before Change Event called");
+    };
 
-    $scope.AfterChangeEvent = function () { console.log("After Change Event called"); };
+    $scope.AfterChangeEvent = function () {
+        console.log("After Change Event called");
+    };
 
     $scope.IntroOptions = {
-                   steps:[
-                       {
-                           element: document.querySelector('#step1'),
-                           intro: "This is the first tooltip."
-                       },
-                       {
-                           element: document.querySelectorAll('#step2')[0],
-                           intro: "<strong>You</strong> can also <em>include</em> HTML",
-                           position: 'right'
-                       },
-                       {
-                           element: '#step3',
-                           intro: 'More features, more fun.',
-                           position: 'left'
-                       },
-                       {
-                           element: '#step4',
-                           intro: "Another step.",
-                           position: 'bottom'
-                       },
-                       {
-                           element: '#step5',
-                           intro: 'Get it, use it.'
-                       }
-                   ],
-                    showStepNumbers: false,
-                    exitOnOverlayClick: true,
-                    exitOnEsc:true,
-                    nextLabel: '<strong>NEXT!</strong>',
-                    prevLabel: '<span style="color:green">Previous</span>',
-                    skipLabel: 'Exit',
-                    doneLabel: 'Thanks'
-               };
+        steps:[
+        {
+            element: document.querySelector('#step1'),
+            intro: "This is the first tooltip."
+        },
+        {
+            element: document.querySelectorAll('#step2')[0],
+            intro: "<strong>You</strong> can also <em>include</em> HTML",
+            position: 'right'
+        },
+        {
+            element: '#step3',
+            intro: 'More features, more fun.',
+            position: 'left'
+        },
+        {
+            element: '#step4',
+            intro: "Another step.",
+            position: 'bottom'
+        },
+        {
+            element: '#step5',
+            intro: 'Get it, use it.'
+        }
+        ],
+        showStepNumbers: false,
+        exitOnOverlayClick: true,
+        exitOnEsc:true,
+        nextLabel: '<strong>NEXT!</strong>',
+        prevLabel: '<span style="color:green">Previous</span>',
+        skipLabel: 'Exit',
+        doneLabel: 'Thanks'
+    };
 
 });
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/app.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/app.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/app.js
deleted file mode 100644
index 60262bd..0000000
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/app.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var app = angular.module('myApp', ['angular-intro']);
-
-app.controller('MyController', function ($scope) {
-
-    $scope.CompletedEvent = function () { console.log("Completed Event called"); };
-
-    $scope.ExitEvent = function () { console.log("Exit Event called");};
-
-    $scope.ChangeEvent = function () { console.log("Change Event called"); };
-
-    $scope.BeforeChangeEvent = function () { console.log("Before Change Event called"); };
-
-    $scope.IntroOptions = {
-                   steps:[
-                       {
-                           element: document.querySelector('#step1'),
-                           intro: "This is the first tooltip."
-                       },
-                       {
-                           element: document.querySelectorAll('#step2')[0],
-                           intro: "<strong>You</strong> can also <em>include</em> HTML",
-                           position: 'right'
-                       },
-                       {
-                           element: '#step3',
-                           intro: 'More features, more fun.',
-                           position: 'left'
-                       },
-                       {
-                           element: '#step4',
-                           intro: "Another step.",
-                           position: 'bottom'
-                       },
-                       {
-                           element: '#step5',
-                           intro: 'Get it, use it.'
-                       }
-                   ],
-                    showStepNumbers: false,
-                    exitOnOverlayClick: true,
-                    exitOnEsc:true,
-                    nextLabel: '<strong>NEXT!</strong>',
-                    prevLabel: '<span style="color:green">Previous</span>',
-                    skipLabel: 'Exit',
-                    doneLabel: 'Thanks'
-               };
-
-});
-

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/intro.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/intro.min.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/intro.min.js
deleted file mode 100644
index 196ec89..0000000
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/intro.min.js
+++ /dev/null
@@ -1,20 +0,0 @@
-(function(h,f){"object"===typeof exports?f(exports):"function"===typeof define&&define.amd?define(["exports"],f):f(h)})(this,function(h){function f(a){this._targetElement=a;this._options={nextLabel:"Next &rarr;",prevLabel:"&larr; Back",skipLabel:"Skip",doneLabel:"Done",tooltipPosition:"bottom",tooltipClass:"",exitOnEsc:!0,exitOnOverlayClick:!0,showStepNumbers:!0}}function n(){"undefined"!==typeof this._introBeforeChangeCallback&&this._introBeforeChangeCallback.call(this,this._targetElement.element);
-"undefined"===typeof this._currentStep?this._currentStep=0:++this._currentStep;this._introItems.length<=this._currentStep?("function"===typeof this._introCompleteCallback&&this._introCompleteCallback.call(this),m.call(this,this._targetElement)):s.call(this,this._introItems[this._currentStep])}function t(){if(0===this._currentStep)return!1;"undefined"!==typeof this._introBeforeChangeCallback&&this._introBeforeChangeCallback.call(this,this._targetElement.element);s.call(this,this._introItems[--this._currentStep])}
-function m(a){var b=a.querySelector(".introjs-overlay");b.style.opacity=0;setTimeout(function(){b.parentNode&&b.parentNode.removeChild(b)},500);(a=a.querySelector(".introjs-helperLayer"))&&a.parentNode.removeChild(a);if(a=document.querySelector(".introjs-showElement"))a.className=a.className.replace(/introjs-[a-zA-Z]+/g,"").replace(/^\s+|\s+$/g,"");if((a=document.querySelectorAll(".introjs-fixParent"))&&0<a.length)for(var c=a.length-1;0<=c;c--)a[c].className=a[c].className.replace(/introjs-fixParent/g,
-"").replace(/^\s+|\s+$/g,"");window.removeEventListener?window.removeEventListener("keydown",this._onKeyDown,!0):document.detachEvent&&document.detachEvent("onkeydown",this._onKeyDown);this._currentStep=void 0}function u(a,b,c){b.style.top=null;b.style.right=null;b.style.bottom=null;b.style.left=null;if(this._introItems[this._currentStep]){var d="",d=this._introItems[this._currentStep],d="string"===typeof d.tooltipClass?d.tooltipClass:this._options.tooltipClass;b.className=("introjs-tooltip "+d).replace(/^\s+|\s+$/g,
-"");switch(this._introItems[this._currentStep].position){case "top":b.style.left="15px";b.style.top="-"+(l(b).height+10)+"px";c.className="introjs-arrow bottom";break;case "right":b.style.left=l(a).width+20+"px";c.className="introjs-arrow left";break;case "left":b.style.top="15px";b.style.right=l(a).width+20+"px";c.className="introjs-arrow right";break;default:b.style.bottom="-"+(l(b).height+10)+"px",c.className="introjs-arrow top"}}}function p(a){if(a&&this._introItems[this._currentStep]){var b=
-l(this._introItems[this._currentStep].element);a.setAttribute("style","width: "+(b.width+10)+"px; height:"+(b.height+10)+"px; top:"+(b.top-5)+"px;left: "+(b.left-5)+"px;")}}function s(a){var b;"undefined"!==typeof this._introChangeCallback&&this._introChangeCallback.call(this,a.element);var c=this,d=document.querySelector(".introjs-helperLayer");l(a.element);if(null!=d){var g=d.querySelector(".introjs-helperNumberLayer"),f=d.querySelector(".introjs-tooltiptext"),w=d.querySelector(".introjs-arrow"),
-q=d.querySelector(".introjs-tooltip"),e=d.querySelector(".introjs-skipbutton");b=d.querySelector(".introjs-prevbutton");var j=d.querySelector(".introjs-nextbutton");q.style.opacity=0;p.call(c,d);if((d=document.querySelectorAll(".introjs-fixParent"))&&0<d.length)for(var k=d.length-1;0<=k;k--)d[k].className=d[k].className.replace(/introjs-fixParent/g,"").replace(/^\s+|\s+$/g,"");d=document.querySelector(".introjs-showElement");d.className=d.className.replace(/introjs-[a-zA-Z]+/g,"").replace(/^\s+|\s+$/g,
-"");c._lastShowElementTimer&&clearTimeout(c._lastShowElementTimer);c._lastShowElementTimer=setTimeout(function(){null!=g&&(g.innerHTML=a.step);f.innerHTML=a.intro;u.call(c,a.element,q,w);q.style.opacity=1},350)}else{e=document.createElement("div");d=document.createElement("div");k=document.createElement("div");e.className="introjs-helperLayer";p.call(c,e);this._targetElement.appendChild(e);d.className="introjs-arrow";k.innerHTML='<div class="introjs-tooltiptext">'+a.intro+'</div><div class="introjs-tooltipbuttons"></div>';
-this._options.showStepNumbers&&(b=document.createElement("span"),b.className="introjs-helperNumberLayer",b.innerHTML=a.step,e.appendChild(b));k.appendChild(d);e.appendChild(k);j=document.createElement("a");j.onclick=function(){c._introItems.length-1!=c._currentStep&&n.call(c)};j.href="javascript:void(0);";j.innerHTML=this._options.nextLabel;b=document.createElement("a");b.onclick=function(){0!=c._currentStep&&t.call(c)};b.href="javascript:void(0);";b.innerHTML=this._options.prevLabel;e=document.createElement("a");
-e.className="introjs-button introjs-skipbutton";e.href="javascript:void(0);";e.innerHTML=this._options.skipLabel;e.onclick=function(){c._introItems.length-1==c._currentStep&&"function"===typeof c._introCompleteCallback&&c._introCompleteCallback.call(c);c._introItems.length-1!=c._currentStep&&"function"===typeof c._introExitCallback&&c._introExitCallback.call(c);m.call(c,c._targetElement)};var h=k.querySelector(".introjs-tooltipbuttons");h.appendChild(e);1<this._introItems.length&&(h.appendChild(b),
-h.appendChild(j));u.call(c,a.element,k,d)}0==this._currentStep?(b.className="introjs-button introjs-prevbutton introjs-disabled",j.className="introjs-button introjs-nextbutton",e.innerHTML=this._options.skipLabel):this._introItems.length-1==this._currentStep?(e.innerHTML=this._options.doneLabel,b.className="introjs-button introjs-prevbutton",j.className="introjs-button introjs-nextbutton introjs-disabled"):(b.className="introjs-button introjs-prevbutton",j.className="introjs-button introjs-nextbutton",
-e.innerHTML=this._options.skipLabel);j.focus();a.element.className+=" introjs-showElement";e=v(a.element,"position");"absolute"!==e&&"relative"!==e&&(a.element.className+=" introjs-relativePosition");for(e=a.element.parentNode;null!=e&&"body"!==e.tagName.toLowerCase();)b=v(e,"z-index"),/[0-9]+/.test(b)&&(e.className+=" introjs-fixParent"),e=e.parentNode;e=a.element.getBoundingClientRect();0<=e.top&&0<=e.left&&e.bottom+80<=window.innerHeight&&e.right<=window.innerWidth||(b=a.element.getBoundingClientRect(),
-e=b.bottom-(b.bottom-b.top),j=b.bottom,b=void 0!=window.innerWidth?window.innerHeight:document.documentElement.clientHeight,b=j-b,0>e?window.scrollBy(0,e-30):window.scrollBy(0,b+100))}function v(a,b){var c="";a.currentStyle?c=a.currentStyle[b]:document.defaultView&&document.defaultView.getComputedStyle&&(c=document.defaultView.getComputedStyle(a,null).getPropertyValue(b));return c&&c.toLowerCase?c.toLowerCase():c}function x(a){var b=document.createElement("div"),c="",d=this;b.className="introjs-overlay";
-if("body"===a.tagName.toLowerCase())c+="top: 0;bottom: 0; left: 0;right: 0;position: fixed;",b.setAttribute("style",c);else{var g=l(a);g&&(c+="width: "+g.width+"px; height:"+g.height+"px; top:"+g.top+"px;left: "+g.left+"px;",b.setAttribute("style",c))}a.appendChild(b);b.onclick=function(){!0==d._options.exitOnOverlayClick&&m.call(d,a);void 0!=d._introExitCallback&&d._introExitCallback.call(d)};setTimeout(function(){c+="opacity: .6;";b.setAttribute("style",c)},10);return!0}function l(a){var b={};b.width=
-a.offsetWidth;b.height=a.offsetHeight;for(var c=0,d=0;a&&!isNaN(a.offsetLeft)&&!isNaN(a.offsetTop);)c+=a.offsetLeft,d+=a.offsetTop,a=a.offsetParent;b.top=d;b.left=c;return b}var r=function(a){if("object"===typeof a)return new f(a);if("string"===typeof a){if(a=document.querySelector(a))return new f(a);throw Error("There is no element with given selector.");}return new f(document.body)};r.version="0.5.0";r.fn=f.prototype={clone:function(){return new f(this)},setOption:function(a,b){this._options[a]=
-b;return this},setOptions:function(a){var b=this._options,c={},d;for(d in b)c[d]=b[d];for(d in a)c[d]=a[d];this._options=c;return this},start:function(){a:{var a=this._targetElement,b=[],c=this;if(this._options.steps)for(var d=[],g=0,d=this._options.steps.length;g<d;g++){var f=this._options.steps[g];f.step=g+1;"string"===typeof f.element&&(f.element=document.querySelector(f.element));b.push(f)}else{d=a.querySelectorAll("*[data-intro]");if(1>d.length)break a;g=0;for(f=d.length;g<f;g++){var h=d[g];
-b.push({element:h,intro:h.getAttribute("data-intro"),step:parseInt(h.getAttribute("data-step"),10),tooltipClass:h.getAttribute("data-tooltipClass"),position:h.getAttribute("data-position")||this._options.tooltipPosition})}}b.sort(function(a,c){return a.step-c.step});c._introItems=b;x.call(c,a)&&(n.call(c),a.querySelector(".introjs-skipbutton"),a.querySelector(".introjs-nextbutton"),c._onKeyDown=function(b){if(27===b.keyCode&&!0==c._options.exitOnEsc)m.call(c,a),void 0!=c._introExitCallback&&c._introExitCallback.call(c);
-else if(37===b.keyCode)t.call(c);else if(39===b.keyCode||13===b.keyCode)n.call(c),b.preventDefault?b.preventDefault():b.returnValue=!1},c._onResize=function(){p.call(c,document.querySelector(".introjs-helperLayer"))},window.addEventListener?(window.addEventListener("keydown",c._onKeyDown,!0),window.addEventListener("resize",c._onResize,!0)):document.attachEvent&&(document.attachEvent("onkeydown",c._onKeyDown),document.attachEvent("onresize",c._onResize)))}return this},goToStep:function(a){this._currentStep=
-a-2;"undefined"!==typeof this._introItems&&n.call(this);return this},exit:function(){m.call(this,this._targetElement)},refresh:function(){p.call(this,document.querySelector(".introjs-helperLayer"));return this},onbeforechange:function(a){if("function"===typeof a)this._introBeforeChangeCallback=a;else throw Error("Provided callback for onbeforechange was not a function");return this},onchange:function(a){if("function"===typeof a)this._introChangeCallback=a;else throw Error("Provided callback for onchange was not a function.");
-return this},oncomplete:function(a){if("function"===typeof a)this._introCompleteCallback=a;else throw Error("Provided callback for oncomplete was not a function.");return this},onexit:function(a){if("function"===typeof a)this._introExitCallback=a;else throw Error("Provided callback for onexit was not a function.");return this}};return h.introJs=r});

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/introjs.css
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/introjs.css b/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/introjs.css
deleted file mode 100644
index ba3e641..0000000
--- a/portal/dist/usergrid-portal/bower_components/angular-intro.js/lib/introjs.css
+++ /dev/null
@@ -1,216 +0,0 @@
-.introjs-overlay {
-  position: absolute;
-  z-index: 999999;
-  background-color: #000;
-  opacity: 0;
-  background: -moz-radial-gradient(center,ellipse cover,rgba(0,0,0,0.1) 0,rgba(0,0,0,0.5) 100%);
-  background: -webkit-gradient(radial,center center,0px,center center,100%,color-stop(0%,rgba(0,0,0,0.1)),color-stop(100%,rgba(0,0,0,0.5)));
-  background: -webkit-radial-gradient(center,ellipse cover,rgba(0,0,0,0.1) 0,rgba(0,0,0,0.5) 100%);
-  background: -o-radial-gradient(center,ellipse cover,rgba(0,0,0,0.1) 0,rgba(0,0,0,0.5) 100%);
-  background: -ms-radial-gradient(center,ellipse cover,rgba(0,0,0,0.1) 0,rgba(0,0,0,0.5) 100%);
-  background: radial-gradient(center,ellipse cover,rgba(0,0,0,0.1) 0,rgba(0,0,0,0.5) 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#66000000',endColorstr='#e6000000',GradientType=1);
-  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
-  filter: alpha(opacity=50);
-  -webkit-transition: all 0.3s ease-out;
-     -moz-transition: all 0.3s ease-out;
-      -ms-transition: all 0.3s ease-out;
-       -o-transition: all 0.3s ease-out;
-          transition: all 0.3s ease-out;
-}
-
-.introjs-fixParent {
-  z-index: auto !important;
-}
-
-.introjs-showElement {
-  z-index: 9999999 !important;
-}
-
-.introjs-relativePosition {
-  position: relative;
-}
-
-.introjs-helperLayer {
-  position: absolute;
-  z-index: 9999998;
-  background-color: #FFF;
-  background-color: rgba(255,255,255,.9);
-  border: 1px solid #777;
-  border: 1px solid rgba(0,0,0,.5);
-  border-radius: 4px;
-  box-shadow: 0 2px 15px rgba(0,0,0,.4);
-  -webkit-transition: all 0.3s ease-out;
-     -moz-transition: all 0.3s ease-out;
-      -ms-transition: all 0.3s ease-out;
-       -o-transition: all 0.3s ease-out;
-          transition: all 0.3s ease-out;
-}
-
-.introjs-helperNumberLayer {
-  position: absolute;
-  top: -16px;
-  left: -16px;
-  z-index: 9999999999 !important;
-  padding: 2px;
-  font-family: Arial, verdana, tahoma;
-  font-size: 13px;
-  font-weight: bold;
-  color: white;
-  text-align: center;
-  text-shadow: 1px 1px 1px rgba(0,0,0,.3);
-  background: #ff3019; /* Old browsers */
-  background: -webkit-linear-gradient(top, #ff3019 0%, #cf0404 100%); /* Chrome10+,Safari5.1+ */
-  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ff3019), color-stop(100%, #cf0404)); /* Chrome,Safari4+ */
-  background:    -moz-linear-gradient(top, #ff3019 0%, #cf0404 100%); /* FF3.6+ */
-  background:     -ms-linear-gradient(top, #ff3019 0%, #cf0404 100%); /* IE10+ */
-  background:      -o-linear-gradient(top, #ff3019 0%, #cf0404 100%); /* Opera 11.10+ */
-  background:         linear-gradient(to bottom, #ff3019 0%, #cf0404 100%);  /* W3C */
-  width: 20px;
-  height:20px;
-  line-height: 20px;
-  border: 3px solid white;
-  border-radius: 50%;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3019', endColorstr='#cf0404', GradientType=0); /* IE6-9 */ 
-  filter: progid:DXImageTransform.Microsoft.Shadow(direction=135, strength=2, color=ff0000); /* IE10 text shadows */
-  box-shadow: 0 2px 5px rgba(0,0,0,.4);
-}
-
-.introjs-arrow {
-  border: 5px solid white;
-  content:'';
-  position: absolute;
-}
-.introjs-arrow.top {
-  top: -10px;
-  border-top-color:transparent;
-  border-right-color:transparent;
-  border-bottom-color:white;
-  border-left-color:transparent;
-}
-.introjs-arrow.right {
-  right: -10px;
-  top: 10px;
-  border-top-color:transparent;
-  border-right-color:transparent;
-  border-bottom-color:transparent;
-  border-left-color:white;
-}
-.introjs-arrow.bottom {
-  bottom: -10px;
-  border-top-color:white;
-  border-right-color:transparent;
-  border-bottom-color:transparent;
-  border-left-color:transparent;
-}
-.introjs-arrow.left {
-  left: -10px;
-  top: 10px;
-  border-top-color:transparent;
-  border-right-color:white;
-  border-bottom-color:transparent;
-  border-left-color:transparent;
-}
-
-.introjs-tooltip {
-  position: absolute;
-  padding: 10px;
-  background-color: white;
-  min-width: 200px;
-  max-width: 300px;
-  border-radius: 3px;
-  box-shadow: 0 1px 10px rgba(0,0,0,.4);
-  -webkit-transition: opacity 0.1s ease-out;
-     -moz-transition: opacity 0.1s ease-out;
-      -ms-transition: opacity 0.1s ease-out;
-       -o-transition: opacity 0.1s ease-out;
-          transition: opacity 0.1s ease-out;
-}
-
-.introjs-tooltipbuttons {
-  text-align: right;
-}
-
-/* 
- Buttons style by http://nicolasgallagher.com/lab/css3-github-buttons/ 
- Changed by Afshin Mehrabani
-*/
-.introjs-button {
-  position: relative;
-  overflow: visible;
-  display: inline-block;
-  padding: 0.3em 0.8em;
-  border: 1px solid #d4d4d4;
-  margin: 0;
-  text-decoration: none;
-  text-shadow: 1px 1px 0 #fff;
-  font: 11px/normal sans-serif;
-  color: #333;
-  white-space: nowrap;
-  cursor: pointer;
-  outline: none;
-  background-color: #ececec;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec));
-  background-image: -moz-linear-gradient(#f4f4f4, #ececec);
-  background-image: -o-linear-gradient(#f4f4f4, #ececec);
-  background-image: linear-gradient(#f4f4f4, #ececec);
-  -webkit-background-clip: padding;
-  -moz-background-clip: padding;
-  -o-background-clip: padding-box;
-  /*background-clip: padding-box;*/ /* commented out due to Opera 11.10 bug */
-  -webkit-border-radius: 0.2em;
-  -moz-border-radius: 0.2em;
-  border-radius: 0.2em;
-  /* IE hacks */
-  zoom: 1;
-  *display: inline;
-  margin-top: 10px;
-}
-
-.introjs-button:hover {
-  border-color: #bcbcbc;
-  text-decoration: none; 
-  box-shadow: 0px 1px 1px #e3e3e3;
-}
-
-.introjs-button:focus,
-.introjs-button:active {
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ececec), to(#f4f4f4));
-  background-image: -moz-linear-gradient(#ececec, #f4f4f4);
-  background-image: -o-linear-gradient(#ececec, #f4f4f4);
-  background-image: linear-gradient(#ececec, #f4f4f4);
-}
-
-/* overrides extra padding on button elements in Firefox */
-.introjs-button::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-
-.introjs-skipbutton {
-  margin-right: 5px;
-  color: #7a7a7a;
-}
-
-.introjs-prevbutton {
-  -webkit-border-radius: 0.2em 0 0 0.2em;
-  -moz-border-radius: 0.2em 0 0 0.2em;
-  border-radius: 0.2em 0 0 0.2em;
-  border-right: none;
-}
-
-.introjs-nextbutton {
-  -webkit-border-radius: 0 0.2em 0.2em 0;
-  -moz-border-radius: 0 0.2em 0.2em 0;
-  border-radius: 0 0.2em 0.2em 0;
-}
-
-.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
-  color: #9a9a9a;
-  border-color: #d4d4d4;
-  box-shadow: none;
-  cursor: default;
-  background-color: #f4f4f4;
-  background-image: none;
-  text-decoration: none;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/package.json
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/package.json b/portal/dist/usergrid-portal/bower_components/angular-intro.js/package.json
new file mode 100644
index 0000000..714ebf4
--- /dev/null
+++ b/portal/dist/usergrid-portal/bower_components/angular-intro.js/package.json
@@ -0,0 +1,36 @@
+{
+  "name": "angular-intro.js",
+  "version": "0.1.0",
+  "description": "Angular directive to wrap intro.js",
+  "main": "angular-intro.js",
+  "directories": {
+    "example": "example",
+    "lib": "lib"
+  },
+  "scripts": {
+    "test": "grunt test"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/mendhak/angular-intro.js.git"
+  },
+  "keywords": [
+    "angular",
+    "intro.js",
+    "angular-intro"
+  ],
+  "author": "mendhak",
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/mendhak/angular-intro.js/issues"
+  },
+  "homepage": "https://github.com/mendhak/angular-intro.js",
+  "devDependencies": {
+    "grunt": "~0.4.4",
+    "grunt-contrib-jshint": "~0.9.2",
+    "grunt-contrib-uglify": "~0.4.0",
+    "load-grunt-tasks": "~0.4.0",
+    "grunt-contrib-watch": "~0.6.1",
+    "bower": "~1.3.1"
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js b/portal/dist/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js
new file mode 100644
index 0000000..5d145ee
--- /dev/null
+++ b/portal/dist/usergrid-portal/bower_components/angular-intro.js/src/angular-intro.js
@@ -0,0 +1,60 @@
+var ngIntroDirective = angular.module('angular-intro', []);
+
+/**
+ * TODO: Use isolate scope, but requires angular 1.2: http://plnkr.co/edit/a2c14O?p=preview
+ * See: http://stackoverflow.com/q/18796023/237209
+ */
+
+ngIntroDirective.directive('ngIntroOptions', ['$timeout', '$parse', function ($timeout, $parse) {
+
+    return {
+        restrict: 'A',
+        link: function(scope, element, attrs) {
+
+            scope[attrs.ngIntroMethod] = function(step) {
+
+                var intro;
+
+                if(typeof(step) === 'string') {
+                    intro = introJs(step);
+                } else {
+                    intro = introJs();
+                }
+
+                intro.setOptions(scope.$eval(attrs.ngIntroOptions));
+
+                if(attrs.ngIntroOncomplete) {
+                    intro.oncomplete($parse(attrs.ngIntroOncomplete)(scope));
+                }
+
+                if(attrs.ngIntroOnexit) {
+                    intro.onexit($parse(attrs.ngIntroOnexit)(scope));
+                }
+
+                if(attrs.ngIntroOnchange) {
+                    intro.onchange($parse(attrs.ngIntroOnchange)(scope));
+                }
+
+                if(attrs.ngIntroOnbeforechange) {
+                    intro.onbeforechange($parse(attrs.ngIntroOnbeforechange)(scope));
+                }
+
+                if(attrs.ngIntroOnafterchange) {
+                    intro.onafterchange($parse(attrs.ngIntroOnafterchange)(scope));
+                }
+
+                if(typeof(step) === 'number') {
+                    intro.goToStep(step).start();
+                } else {
+                    intro.start();
+                }
+            };
+
+            if(attrs.ngIntroAutostart == 'true') {
+                $timeout(function() {
+                    $parse(attrs.ngIntroMethod)(scope)();
+                });
+            }
+        }
+    };
+}]);

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular/angular-csp.css
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular/angular-csp.css b/portal/dist/usergrid-portal/bower_components/angular/angular-csp.css
index 0d3d3a9..763f7b9 100644
--- a/portal/dist/usergrid-portal/bower_components/angular/angular-csp.css
+++ b/portal/dist/usergrid-portal/bower_components/angular/angular-csp.css
@@ -11,8 +11,3 @@
 ng\:form {
   display: block;
 }
-
-.ng-animate-block-transitions {
-  transition:0s all!important;
-  -webkit-transition:0s all!important;
-}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/angular/angular.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/angular/angular.js b/portal/dist/usergrid-portal/bower_components/angular/angular.js
index c0a0169..e0bdec5 100644
--- a/portal/dist/usergrid-portal/bower_components/angular/angular.js
+++ b/portal/dist/usergrid-portal/bower_components/angular/angular.js
@@ -1,5 +1,5 @@
 /**
- * @license AngularJS v1.3.0-build.2494+sha.b472d02
+ * @license AngularJS v1.3.0-build.2544+sha.7914d34
  * (c) 2010-2014 Google, Inc. http://angularjs.org
  * License: MIT
  */
@@ -68,7 +68,7 @@ function minErr(module) {
       return match;
     });
 
-    message = message + '\nhttp://errors.angularjs.org/1.3.0-build.2494+sha.b472d02/' +
+    message = message + '\nhttp://errors.angularjs.org/1.3.0-build.2544+sha.7914d34/' +
       (module ? module + '/' : '') + code;
     for (i = 2; i < arguments.length; i++) {
       message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
@@ -1355,7 +1355,7 @@ function angularInit(element, bootstrap) {
  * </file>
  * </example>
  *
- * @param {Element} element DOM element which is the root of angular application.
+ * @param {DOMElement} element DOM element which is the root of angular application.
  * @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
  *     Each item in the array should be the name of a predefined module or a (DI annotated)
  *     function that will be invoked by the injector as a run block.
@@ -1919,7 +1919,7 @@ function setupModuleLoader(window) {
  * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
  */
 var version = {
-  full: '1.3.0-build.2494+sha.b472d02',    // all of these placeholder strings will be replaced by grunt's
+  full: '1.3.0-build.2544+sha.7914d34',    // all of these placeholder strings will be replaced by grunt's
   major: 1,    // package task
   minor: 3,
   dot: 0,
@@ -4575,7 +4575,8 @@ function $BrowserProvider(){
  * @name $cacheFactory
  *
  * @description
- * Factory that constructs cache objects and gives access to them.
+ * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to
+ * them.
  *
  * ```js
  *
@@ -4607,6 +4608,46 @@ function $BrowserProvider(){
  * - `{void}` `removeAll()` — Removes all cached values.
  * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.
  *
+ * @example
+   <example module="cacheExampleApp">
+     <file name="index.html">
+       <div ng-controller="CacheController">
+         <input ng-model="newCacheKey" placeholder="Key">
+         <input ng-model="newCacheValue" placeholder="Value">
+         <button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
+
+         <p ng-if="keys.length">Cached Values</p>
+         <div ng-repeat="key in keys">
+           <span ng-bind="key"></span>
+           <span>: </span>
+           <b ng-bind="cache.get(key)"></b>
+         </div>
+
+         <p>Cache Info</p>
+         <div ng-repeat="(key, value) in cache.info()">
+           <span ng-bind="key"></span>
+           <span>: </span>
+           <b ng-bind="value"></b>
+         </div>
+       </div>
+     </file>
+     <file name="script.js">
+       angular.module('cacheExampleApp', []).
+         controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
+           $scope.keys = [];
+           $scope.cache = $cacheFactory('cacheId');
+           $scope.put = function(key, value) {
+             $scope.cache.put(key, value);
+             $scope.keys.push(key);
+           };
+         }]);
+     </file>
+     <file name="style.css">
+       p {
+         margin: 10px 0 3px;
+       }
+     </file>
+   </example>
  */
 function $CacheFactoryProvider() {
 
@@ -4626,8 +4667,65 @@ function $CacheFactoryProvider() {
           freshEnd = null,
           staleEnd = null;
 
+      /**
+       * @ngdoc type
+       * @name $cacheFactory.Cache
+       *
+       * @description
+       * A cache object used to store and retrieve data, primarily used by
+       * {@link $http $http} and the {@link ng.directive:script script} directive to cache
+       * templates and other data.
+       *
+       * ```js
+       *  angular.module('superCache')
+       *    .factory('superCache', ['$cacheFactory', function($cacheFactory) {
+       *      return $cacheFactory('super-cache');
+       *    }]);
+       * ```
+       *
+       * Example test:
+       *
+       * ```js
+       *  it('should behave like a cache', inject(function(superCache) {
+       *    superCache.put('key', 'value');
+       *    superCache.put('another key', 'another value');
+       *
+       *    expect(superCache.info()).toEqual({
+       *      id: 'super-cache',
+       *      size: 2
+       *    });
+       *
+       *    superCache.remove('another key');
+       *    expect(superCache.get('another key')).toBeUndefined();
+       *
+       *    superCache.removeAll();
+       *    expect(superCache.info()).toEqual({
+       *      id: 'super-cache',
+       *      size: 0
+       *    });
+       *  }));
+       * ```
+       */
       return caches[cacheId] = {
 
+        /**
+         * @ngdoc method
+         * @name $cacheFactory.Cache#put
+         * @function
+         *
+         * @description
+         * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be
+         * retrieved later, and incrementing the size of the cache if the key was not already
+         * present in the cache. If behaving like an LRU cache, it will also remove stale
+         * entries from the set.
+         *
+         * It will not insert undefined values into the cache.
+         *
+         * @param {string} key the key under which the cached data is stored.
+         * @param {*} value the value to store alongside the key. If it is undefined, the key
+         *    will not be stored.
+         * @returns {*} the value stored.
+         */
         put: function(key, value) {
           if (capacity < Number.MAX_VALUE) {
             var lruEntry = lruHash[key] || (lruHash[key] = {key: key});
@@ -4646,7 +4744,17 @@ function $CacheFactoryProvider() {
           return value;
         },
 
-
+        /**
+         * @ngdoc method
+         * @name $cacheFactory.Cache#get
+         * @function
+         *
+         * @description
+         * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.
+         *
+         * @param {string} key the key of the data to be retrieved
+         * @returns {*} the value stored.
+         */
         get: function(key) {
           if (capacity < Number.MAX_VALUE) {
             var lruEntry = lruHash[key];
@@ -4660,6 +4768,16 @@ function $CacheFactoryProvider() {
         },
 
 
+        /**
+         * @ngdoc method
+         * @name $cacheFactory.Cache#remove
+         * @function
+         *
+         * @description
+         * Removes an entry from the {@link $cacheFactory.Cache Cache} object.
+         *
+         * @param {string} key the key of the entry to be removed
+         */
         remove: function(key) {
           if (capacity < Number.MAX_VALUE) {
             var lruEntry = lruHash[key];
@@ -4678,6 +4796,14 @@ function $CacheFactoryProvider() {
         },
 
 
+        /**
+         * @ngdoc method
+         * @name $cacheFactory.Cache#removeAll
+         * @function
+         *
+         * @description
+         * Clears the cache object of any entries.
+         */
         removeAll: function() {
           data = {};
           size = 0;
@@ -4686,6 +4812,15 @@ function $CacheFactoryProvider() {
         },
 
 
+        /**
+         * @ngdoc method
+         * @name $cacheFactory.Cache#destroy
+         * @function
+         *
+         * @description
+         * Destroys the {@link $cacheFactory.Cache Cache} object entirely,
+         * removing it from the {@link $cacheFactory $cacheFactory} set.
+         */
         destroy: function() {
           data = null;
           stats = null;
@@ -4694,6 +4829,22 @@ function $CacheFactoryProvider() {
         },
 
 
+        /**
+         * @ngdoc method
+         * @name $cacheFactory.Cache#info
+         * @function
+         *
+         * @description
+         * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.
+         *
+         * @returns {object} an object with the following properties:
+         *   <ul>
+         *     <li>**id**: the id of the cache instance</li>
+         *     <li>**size**: the number of entries kept in the cache instance</li>
+         *     <li>**...**: any additional properties from the options object when creating the
+         *       cache.</li>
+         *   </ul>
+         */
         info: function() {
           return extend({}, stats, {size: size});
         }
@@ -4880,6 +5031,7 @@ function $TemplateCacheProvider() {
  *       restrict: 'A',
  *       scope: false,
  *       controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
+ *       controllerAs: 'stringAlias',
  *       require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
  *       compile: function compile(tElement, tAttrs, transclude) {
  *         return {
@@ -5097,6 +5249,16 @@ function $TemplateCacheProvider() {
  * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
  * should be done in a linking function rather than in a compile function.
  * </div>
+
+ * <div class="alert alert-warning">
+ * **Note:** The compile function cannot handle directives that recursively use themselves in their
+ * own templates or compile functions. Compiling these directives results in an infinite loop and a
+ * stack overflow errors.
+ *
+ * This can be avoided by manually using $compile in the postLink function to imperatively compile
+ * a directive's template instead of relying on automatic template compilation via `template` or
+ * `templateUrl` declaration or manual compilation inside the compile function.
+ * </div>
  *
  * <div class="alert alert-error">
  * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
@@ -7286,7 +7448,7 @@ function $HttpProvider() {
      *
      * ```
      * module.run(function($http) {
-     *   $http.defaults.headers.common.Authentication = 'Basic YmVlcDpib29w'
+     *   $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
      * });
      * ```
      *
@@ -7580,6 +7742,7 @@ function $HttpProvider() {
      *   - **status** – `{number}` – HTTP status code of the response.
      *   - **headers** – `{function([headerName])}` – Header getter function.
      *   - **config** – `{Object}` – The configuration object that was used to generate the request.
+     *   - **statusText** – `{string}` – HTTP status text of the response.
      *
      * @property {Array.<Object>} pendingRequests Array of config objects for currently pending
      *   requests. This is primarily meant to be used for debugging purposes.
@@ -7954,9 +8117,9 @@ function $HttpProvider() {
           } else {
             // serving from cache
             if (isArray(cachedResp)) {
-              resolvePromise(cachedResp[1], cachedResp[0], copy(cachedResp[2]));
+              resolvePromise(cachedResp[1], cachedResp[0], copy(cachedResp[2]), cachedResp[3]);
             } else {
-              resolvePromise(cachedResp, 200, {});
+              resolvePromise(cachedResp, 200, {}, 'OK');
             }
           }
         } else {
@@ -7980,17 +8143,17 @@ function $HttpProvider() {
        *  - resolves the raw $http promise
        *  - calls $apply
        */
-      function done(status, response, headersString) {
+      function done(status, response, headersString, statusText) {
         if (cache) {
           if (isSuccess(status)) {
-            cache.put(url, [status, response, parseHeaders(headersString)]);
+            cache.put(url, [status, response, parseHeaders(headersString), statusText]);
           } else {
             // remove promise from the cache
             cache.remove(url);
           }
         }
 
-        resolvePromise(response, status, headersString);
+        resolvePromise(response, status, headersString, statusText);
         if (!$rootScope.$$phase) $rootScope.$apply();
       }
 
@@ -7998,7 +8161,7 @@ function $HttpProvider() {
       /**
        * Resolves the raw $http promise.
        */
-      function resolvePromise(response, status, headers) {
+      function resolvePromise(response, status, headers, statusText) {
         // normalize internal statuses to 0
         status = Math.max(status, 0);
 
@@ -8006,7 +8169,8 @@ function $HttpProvider() {
           data: response,
           status: status,
           headers: headersGetter(headers),
-          config: config
+          config: config,
+          statusText : statusText
         });
       }
 
@@ -8137,7 +8301,8 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
           completeRequest(callback,
               status || xhr.status,
               response,
-              responseHeaders);
+              responseHeaders,
+              xhr.statusText || '');
         }
       };
 
@@ -8178,7 +8343,7 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
       xhr && xhr.abort();
     }
 
-    function completeRequest(callback, status, response, headersString) {
+    function completeRequest(callback, status, response, headersString, statusText) {
       // cancel timeout and subsequent timeout promise resolution
       timeoutId && $browserDefer.cancel(timeoutId);
       jsonpDone = xhr = null;
@@ -8191,9 +8356,10 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
       }
 
       // normalize IE bug (http://bugs.jquery.com/ticket/1450)
-      status = status == 1223 ? 204 : status;
+      status = status === 1223 ? 204 : status;
+      statusText = statusText || '';
 
-      callback(status, response, headersString);
+      callback(status, response, headersString, statusText);
       $browser.$$completeOutstandingRequest(noop);
     }
   };
@@ -9235,8 +9401,7 @@ function locationGetterSetter(property, preprocess) {
  *   - Clicks on a link.
  * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
  *
- * For more information see {@link guide/dev_guide.services.$location Developer Guide: Angular
- * Services: Using $location}
+ * For more information see {@link guide/$location Developer Guide: Using $location}
  */
 
 /**
@@ -9972,7 +10137,11 @@ var Parser = function (lexer, $filter, options) {
   this.options = options;
 };
 
-Parser.ZERO = function () { return 0; };
+Parser.ZERO = extend(function () {
+  return 0;
+}, {
+  constant: true
+});
 
 Parser.prototype = {
   constructor: Parser,
@@ -11717,7 +11886,8 @@ function $RootScopeProvider(){
        *    - `function(newValue, oldValue, scope)`: called with current and previous values as
        *      parameters.
        *
-       * @param {boolean=} objectEquality Compare object for equality rather than for reference.
+       * @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of
+       *     comparing for reference equality.
        * @returns {function()} Returns a deregistration function for this listener.
        */
       $watch: function(watchExp, listener, objectEquality) {
@@ -13115,7 +13285,7 @@ function $SceDelegateProvider() {
  * | `$sce.HTML`         | For HTML that's safe to source into the application.  The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. |
  * | `$sce.CSS`          | For CSS that's safe to source into the application.  Currently unused.  Feel free to use it in your own directives. |
  * | `$sce.URL`          | For URLs that are safe to follow as links.  Currently unused (`<a href=` and `<img src=` sanitize their urls and don't constitute an SCE context. |
- * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contens are also safe to include in your application.  Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.)  <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
+ * | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application.  Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.)  <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
  * | `$sce.JS`           | For JavaScript that is safe to execute in your application's context.  Currently unused.  Feel free to use it in your own directives. |
  *
  * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name="resourceUrlPatternItem"></a>
@@ -14963,7 +15133,7 @@ function limitToFilter(){
  *    - `Array`: An array of function or string predicates. The first predicate in the array
  *      is used for sorting, but when two items are equivalent, the next predicate is used.
  *
- * @param {boolean=} reverse Reverse the order the array.
+ * @param {boolean=} reverse Reverse the order of the array.
  * @returns {Array} Sorted copy of the source array.
  *
  * @example
@@ -18859,7 +19029,7 @@ var ngControllerDirective = [function() {
  * @element ANY
  * @priority 0
  * @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
- * click. (Event object is available as `$event`)
+ * click. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -18940,7 +19110,7 @@ forEach(
  * @element ANY
  * @priority 0
  * @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
- * mousedown. (Event object is available as `$event`)
+ * mousedown. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -18964,7 +19134,7 @@ forEach(
  * @element ANY
  * @priority 0
  * @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
- * mouseup. (Event object is available as `$event`)
+ * mouseup. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -18987,7 +19157,7 @@ forEach(
  * @element ANY
  * @priority 0
  * @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
- * mouseover. (Event object is available as `$event`)
+ * mouseover. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19011,7 +19181,7 @@ forEach(
  * @element ANY
  * @priority 0
  * @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
- * mouseenter. (Event object is available as `$event`)
+ * mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19035,7 +19205,7 @@ forEach(
  * @element ANY
  * @priority 0
  * @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
- * mouseleave. (Event object is available as `$event`)
+ * mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19059,7 +19229,7 @@ forEach(
  * @element ANY
  * @priority 0
  * @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
- * mousemove. (Event object is available as `$event`)
+ * mousemove. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19126,7 +19296,8 @@ forEach(
  *
  * @element ANY
  * @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
- * keypress. (Event object is available as `$event` and can be interrogated for keyCode, altKey, etc.)
+ * keypress. ({@link guide/expression#-event- Event object is available as `$event`}
+ * and can be interrogated for keyCode, altKey, etc.)
  *
  * @example
    <example>
@@ -19151,7 +19322,8 @@ forEach(
  *
  * @element form
  * @priority 0
- * @param {expression} ngSubmit {@link guide/expression Expression} to eval. (Event object is available as `$event`)
+ * @param {expression} ngSubmit {@link guide/expression Expression} to eval.
+ * ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19202,7 +19374,7 @@ forEach(
  * @element window, input, select, textarea, a
  * @priority 0
  * @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
- * focus. (Event object is available as `$event`)
+ * focus. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
  * See {@link ng.directive:ngClick ngClick}
@@ -19218,7 +19390,7 @@ forEach(
  * @element window, input, select, textarea, a
  * @priority 0
  * @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
- * blur. (Event object is available as `$event`)
+ * blur. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
  * See {@link ng.directive:ngClick ngClick}
@@ -19234,7 +19406,7 @@ forEach(
  * @element window, input, select, textarea, a
  * @priority 0
  * @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon
- * copy. (Event object is available as `$event`)
+ * copy. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19255,7 +19427,7 @@ forEach(
  * @element window, input, select, textarea, a
  * @priority 0
  * @param {expression} ngCut {@link guide/expression Expression} to evaluate upon
- * cut. (Event object is available as `$event`)
+ * cut. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -19276,7 +19448,7 @@ forEach(
  * @element window, input, select, textarea, a
  * @priority 0
  * @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon
- * paste. (Event object is available as `$event`)
+ * paste. ({@link guide/expression#-event- Event object is available as `$event`})
  *
  * @example
    <example>
@@ -20418,10 +20590,10 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
  * restating the styles for the .ng-hide class in CSS:
  * ```css
  * .ng-hide {
- *   //!annotate CSS Specificity|Not to worry, this will override the AngularJS default...
+ *   /&#42; Not to worry, this will override the AngularJS default...
  *   display:block!important;
  *
- *   //this is just another form of hiding an element
+ *   /&#42; this is just another form of hiding an element &#42;/
  *   position:absolute;
  *   top:-9999px;
  *   left:-9999px;
@@ -20447,10 +20619,20 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
  * //a working example can be found at the bottom of this page
  * //
  * .my-element.ng-hide-add, .my-element.ng-hide-remove {
- *   transition:0.5s linear all;
+ *   /&#42; this is required as of 1.3x to properly
+ *      apply all styling in a show/hide animation &#42;/
+ *   transition:0s linear all;
+ *
+ *   /&#42; this must be set as block so the animation is visible &#42;/
  *   display:block!important;
  * }
  *
+ * .my-element.ng-hide-add-active,
+ * .my-element.ng-hide-remove-active {
+ *   /&#42; the transition is defined in the active class &#42;/
+ *   transition:1s linear all;
+ * }
+ *
  * .my-element.ng-hide-add { ... }
  * .my-element.ng-hide-add.ng-hide-add-active { ... }
  * .my-element.ng-hide-remove { ... }
@@ -20487,8 +20669,6 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
     </file>
     <file name="animations.css">
       .animate-show {
-        -webkit-transition:all linear 0.5s;
-        transition:all linear 0.5s;
         line-height:20px;
         opacity:1;
         padding:10px;
@@ -20501,6 +20681,12 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
         display:block!important;
       }
 
+      .animate-show.ng-hide-add.ng-hide-add-active,
+      .animate-show.ng-hide-remove.ng-hide-remove-active {
+        -webkit-transition:all linear 0.5s;
+        transition:all linear 0.5s;
+      }
+
       .animate-show.ng-hide {
         line-height:0;
         opacity:0;
@@ -20549,7 +20735,7 @@ var ngShowDirective = ['$animate', function($animate) {
  * in AngularJS and sets the display style to none (using an !important flag).
  * For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
  *
- * ```hrml
+ * ```html
  * <!-- when $scope.myValue is truthy (element is hidden) -->
  * <div ng-hide="myValue"></div>
  *
@@ -21731,4 +21917,4 @@ var styleDirective = valueFn({
 
 })(window, document);
 
-!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}.ng-animate-block-transitions{transition:0s all!important;-webkit-transition:0s all!important;}</style>');
\ No newline at end of file
+!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\\:form{display:block;}</style>');
\ No newline at end of file