| (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | 
| angular.module('nemLogging', []); | 
|   | 
| angular.module('nemLogging').provider('nemDebug', function (){ | 
|   var ourDebug = null; | 
|   ourDebug = require('debug'); | 
|   | 
|   this.$get =  function(){ | 
|     //avail as service | 
|     return ourDebug; | 
|   }; | 
|   | 
|   //avail at provider, config time | 
|   this.debug = ourDebug; | 
|   | 
|   return this; | 
| }); | 
| var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, | 
|   slice = [].slice; | 
|   | 
| angular.module('nemLogging').provider('nemSimpleLogger', [ | 
|   'nemDebugProvider', function(nemDebugProvider) { | 
|     var LEVELS, Logger, _debugCache, _fns, _isValidLogObject, _maybeExecLevel, _wrapDebug, i, key, len, nemDebug, val; | 
|     nemDebug = nemDebugProvider.debug; | 
|     _debugCache = {}; | 
|     _fns = ['debug', 'info', 'warn', 'error', 'log']; | 
|     LEVELS = {}; | 
|     for (key = i = 0, len = _fns.length; i < len; key = ++i) { | 
|       val = _fns[key]; | 
|       LEVELS[val] = key; | 
|     } | 
|     _maybeExecLevel = function(level, current, fn) { | 
|       if (level >= current) { | 
|         return fn(); | 
|       } | 
|     }; | 
|     _isValidLogObject = function(logObject) { | 
|       var isValid, j, len1; | 
|       isValid = false; | 
|       if (!logObject) { | 
|         return isValid; | 
|       } | 
|       for (j = 0, len1 = _fns.length; j < len1; j++) { | 
|         val = _fns[j]; | 
|         isValid = (logObject[val] != null) && typeof logObject[val] === 'function'; | 
|         if (!isValid) { | 
|           break; | 
|         } | 
|       } | 
|       return isValid; | 
|     }; | 
|   | 
|     /* | 
|       Overide logeObject.debug with a nemDebug instance | 
|       see: https://github.com/visionmedia/debug/blob/master/Readme.md | 
|      */ | 
|     _wrapDebug = function(namespace, logObject) { | 
|       var debugInstance, j, len1, newLogger; | 
|       if (_debugCache[namespace] == null) { | 
|         _debugCache[namespace] = nemDebug(namespace); | 
|       } | 
|       debugInstance = _debugCache[namespace]; | 
|       newLogger = {}; | 
|       for (j = 0, len1 = _fns.length; j < len1; j++) { | 
|         val = _fns[j]; | 
|         newLogger[val] = val === 'debug' ? debugInstance : logObject[val]; | 
|       } | 
|       return newLogger; | 
|     }; | 
|     Logger = (function() { | 
|       function Logger($log1) { | 
|         var fn1, j, len1, level, logFns; | 
|         this.$log = $log1; | 
|         this.spawn = bind(this.spawn, this); | 
|         if (!this.$log) { | 
|           throw 'internalLogger undefined'; | 
|         } | 
|         if (!_isValidLogObject(this.$log)) { | 
|           throw '@$log is invalid'; | 
|         } | 
|         this.doLog = true; | 
|         logFns = {}; | 
|         fn1 = (function(_this) { | 
|           return function(level) { | 
|             logFns[level] = function() { | 
|               var args; | 
|               args = 1 <= arguments.length ? slice.call(arguments, 0) : []; | 
|               if (_this.doLog) { | 
|                 return _maybeExecLevel(LEVELS[level], _this.currentLevel, function() { | 
|                   var ref; | 
|                   return (ref = _this.$log)[level].apply(ref, args); | 
|                 }); | 
|               } | 
|             }; | 
|             return _this[level] = logFns[level]; | 
|           }; | 
|         })(this); | 
|         for (j = 0, len1 = _fns.length; j < len1; j++) { | 
|           level = _fns[j]; | 
|           fn1(level); | 
|         } | 
|         this.LEVELS = LEVELS; | 
|         this.currentLevel = LEVELS.error; | 
|       } | 
|   | 
|       Logger.prototype.spawn = function(newInternalLogger) { | 
|         if (typeof newInternalLogger === 'string') { | 
|           if (!_isValidLogObject(this.$log)) { | 
|             throw '@$log is invalid'; | 
|           } | 
|           if (!nemDebug) { | 
|             throw 'nemDebug is undefined this is probably the light version of this library sep debug logggers is not supported!'; | 
|           } | 
|           return _wrapDebug(newInternalLogger, this.$log); | 
|         } | 
|         return new Logger(newInternalLogger || this.$log); | 
|       }; | 
|   | 
|       return Logger; | 
|   | 
|     })(); | 
|     this.decorator = [ | 
|       '$log', function($delegate) { | 
|         var log; | 
|         log = new Logger($delegate); | 
|         log.currentLevel = LEVELS.debug; | 
|         return log; | 
|       } | 
|     ]; | 
|     this.$get = [ | 
|       '$log', function($log) { | 
|         return new Logger($log); | 
|       } | 
|     ]; | 
|     return this; | 
|   } | 
| ]); | 
|   | 
| },{"debug":2}],2:[function(require,module,exports){ | 
|   | 
| /** | 
|  * This is the web browser implementation of `debug()`. | 
|  * | 
|  * Expose `debug()` as the module. | 
|  */ | 
|   | 
| exports = module.exports = require('./debug'); | 
| exports.log = log; | 
| exports.formatArgs = formatArgs; | 
| exports.save = save; | 
| exports.load = load; | 
| exports.useColors = useColors; | 
| exports.storage = 'undefined' != typeof chrome | 
|                && 'undefined' != typeof chrome.storage | 
|                   ? chrome.storage.local | 
|                   : localstorage(); | 
|   | 
| /** | 
|  * Colors. | 
|  */ | 
|   | 
| exports.colors = [ | 
|   'lightseagreen', | 
|   'forestgreen', | 
|   'goldenrod', | 
|   'dodgerblue', | 
|   'darkorchid', | 
|   'crimson' | 
| ]; | 
|   | 
| /** | 
|  * Currently only WebKit-based Web Inspectors, Firefox >= v31, | 
|  * and the Firebug extension (any Firefox version) are known | 
|  * to support "%c" CSS customizations. | 
|  * | 
|  * TODO: add a `localStorage` variable to explicitly enable/disable colors | 
|  */ | 
|   | 
| function useColors() { | 
|   // is webkit? http://stackoverflow.com/a/16459606/376773 | 
|   return ('WebkitAppearance' in document.documentElement.style) || | 
|     // is firebug? http://stackoverflow.com/a/398120/376773 | 
|     (window.console && (console.firebug || (console.exception && console.table))) || | 
|     // is firefox >= v31? | 
|     // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages | 
|     (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); | 
| } | 
|   | 
| /** | 
|  * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. | 
|  */ | 
|   | 
| exports.formatters.j = function(v) { | 
|   return JSON.stringify(v); | 
| }; | 
|   | 
|   | 
| /** | 
|  * Colorize log arguments if enabled. | 
|  * | 
|  * @api public | 
|  */ | 
|   | 
| function formatArgs() { | 
|   var args = arguments; | 
|   var useColors = this.useColors; | 
|   | 
|   args[0] = (useColors ? '%c' : '') | 
|     + this.namespace | 
|     + (useColors ? ' %c' : ' ') | 
|     + args[0] | 
|     + (useColors ? '%c ' : ' ') | 
|     + '+' + exports.humanize(this.diff); | 
|   | 
|   if (!useColors) return args; | 
|   | 
|   var c = 'color: ' + this.color; | 
|   args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); | 
|   | 
|   // the final "%c" is somewhat tricky, because there could be other | 
|   // arguments passed either before or after the %c, so we need to | 
|   // figure out the correct index to insert the CSS into | 
|   var index = 0; | 
|   var lastC = 0; | 
|   args[0].replace(/%[a-z%]/g, function(match) { | 
|     if ('%%' === match) return; | 
|     index++; | 
|     if ('%c' === match) { | 
|       // we only are interested in the *last* %c | 
|       // (the user may have provided their own) | 
|       lastC = index; | 
|     } | 
|   }); | 
|   | 
|   args.splice(lastC, 0, c); | 
|   return args; | 
| } | 
|   | 
| /** | 
|  * Invokes `console.log()` when available. | 
|  * No-op when `console.log` is not a "function". | 
|  * | 
|  * @api public | 
|  */ | 
|   | 
| function log() { | 
|   // this hackery is required for IE8/9, where | 
|   // the `console.log` function doesn't have 'apply' | 
|   return 'object' === typeof console | 
|     && console.log | 
|     && Function.prototype.apply.call(console.log, console, arguments); | 
| } | 
|   | 
| /** | 
|  * Save `namespaces`. | 
|  * | 
|  * @param {String} namespaces | 
|  * @api private | 
|  */ | 
|   | 
| function save(namespaces) { | 
|   try { | 
|     if (null == namespaces) { | 
|       exports.storage.removeItem('debug'); | 
|     } else { | 
|       exports.storage.debug = namespaces; | 
|     } | 
|   } catch(e) {} | 
| } | 
|   | 
| /** | 
|  * Load `namespaces`. | 
|  * | 
|  * @return {String} returns the previously persisted debug modes | 
|  * @api private | 
|  */ | 
|   | 
| function load() { | 
|   var r; | 
|   try { | 
|     r = exports.storage.debug; | 
|   } catch(e) {} | 
|   return r; | 
| } | 
|   | 
| /** | 
|  * Enable namespaces listed in `localStorage.debug` initially. | 
|  */ | 
|   | 
| exports.enable(load()); | 
|   | 
| /** | 
|  * Localstorage attempts to return the localstorage. | 
|  * | 
|  * This is necessary because safari throws | 
|  * when a user disables cookies/localstorage | 
|  * and you attempt to access it. | 
|  * | 
|  * @return {LocalStorage} | 
|  * @api private | 
|  */ | 
|   | 
| function localstorage(){ | 
|   try { | 
|     return window.localStorage; | 
|   } catch (e) {} | 
| } | 
|   | 
| },{"./debug":3}],3:[function(require,module,exports){ | 
|   | 
| /** | 
|  * This is the common logic for both the Node.js and web browser | 
|  * implementations of `debug()`. | 
|  * | 
|  * Expose `debug()` as the module. | 
|  */ | 
|   | 
| exports = module.exports = debug; | 
| exports.coerce = coerce; | 
| exports.disable = disable; | 
| exports.enable = enable; | 
| exports.enabled = enabled; | 
| exports.humanize = require('ms'); | 
|   | 
| /** | 
|  * The currently active debug mode names, and names to skip. | 
|  */ | 
|   | 
| exports.names = []; | 
| exports.skips = []; | 
|   | 
| /** | 
|  * Map of special "%n" handling functions, for the debug "format" argument. | 
|  * | 
|  * Valid key names are a single, lowercased letter, i.e. "n". | 
|  */ | 
|   | 
| exports.formatters = {}; | 
|   | 
| /** | 
|  * Previously assigned color. | 
|  */ | 
|   | 
| var prevColor = 0; | 
|   | 
| /** | 
|  * Previous log timestamp. | 
|  */ | 
|   | 
| var prevTime; | 
|   | 
| /** | 
|  * Select a color. | 
|  * | 
|  * @return {Number} | 
|  * @api private | 
|  */ | 
|   | 
| function selectColor() { | 
|   return exports.colors[prevColor++ % exports.colors.length]; | 
| } | 
|   | 
| /** | 
|  * Create a debugger with the given `namespace`. | 
|  * | 
|  * @param {String} namespace | 
|  * @return {Function} | 
|  * @api public | 
|  */ | 
|   | 
| function debug(namespace) { | 
|   | 
|   // define the `disabled` version | 
|   function disabled() { | 
|   } | 
|   disabled.enabled = false; | 
|   | 
|   // define the `enabled` version | 
|   function enabled() { | 
|   | 
|     var self = enabled; | 
|   | 
|     // set `diff` timestamp | 
|     var curr = +new Date(); | 
|     var ms = curr - (prevTime || curr); | 
|     self.diff = ms; | 
|     self.prev = prevTime; | 
|     self.curr = curr; | 
|     prevTime = curr; | 
|   | 
|     // add the `color` if not set | 
|     if (null == self.useColors) self.useColors = exports.useColors(); | 
|     if (null == self.color && self.useColors) self.color = selectColor(); | 
|   | 
|     var args = Array.prototype.slice.call(arguments); | 
|   | 
|     args[0] = exports.coerce(args[0]); | 
|   | 
|     if ('string' !== typeof args[0]) { | 
|       // anything else let's inspect with %o | 
|       args = ['%o'].concat(args); | 
|     } | 
|   | 
|     // apply any `formatters` transformations | 
|     var index = 0; | 
|     args[0] = args[0].replace(/%([a-z%])/g, function(match, format) { | 
|       // if we encounter an escaped % then don't increase the array index | 
|       if (match === '%%') return match; | 
|       index++; | 
|       var formatter = exports.formatters[format]; | 
|       if ('function' === typeof formatter) { | 
|         var val = args[index]; | 
|         match = formatter.call(self, val); | 
|   | 
|         // now we need to remove `args[index]` since it's inlined in the `format` | 
|         args.splice(index, 1); | 
|         index--; | 
|       } | 
|       return match; | 
|     }); | 
|   | 
|     if ('function' === typeof exports.formatArgs) { | 
|       args = exports.formatArgs.apply(self, args); | 
|     } | 
|     var logFn = enabled.log || exports.log || console.log.bind(console); | 
|     logFn.apply(self, args); | 
|   } | 
|   enabled.enabled = true; | 
|   | 
|   var fn = exports.enabled(namespace) ? enabled : disabled; | 
|   | 
|   fn.namespace = namespace; | 
|   | 
|   return fn; | 
| } | 
|   | 
| /** | 
|  * Enables a debug mode by namespaces. This can include modes | 
|  * separated by a colon and wildcards. | 
|  * | 
|  * @param {String} namespaces | 
|  * @api public | 
|  */ | 
|   | 
| function enable(namespaces) { | 
|   exports.save(namespaces); | 
|   | 
|   var split = (namespaces || '').split(/[\s,]+/); | 
|   var len = split.length; | 
|   | 
|   for (var i = 0; i < len; i++) { | 
|     if (!split[i]) continue; // ignore empty strings | 
|     namespaces = split[i].replace(/\*/g, '.*?'); | 
|     if (namespaces[0] === '-') { | 
|       exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); | 
|     } else { | 
|       exports.names.push(new RegExp('^' + namespaces + '$')); | 
|     } | 
|   } | 
| } | 
|   | 
| /** | 
|  * Disable debug output. | 
|  * | 
|  * @api public | 
|  */ | 
|   | 
| function disable() { | 
|   exports.enable(''); | 
| } | 
|   | 
| /** | 
|  * Returns true if the given mode name is enabled, false otherwise. | 
|  * | 
|  * @param {String} name | 
|  * @return {Boolean} | 
|  * @api public | 
|  */ | 
|   | 
| function enabled(name) { | 
|   var i, len; | 
|   for (i = 0, len = exports.skips.length; i < len; i++) { | 
|     if (exports.skips[i].test(name)) { | 
|       return false; | 
|     } | 
|   } | 
|   for (i = 0, len = exports.names.length; i < len; i++) { | 
|     if (exports.names[i].test(name)) { | 
|       return true; | 
|     } | 
|   } | 
|   return false; | 
| } | 
|   | 
| /** | 
|  * Coerce `val`. | 
|  * | 
|  * @param {Mixed} val | 
|  * @return {Mixed} | 
|  * @api private | 
|  */ | 
|   | 
| function coerce(val) { | 
|   if (val instanceof Error) return val.stack || val.message; | 
|   return val; | 
| } | 
|   | 
| },{"ms":4}],4:[function(require,module,exports){ | 
| /** | 
|  * Helpers. | 
|  */ | 
|   | 
| var s = 1000; | 
| var m = s * 60; | 
| var h = m * 60; | 
| var d = h * 24; | 
| var y = d * 365.25; | 
|   | 
| /** | 
|  * Parse or format the given `val`. | 
|  * | 
|  * Options: | 
|  * | 
|  *  - `long` verbose formatting [false] | 
|  * | 
|  * @param {String|Number} val | 
|  * @param {Object} options | 
|  * @return {String|Number} | 
|  * @api public | 
|  */ | 
|   | 
| module.exports = function(val, options){ | 
|   options = options || {}; | 
|   if ('string' == typeof val) return parse(val); | 
|   return options.long | 
|     ? long(val) | 
|     : short(val); | 
| }; | 
|   | 
| /** | 
|  * Parse the given `str` and return milliseconds. | 
|  * | 
|  * @param {String} str | 
|  * @return {Number} | 
|  * @api private | 
|  */ | 
|   | 
| function parse(str) { | 
|   str = '' + str; | 
|   if (str.length > 10000) return; | 
|   var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str); | 
|   if (!match) return; | 
|   var n = parseFloat(match[1]); | 
|   var type = (match[2] || 'ms').toLowerCase(); | 
|   switch (type) { | 
|     case 'years': | 
|     case 'year': | 
|     case 'yrs': | 
|     case 'yr': | 
|     case 'y': | 
|       return n * y; | 
|     case 'days': | 
|     case 'day': | 
|     case 'd': | 
|       return n * d; | 
|     case 'hours': | 
|     case 'hour': | 
|     case 'hrs': | 
|     case 'hr': | 
|     case 'h': | 
|       return n * h; | 
|     case 'minutes': | 
|     case 'minute': | 
|     case 'mins': | 
|     case 'min': | 
|     case 'm': | 
|       return n * m; | 
|     case 'seconds': | 
|     case 'second': | 
|     case 'secs': | 
|     case 'sec': | 
|     case 's': | 
|       return n * s; | 
|     case 'milliseconds': | 
|     case 'millisecond': | 
|     case 'msecs': | 
|     case 'msec': | 
|     case 'ms': | 
|       return n; | 
|   } | 
| } | 
|   | 
| /** | 
|  * Short format for `ms`. | 
|  * | 
|  * @param {Number} ms | 
|  * @return {String} | 
|  * @api private | 
|  */ | 
|   | 
| function short(ms) { | 
|   if (ms >= d) return Math.round(ms / d) + 'd'; | 
|   if (ms >= h) return Math.round(ms / h) + 'h'; | 
|   if (ms >= m) return Math.round(ms / m) + 'm'; | 
|   if (ms >= s) return Math.round(ms / s) + 's'; | 
|   return ms + 'ms'; | 
| } | 
|   | 
| /** | 
|  * Long format for `ms`. | 
|  * | 
|  * @param {Number} ms | 
|  * @return {String} | 
|  * @api private | 
|  */ | 
|   | 
| function long(ms) { | 
|   return plural(ms, d, 'day') | 
|     || plural(ms, h, 'hour') | 
|     || plural(ms, m, 'minute') | 
|     || plural(ms, s, 'second') | 
|     || ms + ' ms'; | 
| } | 
|   | 
| /** | 
|  * Pluralization helper. | 
|  */ | 
|   | 
| function plural(ms, n, name) { | 
|   if (ms < n) return; | 
|   if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name; | 
|   return Math.ceil(ms / n) + ' ' + name + 's'; | 
| } | 
|   | 
| },{}]},{},[1]); |