text: /**
   * @license AngularJS v1.3.16
   * (c) 2010-2014 Google, Inc. http://angularjs.org
   * License: MIT
   */
  (function(window, angular, undefined) {'use strict';
  
  /**
   * @ngdoc module
   * @name ngCookies
   * @description
   *
   * # ngCookies
   *
   * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.
   *
   *
   * <div doc-module-components="ngCookies"></div>
   *
   * See {@link ngCookies.$cookies `$cookies`} and
   * {@link ngCookies.$cookieStore `$cookieStore`} for usage.
   */
  
  
  angular.module('ngCookies', ['ng']).
    /**
     * @ngdoc service
     * @name $cookies
     *
     * @description
     * Provides read/write access to browser's cookies.
     *
     * Only a simple Object is exposed and by adding or removing properties to/from this object, new
     * cookies are created/deleted at the end of current $eval.
     * The object's properties can only be strings.
     *
     * Requires the {@link ngCookies `ngCookies`} module to be installed.
     *
     * @example
     *
     * ```js
     * angular.module('cookiesExample', ['ngCookies'])
     *   .controller('ExampleController', ['$cookies', function($cookies) {
     *     // Retrieving a cookie
     *     var favoriteCookie = $cookies.myFavorite;
     *     // Setting a cookie
     *     $cookies.myFavorite = 'oatmeal';
     *   }]);
     * ```
     */
     factory('$cookies', ['$rootScope', '$browser', function($rootScope, $browser) {
        var cookies = {},
            lastCookies = {},
            lastBrowserCookies,
            runEval = false,
            copy = angular.copy,
            isUndefined = angular.isUndefined;
  
        //creates a poller fn that copies all cookies from the $browser to service & inits the service
        $browser.addPollFn(function() {
          var currentCookies = $browser.cookies();
          if (lastBrowserCookies != currentCookies) { //relies on browser.cookies() impl
            lastBrowserCookies = currentCookies;
            copy(currentCookies, lastCookies);
            copy(currentCookies, cookies);
            if (runEval) $rootScope.$apply();
          }
        })();
  
        runEval = true;
  
        //at the end of each eval, push cookies
        //TODO: this should happen before the "delayed" watches fire, because if some cookies are not
        //      strings or browser refuses to store some cookies, we update the model in the push fn.
        $rootScope.$watch(push);
  
        return cookies;
  
  
        /**
         * Pushes all the cookies from the service to the browser and verifies if all cookies were
         * stored.
         */
        function push() {
          var name,
              value,
              browserCookies,
              updated;
  
          //delete any cookies deleted in $cookies
          for (name in lastCookies) {
            if (isUndefined(cookies[name])) {
              $browser.cookies(name, undefined);
              delete lastCookies[name];
            }
          }
  
          //update all cookies updated in $cookies
          for (name in cookies) {
            value = cookies[name];
            if (!angular.isString(value)) {
              value = '' + value;
              cookies[name] = value;
            }
            if (value !== lastCookies[name]) {
              $browser.cookies(name, value);
              lastCookies[name] = value;
              updated = true;
            }
          }
  
          //verify what was actually stored
          if (updated) {
            browserCookies = $browser.cookies();
  
            for (name in cookies) {
              if (cookies[name] !== browserCookies[name]) {
                //delete or reset all cookies that the browser dropped from $cookies
                if (isUndefined(browserCookies[name])) {
                  delete cookies[name];
                  delete lastCookies[name];
                } else {
                  cookies[name] = lastCookies[name] = browserCookies[name];
                }
              }
            }
          }
        }
      }]).
  
  
    /**
     * @ngdoc service
     * @name $cookieStore
     * @requires $cookies
     *
     * @description
     * Provides a key-value (string-object) storage, that is backed by session cookies.
     * Objects put or retrieved from this storage are automatically serialized or
     * deserialized by angular's toJson/fromJson.
     *
     * Requires the {@link ngCookies `ngCookies`} module to be installed.
     *
     * @example
     *
     * ```js
     * angular.module('cookieStoreExample', ['ngCookies'])
     *   .controller('ExampleController', ['$cookieStore', function($cookieStore) {
     *     // Put cookie
     *     $cookieStore.put('myFavorite','oatmeal');
     *     // Get cookie
     *     var favoriteCookie = $cookieStore.get('myFavorite');
     *     // Removing a cookie
     *     $cookieStore.remove('myFavorite');
     *   }]);
     * ```
     */
     factory('$cookieStore', ['$cookies', function($cookies) {
  
        return {
          /**
           * @ngdoc method
           * @name $cookieStore#get
           *
           * @description
           * Returns the value of given cookie key
           *
           * @param {string} key Id to use for lookup.
           * @returns {Object} Deserialized cookie value.
           */
          get: function(key) {
            var value = $cookies[key];
            return value ? angular.fromJson(value) : value;
          },
  
          /**
           * @ngdoc method
           * @name $cookieStore#put
           *
           * @description
           * Sets a value for given cookie key
           *
           * @param {string} key Id for the `value`.
           * @param {Object} value Value to be stored.
           */
          put: function(key, value) {
            $cookies[key] = angular.toJson(value);
          },
  
          /**
           * @ngdoc method
           * @name $cookieStore#remove
           *
           * @description
           * Remove given cookie
           *
           * @param {string} key Id of the key-value pair to delete.
           */
          remove: function(key) {
            delete $cookies[key];
          }
        };
  
      }]);
  
  
  })(window, window.angular);